From 9251692eed16c5ae041fa9cff68292c0d2edb0a7 Mon Sep 17 00:00:00 2001 From: Niclas Finne Date: Mon, 28 May 2012 17:59:30 +0200 Subject: [PATCH] Added Z1 platform --- tools/cooja/apps/mspsim/cooja.config | 2 +- .../src/se/sics/cooja/mspmote/Z1Mote.java | 69 ++++++++++++++ .../src/se/sics/cooja/mspmote/Z1MoteType.java | 92 +++++++++++++++++++ 3 files changed, 162 insertions(+), 1 deletion(-) create mode 100644 tools/cooja/apps/mspsim/src/se/sics/cooja/mspmote/Z1Mote.java create mode 100644 tools/cooja/apps/mspsim/src/se/sics/cooja/mspmote/Z1MoteType.java diff --git a/tools/cooja/apps/mspsim/cooja.config b/tools/cooja/apps/mspsim/cooja.config index f742a9895..f875a4c97 100644 --- a/tools/cooja/apps/mspsim/cooja.config +++ b/tools/cooja/apps/mspsim/cooja.config @@ -1,3 +1,3 @@ -se.sics.cooja.GUI.MOTETYPES = + se.sics.cooja.mspmote.ESBMoteType se.sics.cooja.mspmote.SkyMoteType se.sics.cooja.mspmote.WismoteMoteType se.sics.cooja.mspmote.Exp5438MoteType +se.sics.cooja.GUI.MOTETYPES = + se.sics.cooja.mspmote.ESBMoteType se.sics.cooja.mspmote.SkyMoteType se.sics.cooja.mspmote.Z1MoteType se.sics.cooja.mspmote.WismoteMoteType se.sics.cooja.mspmote.Exp5438MoteType se.sics.cooja.GUI.JARFILES = + cooja_mspsim.jar mspsim.jar coffee.jar jipv6.jar se.sics.cooja.GUI.PLUGINS = + se.sics.cooja.mspmote.plugins.MspCLI se.sics.cooja.mspmote.plugins.MspCodeWatcher se.sics.cooja.mspmote.plugins.MspStackWatcher se.sics.cooja.mspmote.plugins.MspCycleWatcher diff --git a/tools/cooja/apps/mspsim/src/se/sics/cooja/mspmote/Z1Mote.java b/tools/cooja/apps/mspsim/src/se/sics/cooja/mspmote/Z1Mote.java new file mode 100644 index 000000000..969d047c0 --- /dev/null +++ b/tools/cooja/apps/mspsim/src/se/sics/cooja/mspmote/Z1Mote.java @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2012, 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. + * + */ + +package se.sics.cooja.mspmote; +import java.io.File; +import org.apache.log4j.Logger; +import se.sics.cooja.Simulation; +import se.sics.cooja.mspmote.interfaces.CoojaM25P80; +import se.sics.mspsim.platform.z1.Z1Node; + +/** + * @author Fredrik Osterlind, Niclas Finne + */ +public class Z1Mote extends MspMote { + + private static Logger logger = Logger.getLogger(Z1Mote.class); + + public Z1Mote(MspMoteType moteType, Simulation sim) { + super(moteType, sim); + } + + @Override + protected boolean initEmulator(File fileELF) { + try { + Z1Node z1Node = new Z1Node(); + registry = z1Node.getRegistry(); + z1Node.setFlash(new CoojaM25P80(z1Node.getCPU())); + + prepareMote(fileELF, z1Node); + } catch (Exception e) { + logger.fatal("Error when creating Z1 mote: ", e); + return false; + } + return true; + } + + @Override + public String toString() { + return "Z1 " + getID(); + } + +} diff --git a/tools/cooja/apps/mspsim/src/se/sics/cooja/mspmote/Z1MoteType.java b/tools/cooja/apps/mspsim/src/se/sics/cooja/mspmote/Z1MoteType.java new file mode 100644 index 000000000..bd947f9e1 --- /dev/null +++ b/tools/cooja/apps/mspsim/src/se/sics/cooja/mspmote/Z1MoteType.java @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2012, 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. + * + */ + +package se.sics.cooja.mspmote; +import se.sics.cooja.AbstractionLevelDescription; +import se.sics.cooja.ClassDescription; +import se.sics.cooja.MoteInterface; +import se.sics.cooja.Simulation; +import se.sics.cooja.interfaces.IPAddress; +import se.sics.cooja.interfaces.Mote2MoteRelations; +import se.sics.cooja.interfaces.MoteAttributes; +import se.sics.cooja.interfaces.Position; +import se.sics.cooja.interfaces.RimeAddress; +import se.sics.cooja.mspmote.interfaces.Msp802154Radio; +import se.sics.cooja.mspmote.interfaces.MspClock; +import se.sics.cooja.mspmote.interfaces.MspDebugOutput; +import se.sics.cooja.mspmote.interfaces.MspLED; +import se.sics.cooja.mspmote.interfaces.MspMoteID; +import se.sics.cooja.mspmote.interfaces.UsciA0Serial; + +@ClassDescription("Z1 Mote Type") +@AbstractionLevelDescription("Emulated level") +public class Z1MoteType extends AbstractMspMoteType { + + @Override + public String getMoteType() { + return "z1"; + } + + @Override + public String getMoteName() { + return "Z1"; + } + + @Override + protected String getMoteImage() { + return "images/z1.jpg"; + } + + @Override + protected MspMote createMote(Simulation simulation) { + return new Z1Mote(this, simulation); + } + + @Override + public Class[] getAllMoteInterfaceClasses() { + @SuppressWarnings("unchecked") + Class[] list = createMoteInterfaceList( + Position.class, + RimeAddress.class, + IPAddress.class, + Mote2MoteRelations.class, + MoteAttributes.class, + MspClock.class, + MspMoteID.class, +// SkyFlash.class, + Msp802154Radio.class, + UsciA0Serial.class, + MspLED.class, + MspDebugOutput.class /* EXPERIMENTAL: Enable me for COOJA_DEBUG(..) */ + ); + return list; + } + +}