nesC 编程中的参数化接口、属性及高级布线技术
1. 传统命名空间管理方法的问题
在管理命名空间时,有两种传统方法存在明显问题。
-方法一:组件不连接定时器,由应用程序解决:这种方式会给应用开发者带来巨大负担。例如,一个基于大量大型库构建的小型应用程序可能需要连接八个不同的定时器。而且,这种方法会导致系统组件缺乏独立性,存在未解决的依赖关系,需要应用开发者去处理。
-方法二:传递额外参数:乍一看比第一种方法好,但实际上存在更严重的问题。
- 很多情况下,标识符在编译时就已知,要求调用者将其作为运行时参数传递是不必要的,还可能引入错误。
- 它将标识符管理的责任推给了调用者。例如在定时器的使用中,调用者只关心有自己的定时器,而不关心具体是哪个定时器。但将标识符作为调用的一部分,会迫使模块了解并管理标识符名称。
- 最大的问题在于其他组件的回调。例如在定时器服务中,由于标识符是运行时参数,定时器服务只能将fired()事件广播给所有定时器,让它们自行检查标识符。
2. 参数化接口和配置
为了支持提供接口集合的抽象,nesC 引入了参数化接口。参数化接口本质上是一个接口数组,数组索引就是参数。
2.1 定时器示例:HilTimerMilliC
configuration HilTimerMilliC { provides interface Init ; provides inter