首页 理论教育 组件定义及命名规范

组件定义及命名规范

时间:2023-06-28 理论教育 版权反馈
【摘要】:例如,文件LedC.nc包含组件LedsC的nesC代码,而组件PowerupC的nesC代码包含在文件PowerupC.nc中。组件名字位于全局范围,也就是说,每个组件只有一个定义,相应的,nesC编译器只加载一个名字为LedsC.nc的文件。无论模块还是配件,其定义都包括两个组成部分:规范与实现,如上所示。组件名字后加上“.nc”的扩展名即是存放该组件的源文件名字。C代表“Common”,即共有的,表明该组件是可以被其他组件自由使用的。模块与配件的实现分别在3.4节与3.5节中着重介绍。

组件定义及命名规范

每个组件都有自己的源文件,组件与其源文件名字之间是一一映射的。例如,文件LedC.nc包含组件LedsC的nesC代码,而组件PowerupC的nesC代码包含在文件PowerupC.nc中。组件名字位于全局范围,也就是说,每个组件只有一个定义,相应的,nesC编译器只加载一个名字为LedsC.nc的文件。

组件分为配件和模块两类。

无论模块还是配件,其定义都包括两个组成部分:规范与实现,如上所示。模块使用关键字module来声明。配件使用关键字configuration来声明。关键字module或configuration后面跟着模块或配件的名字。组件名字后加上“.nc”的扩展名即是存放该组件的源文件名字。组件名后面大括号中的语句描述了该组件的规范。关键字implementation后面大括号中的语句是该组件的实现代码。

TinyOS代码有一个非强制性的编码约定:组件名字皆以C或P结尾。C代表“Common”,即共有的,表明该组件是可以被其他组件自由使用的。P代表“Private”,即私有的,表明在该组件所在目录之外的组件不能使用它,但一般会在所在目录下有一个以C结尾的组件来封装它,以便其他组件使用。例如,对于组件LedsC,任意组件都可以使用它;相对的,其组件LedsP只有与同目录下的文件才能使用它。LedsP被LedsC封装后,便可以供所有其他组件使用。(www.xing528.com)

模块和配件的规范部分具有相同的语法,可以声明一个或多个接口,也可以为空(不声明接口)。模块与配件的主要区别在于实现部分。模块实现部分由类似C的nesC代码组成。模块代码包括声明变量和函数以及调用函数等。配件实现部分由nesC连接(wiring)代码组成。这些连接代码将组件组织起来。这是一种新的编程模式,也使得配件成为nesC与C的主要区别。将模块和配件区别开来的主要原因在于允许用户在系统现有实现代码基础上构建自己的应用程序。比如,通过配件把一个或多个组件封装起来,其中没有一个是自己设计的。其他开发者也可提供一组新的组件库,供应用程序开发者使用。读者将在nesC编程实践的过程中逐渐理解这一点。

模块与配件的实现分别在3.4节与3.5节中着重介绍。本节主要介绍组件的规范部分。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈