组件(component)
发布时间:2012/4/2 14:30:32 访问次数:1042
任何一个nesC应用程序都是有一个或多个7332-LF 组件连接起来的,从而形成一个完整的可执行程序。在nesC中有两种类型的件,分别称为模块和配置。模块提供应用程序代码,实现一个或多个接口;配置则是用来将其他组件装配起来的组件,将各个组件所使用的接口与其他组件提供的接口连接在一起,这种行为称为连接( wiring)。每个nesC应用程序都由一个顶级配置所描述,其内容就是将该应用程序所用到的所有组件连接起来,形成一个有机整体。组件的语法定义如下:
nesC-file:
includes-listopt module
includes-listopt configuration
module:
module /dent/f/er specification module-implementation
configuration:
configuration identifier specification configuration-implementation
组件名由标识符(identifier)定义。该标识符是全局性的,且属于组件和接口类型命名空间。 一个组件可以有两种作用域:一个规范( specification)作用域,属于C的全局作用域;一个实现(implementation)作用域,属于规范作用域。
通过包含列表(includes-list),一个组件能可选择地包括C文件。
规范( specification)列出了该组件所提供或使用的规范元素(接口实例、命令或事件)。就如前面所述,一个组件必须实现它提供接口的命令和它使用的接口事件。
一般情况下,命令向下调用硬件组件,而事件向上调用应用组件。组件间的交互只能通过组件的规范元素来沟通。每种规范元素有一个名字(接口实例名、命令名或事件名)。这些名字属于每个组件特有的规范作用域的变量命名空间。规范( specification)的语法定义如下:
specification:
(uses-provides-list )
uses-provides-list:
uses-provides
uses-provides-list uses-provides
uses-provides:
uses specification-element-list
provides specification-element-list
specification-element-list:
specification-element
{specification-elements }
specification-elements:
specification-element
specification-elements specification-element
一个组件规范可以有多个uses和provides揩令。多个uses和provides指令的规范元素可以通过使用“{”和“)”符号在一个uses或provides命令中指定。例如,下面两个定义是等价的:
接口实例声明的完整语法是interface X as Y,这里可以明确地定义Y作为接口的名字。interface X是interface X as X的一个简写形式。如果接口参数(interface-parameters)被省略,那么interface X as Y声明了对应该组件的单一接口一个简单的接口实例。如果给出了接口参数(如interface SendMsg[uint8_t id]),那么这就是一个参数化的接口实例声明,对应该组件的多个接口中的一今(每个接口对应不同参数值,因为8位整数可以表示256个值,所以interface SendMsg[uint8_t id]中可以声明256个SendMsg类型的接口)。参数化接口的参数类型必须是整型(这里枚举类型是不允许的)。
任何一个nesC应用程序都是有一个或多个7332-LF 组件连接起来的,从而形成一个完整的可执行程序。在nesC中有两种类型的件,分别称为模块和配置。模块提供应用程序代码,实现一个或多个接口;配置则是用来将其他组件装配起来的组件,将各个组件所使用的接口与其他组件提供的接口连接在一起,这种行为称为连接( wiring)。每个nesC应用程序都由一个顶级配置所描述,其内容就是将该应用程序所用到的所有组件连接起来,形成一个有机整体。组件的语法定义如下:
nesC-file:
includes-listopt module
includes-listopt configuration
module:
module /dent/f/er specification module-implementation
configuration:
configuration identifier specification configuration-implementation
组件名由标识符(identifier)定义。该标识符是全局性的,且属于组件和接口类型命名空间。 一个组件可以有两种作用域:一个规范( specification)作用域,属于C的全局作用域;一个实现(implementation)作用域,属于规范作用域。
通过包含列表(includes-list),一个组件能可选择地包括C文件。
规范( specification)列出了该组件所提供或使用的规范元素(接口实例、命令或事件)。就如前面所述,一个组件必须实现它提供接口的命令和它使用的接口事件。
一般情况下,命令向下调用硬件组件,而事件向上调用应用组件。组件间的交互只能通过组件的规范元素来沟通。每种规范元素有一个名字(接口实例名、命令名或事件名)。这些名字属于每个组件特有的规范作用域的变量命名空间。规范( specification)的语法定义如下:
specification:
(uses-provides-list )
uses-provides-list:
uses-provides
uses-provides-list uses-provides
uses-provides:
uses specification-element-list
provides specification-element-list
specification-element-list:
specification-element
{specification-elements }
specification-elements:
specification-element
specification-elements specification-element
一个组件规范可以有多个uses和provides揩令。多个uses和provides指令的规范元素可以通过使用“{”和“)”符号在一个uses或provides命令中指定。例如,下面两个定义是等价的:
接口实例声明的完整语法是interface X as Y,这里可以明确地定义Y作为接口的名字。interface X是interface X as X的一个简写形式。如果接口参数(interface-parameters)被省略,那么interface X as Y声明了对应该组件的单一接口一个简单的接口实例。如果给出了接口参数(如interface SendMsg[uint8_t id]),那么这就是一个参数化的接口实例声明,对应该组件的多个接口中的一今(每个接口对应不同参数值,因为8位整数可以表示256个值,所以interface SendMsg[uint8_t id]中可以声明256个SendMsg类型的接口)。参数化接口的参数类型必须是整型(这里枚举类型是不允许的)。
上一篇:接口(Interface)
上一篇:模块(module)