1、它们描述一组接口供给者(指令)提供的函数和一组被接口的使用者(事件)实现的函数。4、组件通过接口彼此静态地相连。这增加运行时效率,而且允许更好的程序静态分析。,接口(interface),nesC 的接口有双向性:它们描述一个多功能的两组件(供给者和使用者)之间的交互渠道,即描述了两组件的调用关系。接口可以理解为函数原型的集合。,接口(interface),如何定义接口:接口放在一个单独的文件中*.nc接口的名称应与文件名对应例如interface1的接口则必须对应于文件名interface1.nc接口定义描述了一系列函数原型(command和event),接口(interface),Send
2、Msg.nc:interface SendMsg command result_t send(uint16_t address,uint8_t length,message_t*msg);event result_t sendDone(message_t*msg,result_t success);SendMsg 接口类型提供者必须实现发送指令,而使用者必须实现 sendDone 事件.,接口(interface),provides interface A1;/*提供接口*/uses interface A1;/*使用接口*/provides interface A1 as A2;/*接口别名
3、*/uses interface A1 as A2;,模块(module),模块是接口的实现者和使用者模块包含两部分内容:模块使用和提供的接口描述模块内部的实现代码模块名也必须与文件名同名,模块(module),例如:M1.ncmodule M1/*声明部分*/provides interface A1;uses interface B1;implementation/*实现部分,C代码*/command void A1.cmd1()call B1.cmd2();event void A1.event1().,组件(configuration、component),组件是一个完整的配置列表,组
4、件可以像模块一样使用外部的接口并且对外提供接口。也可以直译成配置(configuration)组件与模块一样包含两部分内容:组件使用和提供的接口描述组件内部的实现代码(配置列表)组件名也必须与文件名同名,组件(configuration、component),例如:C1.ncconfiguration C1provides interface A1;implementationcomponents M1;components M2;A1=M1.A1;M1.B1 M2.B1;components指令引出需要配置的组件。,组件(configuration、component),配置的方法:接口调用
5、:user to provider接口实现=:接口实现指定(相当于),组件(configuration、component),组件(configuration),使用模块,接口1,接口2,接口1,接口2,实现模块,也是组件,接口1,接口2,接口3,命令(command),是在接口中的一种函数,这种函数要求接口的提供者实现,而接口的使用者则会调用这种函数。形象的称为command,即为接口提供的可供调用的命令。语法结构类C语言,只是在最前面增加command关键字。,命令(command),command定义:interface A1command int cmd1(int arg);,命令(c
6、ommand),command实现:module M1provides interface A1;implementationcommand int A1.cmd1(int arg),命令(command),command使用:module M2uses interface A1;implementationint ret=call A1.cmd1(0 x11);调用command时一定要用call命令,否则编译会出错。,事件(event),也是在接口中的一种函数,这种函数要求接口的提供者调用,而接口的使用者则会实现这种函数。形象的称为event,即为接口使用者所实现的事件处理函数。语法结构类
7、C语言,只是在最前面增加event关键字。,事件(event),event定义:interface A1event void event1(int arg1,int arg2);可以拥有参数和返回值。,事件(event),event实现:implementationpost A1.event1(0 x1,0 x2);/*发出对应的事件,实际上类同于调用事件处理函数*/接口的提供者在发出事件时,必须使用关键字post,否则编译会出错,事件(event),event使用:implementationevent void A1.event1(int arg1,int arg2)接口使用者必须实现ev
8、ent的具体内容,如同事件处理函数一样。,任务(task),任务是TinyOS系统提供的一种特殊的机制,类同于线程。task一般为一个函数,无参数,无返回值。task可以在一般的TinyOS程序中发出,而task的执行是由TinyOS系统内核来实现的。并且task的执行是不影响调用者的,将会在发出task后的某一个时刻被调度运行,任务(task),task的特点:无参数、无返回值系统会按特定的顺序调度这些tasktask间不能抢占,但是可以被中断所抢占在task未执行时,发出多少个task,都将只运行一次这个task系统执行完一个task后才会去执行其它task,所以task一般要求短小,不至于影响其它task,任务(task),task的定义:一般也是放在module中的module M1implementationtask void task1()void f1()post task1();,
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1