Мне было трудно сигнализировать о событии в nesC. Кто-нибудь может помочь? (EDIT: я пропустил компоненты MainC в приведенном ниже коде).
Я определил простой интерфейс:
interface MyInterface {
command uint8_t action();
event void actionDone();
}
Он имеет одно действие и одно событие.
Более того, у меня есть один компонент, который предоставляет MyInterface:
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
Где я сделал ошибку? Как правильно соединить компоненты?