/* * Example showing how to reference and interact with surrounding * COOJA plugins from a test script. * The code looks up three common plugins and, if found, performs some * simple plugin-specific task. */ /* Started plugins are available from the GUI object */ TIMEOUT(60000); counter=0; plugins=0; timeout_function = function my_fun() { log.log("Script timed out.\n"); log.log(plugins + " plugins were referenced\n"); } while (counter<10) { counter++; GENERATE_MSG(1000, "wait"); YIELD_THEN_WAIT_UNTIL(msg.equals("wait")); /* Toggle Log Listener filter */ plugin = mote.getSimulation().getCooja().getStartedPlugin("org.contikios.cooja.plugins.LogListener"); if (plugin != null) { plugins++; log.log("LogListener: Setting filter: " + plugin.getFilter() + "\n"); if (plugin.getFilter() == null || !plugin.getFilter().equals("Contiki")) { plugin.setFilter("Contiki"); } else { plugin.setFilter("MAC"); } } GENERATE_MSG(1000, "wait"); YIELD_THEN_WAIT_UNTIL(msg.equals("wait")); /* Extract PowerTracker statistics */ plugin = mote.getSimulation().getCooja().getStartedPlugin("PowerTracker"); if (plugin != null) { plugins++; stats = plugin.radioStatistics(); if (stats.length() > 40) { /* Stripping */ stats = stats.substring(0, 40) + "..."; } log.log("PowerTracker: Extracted statistics:\n" + stats + "\n"); } else { log.log("No PowerTracker plugin\n"); } GENERATE_MSG(1000, "wait"); YIELD_THEN_WAIT_UNTIL(msg.equals("wait")); /* Select time in Radio Logger */ plugin = mote.getSimulation().getCooja().getStartedPlugin("org.contikios.cooja.plugins.RadioLogger"); if (plugin != null) { plugins++; log.log("RadioLogger: Showing logged radio packet at mid simulation\n"); plugin.trySelectTime(time/2); } }