From c205280f30d88f0065f910ce23df1a49da981442 Mon Sep 17 00:00:00 2001 From: fros4943 Date: Sat, 21 Mar 2009 15:41:42 +0000 Subject: [PATCH] removing contiki log interface, instead only using the serial port interface --- tools/cooja/config/cooja_default.config | 2 +- .../cooja/contikimote/ContikiMoteType.java | 20 +- .../contikimote/interfaces/ContikiLog.java | 170 ----------------- .../contikimote/interfaces/ContikiRS232.java | 173 ++++-------------- .../interfaces/PolledAfterActiveTicks.java | 6 +- 5 files changed, 51 insertions(+), 320 deletions(-) delete mode 100644 tools/cooja/java/se/sics/cooja/contikimote/interfaces/ContikiLog.java diff --git a/tools/cooja/config/cooja_default.config b/tools/cooja/config/cooja_default.config index c9eb798a2..ef177ccf7 100644 --- a/tools/cooja/config/cooja_default.config +++ b/tools/cooja/config/cooja_default.config @@ -28,7 +28,7 @@ se.sics.cooja.contikimote.interfaces.ContikiVib.EXTERNAL_INTERRUPT_bool = true se.sics.cooja.contikimote.interfaces.ContikiCFS.CONSUMPTION_PER_WRITTEN_CHAR_mQ = 2 se.sics.cooja.contikimote.interfaces.ContikiCFS.CONSUMPTION_PER_READ_CHAR_mQ = 1 -se.sics.cooja.contikimote.ContikiMoteType.MOTE_INTERFACES = se.sics.cooja.interfaces.Position se.sics.cooja.interfaces.Battery se.sics.cooja.contikimote.interfaces.ContikiVib se.sics.cooja.contikimote.interfaces.ContikiMoteID se.sics.cooja.contikimote.interfaces.ContikiRS232 se.sics.cooja.contikimote.interfaces.ContikiBeeper se.sics.cooja.contikimote.interfaces.ContikiIPAddress se.sics.cooja.contikimote.interfaces.ContikiRadio se.sics.cooja.contikimote.interfaces.ContikiButton se.sics.cooja.contikimote.interfaces.ContikiPIR se.sics.cooja.contikimote.interfaces.ContikiClock se.sics.cooja.contikimote.interfaces.ContikiLED se.sics.cooja.contikimote.interfaces.ContikiLog se.sics.cooja.contikimote.interfaces.ContikiCFS se.sics.cooja.interfaces.Mote2MoteRelations +se.sics.cooja.contikimote.ContikiMoteType.MOTE_INTERFACES = se.sics.cooja.interfaces.Position se.sics.cooja.interfaces.Battery se.sics.cooja.contikimote.interfaces.ContikiVib se.sics.cooja.contikimote.interfaces.ContikiMoteID se.sics.cooja.contikimote.interfaces.ContikiRS232 se.sics.cooja.contikimote.interfaces.ContikiBeeper se.sics.cooja.contikimote.interfaces.ContikiIPAddress se.sics.cooja.contikimote.interfaces.ContikiRadio se.sics.cooja.contikimote.interfaces.ContikiButton se.sics.cooja.contikimote.interfaces.ContikiPIR se.sics.cooja.contikimote.interfaces.ContikiClock se.sics.cooja.contikimote.interfaces.ContikiLED se.sics.cooja.contikimote.interfaces.ContikiCFS se.sics.cooja.interfaces.Mote2MoteRelations se.sics.cooja.contikimote.ContikiMoteType.C_SOURCES = se.sics.cooja.GUI.MOTETYPES = se.sics.cooja.motes.DisturberMoteType se.sics.cooja.contikimote.ContikiMoteType se.sics.cooja.GUI.PLUGINS = se.sics.cooja.plugins.VisState se.sics.cooja.plugins.VisBattery se.sics.cooja.plugins.VisTraffic se.sics.cooja.plugins.LogListener se.sics.cooja.plugins.MoteInformation se.sics.cooja.plugins.MoteInterfaceViewer se.sics.cooja.plugins.VariableWatcher se.sics.cooja.plugins.EventListener se.sics.cooja.plugins.RadioLogger se.sics.cooja.plugins.ScriptRunner diff --git a/tools/cooja/java/se/sics/cooja/contikimote/ContikiMoteType.java b/tools/cooja/java/se/sics/cooja/contikimote/ContikiMoteType.java index 3198954d7..e03d41253 100644 --- a/tools/cooja/java/se/sics/cooja/contikimote/ContikiMoteType.java +++ b/tools/cooja/java/se/sics/cooja/contikimote/ContikiMoteType.java @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: ContikiMoteType.java,v 1.34 2009/03/12 18:25:45 nifi Exp $ + * $Id: ContikiMoteType.java,v 1.35 2009/03/21 15:41:42 fros4943 Exp $ */ package se.sics.cooja.contikimote; @@ -1309,14 +1309,18 @@ public class ContikiMoteType implements MoteType { } else if (name.equals("commstack")) { commStack = CommunicationStack.parse(element.getText()); } else if (name.equals("moteinterface")) { - Class moteInterfaceClass = - simulation.getGUI().tryLoadClass( - this, MoteInterface.class, element.getText().trim()); - - if (moteInterfaceClass == null) { - logger.warn("Can't find mote interface class: " + element.getText()); + if (element.getText().trim().equals("se.sics.cooja.contikimote.interfaces.ContikiLog")) { + /* Backwards compatibility: ContikiLog was removed */ } else { - moteInterfacesClasses.add(moteInterfaceClass); + Class moteInterfaceClass = + simulation.getGUI().tryLoadClass( + this, MoteInterface.class, element.getText().trim()); + + if (moteInterfaceClass == null) { + logger.warn("Can't find mote interface class: " + element.getText()); + } else { + moteInterfacesClasses.add(moteInterfaceClass); + } } } else if ( name.equals("contikibasedir") || diff --git a/tools/cooja/java/se/sics/cooja/contikimote/interfaces/ContikiLog.java b/tools/cooja/java/se/sics/cooja/contikimote/interfaces/ContikiLog.java deleted file mode 100644 index 47f3fc50c..000000000 --- a/tools/cooja/java/se/sics/cooja/contikimote/interfaces/ContikiLog.java +++ /dev/null @@ -1,170 +0,0 @@ -/* - * Copyright (c) 2008, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $Id: ContikiLog.java,v 1.8 2009/02/25 14:46:24 fros4943 Exp $ - */ - -package se.sics.cooja.contikimote.interfaces; - -import java.awt.*; -import java.util.*; -import javax.swing.*; -import org.apache.log4j.Logger; -import org.jdom.Element; - -import se.sics.cooja.*; -import se.sics.cooja.contikimote.ContikiMoteInterface; -import se.sics.cooja.interfaces.Log; -import se.sics.cooja.interfaces.PolledAfterActiveTicks; - -/** - * Log mote interface. Captures both log_message(,) and printf(..). - * - * Contiki variables: - * - *

- * - * Core interface: - *

- *

- * - * This observable notifies at new mote log output. - * - * @author Fredrik Osterlind - */ -public class ContikiLog extends Log implements ContikiMoteInterface, PolledAfterActiveTicks { - private static Logger logger = Logger.getLogger(ContikiLog.class); - private Mote mote = null; - private SectionMoteMemory moteMem = null; - - private String lastLogMessage = null; - - /** - * Creates an interface to mote's logging output. - * - * @param mote Log's mote. - * @see Mote - * @see se.sics.cooja.MoteInterfaceHandler - */ - public ContikiLog(Mote mote) { - this.mote = mote; - this.moteMem = (SectionMoteMemory) mote.getMemory(); - } - - public static String[] getCoreInterfaceDependencies() { - return new String[] { "simlog_interface" }; - } - - public void doActionsAfterTick() { - if (moteMem.getByteValueOf("simLoggedFlag") == 1) { - int totalLength = moteMem.getIntValueOf("simLoggedLength"); - byte[] bytes = moteMem.getByteArray("simLoggedData", totalLength); - char[] chars = new char[bytes.length]; - for (int i=0; i < chars.length; i++) { - chars[i] = (char) bytes[i]; - } - - moteMem.setByteValueOf("simLoggedFlag", (byte) 0); - moteMem.setIntValueOf("simLoggedLength", 0); - - String messages[] = String.valueOf(chars).split("\n"); - for (String message: messages) { - lastLogMessage = message; - - this.setChanged(); - this.notifyObservers(mote); - } - } - } - - public String getLastLogMessage() { - return lastLogMessage; - } - - public JPanel getInterfaceVisualizer() { - JPanel panel = new JPanel(); - panel.setLayout(new BorderLayout()); - final JTextArea logTextPane = new JTextArea(); - logTextPane.setOpaque(false); - logTextPane.setEditable(false); - - if (lastLogMessage == null) { - logTextPane.setText(""); - } else { - logTextPane.append(lastLogMessage + "\n"); - } - - Observer observer; - this.addObserver(observer = new Observer() { - public void update(Observable obs, Object obj) { - logTextPane.append(lastLogMessage + "\n"); - logTextPane.setCaretPosition(logTextPane.getDocument().getLength()); - } - }); - - // Saving observer reference for releaseInterfaceVisualizer - panel.putClientProperty("intf_obs", observer); - - JScrollPane scrollPane = new JScrollPane(logTextPane); - scrollPane.setPreferredSize(new Dimension(100,100)); - panel.add(BorderLayout.NORTH, new JLabel("Last log messages:")); - panel.add(BorderLayout.CENTER, scrollPane); - return panel; - } - - public void releaseInterfaceVisualizer(JPanel panel) { - Observer observer = (Observer) panel.getClientProperty("intf_obs"); - if (observer == null) { - logger.fatal("Error when releasing panel, observer is null"); - return; - } - - this.deleteObserver(observer); - } - - public double energyConsumption() { - // Does not require energy - return 0.0; - } - - public Collection getConfigXML() { - return null; - } - - public void setConfigXML(Collection configXML, boolean visAvailable) { - } - -} diff --git a/tools/cooja/java/se/sics/cooja/contikimote/interfaces/ContikiRS232.java b/tools/cooja/java/se/sics/cooja/contikimote/interfaces/ContikiRS232.java index d59920331..188b51623 100644 --- a/tools/cooja/java/se/sics/cooja/contikimote/interfaces/ContikiRS232.java +++ b/tools/cooja/java/se/sics/cooja/contikimote/interfaces/ContikiRS232.java @@ -26,28 +26,20 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: ContikiRS232.java,v 1.5 2008/10/28 12:55:20 fros4943 Exp $ + * $Id: ContikiRS232.java,v 1.6 2009/03/21 15:41:42 fros4943 Exp $ */ package se.sics.cooja.contikimote.interfaces; -import java.awt.BorderLayout; -import java.awt.Dimension; -import java.awt.event.*; -import java.util.*; -import javax.swing.*; import org.apache.log4j.Logger; -import org.jdom.Element; - import se.sics.cooja.*; import se.sics.cooja.contikimote.ContikiMoteInterface; +import se.sics.cooja.dialogs.SerialUI; import se.sics.cooja.interfaces.PolledAfterActiveTicks; /** - * Serial port mote interface. - * Only supports printable characters. - * Note that by default the serial interface is not equal to the log interface: - * printf(...) are not forwarded to this interface. + * Contiki mote serial port and log interfaces. + * Not fully implemented yet: does not support writeArray and writeByte * * Contiki variables: *