added generate_message macro to contiki scripts
This commit is contained in:
parent
30e6d4943a
commit
424985c5f8
@ -26,7 +26,7 @@
|
|||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* $Id: LogScriptEngine.java,v 1.7 2009/01/08 16:33:14 fros4943 Exp $
|
* $Id: LogScriptEngine.java,v 1.8 2009/01/12 10:45:40 fros4943 Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package se.sics.cooja.plugins;
|
package se.sics.cooja.plugins;
|
||||||
@ -86,6 +86,7 @@ public class LogScriptEngine {
|
|||||||
public void log(String log);
|
public void log(String log);
|
||||||
public void testOK();
|
public void testOK();
|
||||||
public void testFailed();
|
public void testFailed();
|
||||||
|
public void generateMessage(long delay, String msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void stepScript() {
|
private void stepScript() {
|
||||||
@ -150,6 +151,7 @@ public class LogScriptEngine {
|
|||||||
engine.put("mote", mote);
|
engine.put("mote", mote);
|
||||||
engine.put("id", mote.getInterfaces().getMoteID().getMoteID());
|
engine.put("id", mote.getInterfaces().getMoteID().getMoteID());
|
||||||
engine.put("time", mote.getSimulation().getSimulationTime());
|
engine.put("time", mote.getSimulation().getSimulationTime());
|
||||||
|
engine.put("msg", mote.getInterfaces().getLog().getLastLogMessage());
|
||||||
|
|
||||||
stepScript();
|
stepScript();
|
||||||
|
|
||||||
@ -374,6 +376,10 @@ public class LogScriptEngine {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, gui.getSimulation().getSimulationTime());
|
}, gui.getSimulation().getSimulationTime());
|
||||||
|
|
||||||
|
if (timeoutEvent != null) {
|
||||||
|
timeoutEvent.remove();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
public void testFailed() {
|
public void testFailed() {
|
||||||
log("TEST FAILED\n");
|
log("TEST FAILED\n");
|
||||||
@ -399,6 +405,35 @@ public class LogScriptEngine {
|
|||||||
}
|
}
|
||||||
}, gui.getSimulation().getSimulationTime());
|
}, gui.getSimulation().getSimulationTime());
|
||||||
|
|
||||||
|
if (timeoutEvent != null) {
|
||||||
|
timeoutEvent.remove();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void generateMessage(long delay, final String msg) {
|
||||||
|
final Mote currentMote = (Mote) engine.get("mote");
|
||||||
|
|
||||||
|
TimeEvent generateEvent = new TimeEvent(0) {
|
||||||
|
public void execute(long t) {
|
||||||
|
if (scriptThread == null ||
|
||||||
|
!scriptThread.isAlive()) {
|
||||||
|
logger.info("script thread not alive. try deactivating script.");
|
||||||
|
/*scriptThread.isInterrupted()*/
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Update script variables */
|
||||||
|
engine.put("mote", currentMote);
|
||||||
|
engine.put("id", currentMote.getInterfaces().getMoteID().getMoteID());
|
||||||
|
engine.put("time", currentMote.getSimulation().getSimulationTime());
|
||||||
|
engine.put("msg", msg);
|
||||||
|
|
||||||
|
stepScript();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
gui.getSimulation().scheduleEvent(
|
||||||
|
generateEvent,
|
||||||
|
gui.getSimulation().getSimulationTime() + delay);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* $Id: ScriptParser.java,v 1.2 2009/01/08 17:47:37 fros4943 Exp $
|
* $Id: ScriptParser.java,v 1.3 2009/01/12 10:45:40 fros4943 Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package se.sics.cooja.plugins;
|
package se.sics.cooja.plugins;
|
||||||
@ -65,6 +65,8 @@ public class ScriptParser {
|
|||||||
|
|
||||||
code = replaceWaitUntils(code);
|
code = replaceWaitUntils(code);
|
||||||
|
|
||||||
|
code = replaceGenerateMessages(code);
|
||||||
|
|
||||||
this.code = code;
|
this.code = code;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -215,6 +217,28 @@ public class ScriptParser {
|
|||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String replaceGenerateMessages(String code) throws ScriptSyntaxErrorException {
|
||||||
|
Pattern pattern = Pattern.compile(
|
||||||
|
"GENERATE_MSG\\(" +
|
||||||
|
"([0-9]+)" /* timeout */ +
|
||||||
|
"[\\s]*,[\\s]*" +
|
||||||
|
"(.*)" /* code */ +
|
||||||
|
"\\)"
|
||||||
|
);
|
||||||
|
Matcher matcher = pattern.matcher(code);
|
||||||
|
|
||||||
|
while (matcher.find()) {
|
||||||
|
long time = Long.parseLong(matcher.group(1));
|
||||||
|
String msg = matcher.group(2);
|
||||||
|
|
||||||
|
code = matcher.replaceFirst(
|
||||||
|
"log.generateMessage(" + time + "," + msg + ")");
|
||||||
|
matcher.reset(code);
|
||||||
|
}
|
||||||
|
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
public String getJSCode() {
|
public String getJSCode() {
|
||||||
return
|
return
|
||||||
"function SCRIPT_KILL() { " +
|
"function SCRIPT_KILL() { " +
|
||||||
@ -236,7 +260,7 @@ public class ScriptParser {
|
|||||||
" SEMAPHORE_SCRIPT.acquire(); " /* SWITCH BLOCKS HERE! */ +
|
" SEMAPHORE_SCRIPT.acquire(); " /* SWITCH BLOCKS HERE! */ +
|
||||||
" if (SHUTDOWN) { SCRIPT_KILL(); } " +
|
" if (SHUTDOWN) { SCRIPT_KILL(); } " +
|
||||||
" if (TIMEOUT) { SCRIPT_TIMEOUT(); } " +
|
" if (TIMEOUT) { SCRIPT_TIMEOUT(); } " +
|
||||||
" msg = mote.getInterfaces().getLog().getLastLogMessage(); " +
|
" msg = new java.lang.String(msg); " +
|
||||||
" node.setMoteMsg(mote, msg); " +
|
" node.setMoteMsg(mote, msg); " +
|
||||||
"};\n" +
|
"};\n" +
|
||||||
"function run() { " +
|
"function run() { " +
|
||||||
@ -244,7 +268,7 @@ public class ScriptParser {
|
|||||||
"SEMAPHORE_SCRIPT.acquire(); " + /* STARTUP BLOCKS HERE! */
|
"SEMAPHORE_SCRIPT.acquire(); " + /* STARTUP BLOCKS HERE! */
|
||||||
"if (SHUTDOWN) { SCRIPT_KILL(); } " +
|
"if (SHUTDOWN) { SCRIPT_KILL(); } " +
|
||||||
"if (TIMEOUT) { SCRIPT_TIMEOUT(); } " +
|
"if (TIMEOUT) { SCRIPT_TIMEOUT(); } " +
|
||||||
"msg = mote.getInterfaces().getLog().getLastLogMessage(); " +
|
"msg = new java.lang.String(msg); " +
|
||||||
"node.setMoteMsg(mote, msg); " +
|
"node.setMoteMsg(mote, msg); " +
|
||||||
code + "\n" +
|
code + "\n" +
|
||||||
"while (true) { SCRIPT_SWITCH(); } " /* SCRIPT ENDED */+
|
"while (true) { SCRIPT_SWITCH(); } " /* SCRIPT ENDED */+
|
||||||
|
Loading…
Reference in New Issue
Block a user