From 15690694cb8ec917e4601bf2789aba1673d92f3a Mon Sep 17 00:00:00 2001 From: Niclas Finne Date: Tue, 22 May 2012 02:05:32 +0200 Subject: [PATCH] Added JCreate and Sentilla USB platforms --- .../se/sics/cooja/mspmote/JCreateMote.java | 82 ++++++++++++++++ .../sics/cooja/mspmote/JCreateMoteType.java | 93 +++++++++++++++++++ .../sics/cooja/mspmote/SentillaUSBMote.java | 83 +++++++++++++++++ .../cooja/mspmote/SentillaUSBMoteType.java | 92 ++++++++++++++++++ 4 files changed, 350 insertions(+) create mode 100644 tools/cooja/apps/mspsim/src/se/sics/cooja/mspmote/JCreateMote.java create mode 100644 tools/cooja/apps/mspsim/src/se/sics/cooja/mspmote/JCreateMoteType.java create mode 100644 tools/cooja/apps/mspsim/src/se/sics/cooja/mspmote/SentillaUSBMote.java create mode 100644 tools/cooja/apps/mspsim/src/se/sics/cooja/mspmote/SentillaUSBMoteType.java diff --git a/tools/cooja/apps/mspsim/src/se/sics/cooja/mspmote/JCreateMote.java b/tools/cooja/apps/mspsim/src/se/sics/cooja/mspmote/JCreateMote.java new file mode 100644 index 000000000..e8b090e81 --- /dev/null +++ b/tools/cooja/apps/mspsim/src/se/sics/cooja/mspmote/JCreateMote.java @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2010, 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.cooja.mspmote.interfaces.SkyCoffeeFilesystem; +import se.sics.mspsim.platform.jcreate.JCreateNode; + +/** + * @author Fredrik Osterlind, Niclas Finne + */ +public class JCreateMote extends MspMote { + + private static Logger logger = Logger.getLogger(JCreateMote.class); + + private JCreateNode mote; + + public JCreateMote() { + super(); + } + + public JCreateMote(MspMoteType moteType, Simulation sim) { + super(moteType, sim); + } + + protected boolean initEmulator(File fileELF) { + try { + mote = new JCreateNode(); + registry = mote.getRegistry(); + prepareMote(fileELF, mote); + mote.setFlash(new CoojaM25P80(mote.getCPU())); + } catch (Exception e) { + logger.fatal("Error when creating JCreate mote: ", e); + return false; + } + return true; + } + + public void idUpdated(int newID) { + mote.setNodeID(newID); + } + + public SkyCoffeeFilesystem getFilesystem() { + return getInterfaces().getInterfaceOfType(SkyCoffeeFilesystem.class); + } + + public String toString() { + return "JCreate " + getID(); + } + +} diff --git a/tools/cooja/apps/mspsim/src/se/sics/cooja/mspmote/JCreateMoteType.java b/tools/cooja/apps/mspsim/src/se/sics/cooja/mspmote/JCreateMoteType.java new file mode 100644 index 000000000..e7a683460 --- /dev/null +++ b/tools/cooja/apps/mspsim/src/se/sics/cooja/mspmote/JCreateMoteType.java @@ -0,0 +1,93 @@ +/* + * Copyright (c) 2010, 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.MspSerial; +import se.sics.cooja.mspmote.interfaces.SkyFlash; + +@ClassDescription("JCreate Mote Type") +@AbstractionLevelDescription("Emulated level") +public class JCreateMoteType extends AbstractMspMoteType { + + @Override + public String getMoteType() { + return "jcreate"; + } + + @Override + public String getMoteName() { + return "JCreate"; + } + + @Override + protected String getMoteImage() { + return "images/jcreate.jpg"; + } + + @Override + protected MspMote createMote(Simulation simulation) { + return new JCreateMote(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, + MspSerial.class, + MspLED.class, + MspDebugOutput.class /* EXPERIMENTAL: Enable me for COOJA_DEBUG(..) */ + ); + return list; + } + +} diff --git a/tools/cooja/apps/mspsim/src/se/sics/cooja/mspmote/SentillaUSBMote.java b/tools/cooja/apps/mspsim/src/se/sics/cooja/mspmote/SentillaUSBMote.java new file mode 100644 index 000000000..923f7b14f --- /dev/null +++ b/tools/cooja/apps/mspsim/src/se/sics/cooja/mspmote/SentillaUSBMote.java @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2010, 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.cooja.mspmote.interfaces.SkyCoffeeFilesystem; +import se.sics.mspsim.platform.sentillausb.SentillaUSBNode; + +/** + * @author Fredrik Osterlind, Niclas Finne + */ +public class SentillaUSBMote extends MspMote { + + private static Logger logger = Logger.getLogger(SentillaUSBMote.class); + + private SentillaUSBNode mote; + + public SentillaUSBMote() { + super(); + } + + public SentillaUSBMote(MspMoteType moteType, Simulation sim) { + super(moteType, sim); + } + + protected boolean initEmulator(File fileELF) { + try { + mote = new SentillaUSBNode(); + registry = mote.getRegistry(); + prepareMote(fileELF, mote); + mote.setFlash(new CoojaM25P80(mote.getCPU())); + } catch (Exception e) { + logger.fatal("Error when creating Sentilla USB mote: ", e); + return false; + } + return true; + } + + public void idUpdated(int newID) { + mote.setNodeID(newID); + } + + public SkyCoffeeFilesystem getFilesystem() { + return getInterfaces().getInterfaceOfType(SkyCoffeeFilesystem.class); + } + + public String toString() { + return "Sentilla USB " + getID(); + } + +} diff --git a/tools/cooja/apps/mspsim/src/se/sics/cooja/mspmote/SentillaUSBMoteType.java b/tools/cooja/apps/mspsim/src/se/sics/cooja/mspmote/SentillaUSBMoteType.java new file mode 100644 index 000000000..5ce424a81 --- /dev/null +++ b/tools/cooja/apps/mspsim/src/se/sics/cooja/mspmote/SentillaUSBMoteType.java @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2010, 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.MspSerial; +import se.sics.cooja.mspmote.interfaces.SkyFlash; + +@ClassDescription("Sentilla USB Mote Type") +@AbstractionLevelDescription("Emulated level") +public class SentillaUSBMoteType extends AbstractMspMoteType { + + @Override + public String getMoteType() { + return "sentilla-usb"; + } + + @Override + public String getMoteName() { + return "Sentilla USB"; + } + + @Override + protected String getMoteImage() { + return "images/sentilla-usb.jpg"; + } + + @Override + protected MspMote createMote(Simulation simulation) { + return new SentillaUSBMote(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, + MspSerial.class, + MspLED.class, + MspDebugOutput.class /* EXPERIMENTAL: Enable me for COOJA_DEBUG(..) */ + ); + return list; + } + +}