/** * Remove given mote type from simulation. * * @param type Mote type */ public void removeMoteType(MoteType type) { if (!moteTypes.contains(type)) { logger.fatal("Mote type is not registered: " + type); return; } /* Remove motes */ for (Mote m : getMotes()) { if (m.getType() == type) { removeMote(m); } } moteTypes.remove(type); this.setChanged(); this.notifyObservers(this); }
/** * Returns the current simulation config represented by XML elements. This config also includes * the current radio medium, all mote types and motes. * * @return Current simulation config */ public Collection<Element> getConfigXML() { ArrayList<Element> config = new ArrayList<Element>(); Element element; // Title element = new Element("title"); element.setText(title); config.add(element); // Delay time element = new Element("delaytime"); element.setText("" + getDelayTime()); config.add(element); // Random seed element = new Element("randomseed"); if (randomSeedGenerated) { element.setText("generated"); } else { element.setText(Long.toString(getRandomSeed())); } config.add(element); // Max mote startup delay element = new Element("motedelay_us"); element.setText(Long.toString(maxMoteStartupDelay)); config.add(element); // Radio Medium element = new Element("radiomedium"); element.setText(currentRadioMedium.getClass().getName()); Collection<Element> radioMediumXML = currentRadioMedium.getConfigXML(); if (radioMediumXML != null) { element.addContent(radioMediumXML); } config.add(element); /* Event central */ element = new Element("events"); element.addContent(eventCentral.getConfigXML()); config.add(element); // Mote types for (MoteType moteType : getMoteTypes()) { element = new Element("motetype"); element.setText(moteType.getClass().getName()); Collection<Element> moteTypeXML = moteType.getConfigXML(this); if (moteTypeXML != null) { element.addContent(moteTypeXML); } config.add(element); } // Motes for (Mote mote : motes) { element = new Element("mote"); Collection<Element> moteConfig = mote.getConfigXML(); if (moteConfig == null) { moteConfig = new ArrayList<Element>(); } /* Add mote type identifier */ Element typeIdentifier = new Element("motetype_identifier"); typeIdentifier.setText(mote.getType().getIdentifier()); moteConfig.add(typeIdentifier); element.addContent(moteConfig); config.add(element); } return config; }