nesC でイベントを通知するのは難しいと思いました。誰でも助けることができますか?(編集: 以下のコードでは MainC コンポーネントを省略しました)。
簡単なインターフェースを定義しました:
interface MyInterface {
command uint8_t action();
event void actionDone();
}
1 つのアクションと 1 つのイベントがあります。
さらに、MyInterface を提供する 1 つのコンポーネントがあります。
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]();
}
}
イベントバーはまったく別のインターフェースです。このイベントでは、イベント actionDone を id == foo で通知したいと考えています。
「メイン」コンポーネントもあります:
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() {...}
}
しかし、コンパイル中にエラーが発生します。
MyInterface.actionDone not connected
どこで間違いを犯したのですか?コンポーネントを正しく接続するには?