首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与事件和命令的接口-无法发出事件信号

与事件和命令的接口-无法发出事件信号
EN

Stack Overflow用户
提问于 2013-03-12 05:28:52
回答 1查看 251关注 0票数 1

我发现很难在nesC中发出事件信号。有人能帮上忙吗?(编辑:我在下面的代码中省略了MainC组件)。

我定义了一个简单的接口:

代码语言:javascript
复制
interface MyInterface {
    command uint8_t action();
    event void actionDone();
}

它有一个动作和一个事件。

更重要的是,我有一个提供MyInterface的组件:

代码语言:javascript
复制
configuration MyComponentC {
    provides interface MyInterface[uint8_t id];
}
implementation {
    components MyComponentM;
    MyInterface = MyComponentM.MyInterface;
}


module MyComponentM {
    provides interface MyInterface[uint8_t id];
}
implementation {
    command uint8_t MyInterface.action[uint8_t id]() {...}
    ...
    event void bar() {
        signal MyInterface.actionDone[foo]();
    }
}

事件栏来自完全不同的界面。在这个事件中,我想用id == foo发信号通知事件actionDone。

我还有一个"main“组件:

代码语言:javascript
复制
configuration MyAppC {
}
implementation {
    components MyC as App;
    components MyComponentC as MC;
    App.MyInterface -> MC.MyInterface[unique("Hello")];
}

module MyC {
    uses interface MyInterface;
}
implementation {
    event void MyInterface.actionDone() {...}
}

但在编译过程中,我得到一个错误:

代码语言:javascript
复制
MyInterface.actionDone not connected

我哪里弄错了?如何正确连接组件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-12 06:07:10

不确定这是否是原因,但在您的应用程序中尝试通过别名引用MyC,例如,而不是

代码语言:javascript
复制
MyC.MyInterface -> MS.MyInterface[unique("Hello")];

试一试

代码语言:javascript
复制
App.MyInterface -> MS.MyInterface[unique("Hello")];

更新

正如在this link中所解释的,由于您使用的是参数化接口,并且不能保证所有256个实例都将连接到需要在MyComponentM模块中提供默认实现的东西

代码语言:javascript
复制
default event MyInterface.actionDone[foo]() {
    return;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15349012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档