diff --git a/tools/cooja/java/se/sics/cooja/dialogs/CompileContiki.java b/tools/cooja/java/se/sics/cooja/dialogs/CompileContiki.java index 4e6408f46..6aef14195 100644 --- a/tools/cooja/java/se/sics/cooja/dialogs/CompileContiki.java +++ b/tools/cooja/java/se/sics/cooja/dialogs/CompileContiki.java @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: CompileContiki.java,v 1.3 2009/03/21 16:44:29 fros4943 Exp $ + * $Id: CompileContiki.java,v 1.4 2009/04/01 14:00:00 fros4943 Exp $ */ package se.sics.cooja.dialogs; @@ -49,6 +49,7 @@ import org.apache.log4j.Logger; import se.sics.cooja.GUI; import se.sics.cooja.MoteType.MoteTypeCreationException; import se.sics.cooja.contikimote.ContikiMoteType; +import se.sics.cooja.contikimote.ContikiMoteType.CommunicationStack; import se.sics.cooja.dialogs.MessageList; /** @@ -376,7 +377,8 @@ public class CompileContiki { File contikiApp, File mapFile, File libFile, - File archiveFile) + File archiveFile, + CommunicationStack commStack) throws Exception { if (identifier == null) { @@ -438,10 +440,14 @@ public class CompileContiki { ccFlags = ccFlags.replace("$(JAVA_HOME)", javaHome); /* Strip away contiki application .c extension */ + String commStackFiles = ""; + if (commStack != null) { + commStackFiles = commStack.getSourceFilenamesString(); + } String contikiAppNoExtension = contikiApp.getName().substring(0, contikiApp.getName().length()-2); env[0] = new String[] { "LIBNAME", identifier }; env[1] = new String[] { "CONTIKI_APP", contikiAppNoExtension }; - env[2] = new String[] { "COOJA_SOURCEFILES", "cooja-radio.c init-net-rime.c" }; + env[2] = new String[] { "COOJA_SOURCEFILES", commStackFiles }; env[3] = new String[] { "CC", GUI.getExternalToolsSetting("PATH_C_COMPILER") }; env[4] = new String[] { "EXTRA_CC_ARGS", ccFlags }; env[5] = new String[] { "LD", GUI.getExternalToolsSetting("PATH_LINKER") }; diff --git a/tools/cooja/java/se/sics/cooja/dialogs/ConfigurationWizard.java b/tools/cooja/java/se/sics/cooja/dialogs/ConfigurationWizard.java index 17edccdfd..796aaa88c 100644 --- a/tools/cooja/java/se/sics/cooja/dialogs/ConfigurationWizard.java +++ b/tools/cooja/java/se/sics/cooja/dialogs/ConfigurationWizard.java @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: ConfigurationWizard.java,v 1.2 2009/03/11 08:44:32 fros4943 Exp $ + * $Id: ConfigurationWizard.java,v 1.3 2009/04/01 14:00:40 fros4943 Exp $ */ package se.sics.cooja.dialogs; @@ -56,6 +56,7 @@ import se.sics.cooja.GUI; import se.sics.cooja.SectionMoteMemory; import se.sics.cooja.MoteType.MoteTypeCreationException; import se.sics.cooja.contikimote.ContikiMoteType; +import se.sics.cooja.contikimote.ContikiMoteType.CommunicationStack; public class ConfigurationWizard extends JDialog { private static final long serialVersionUID = 1L; @@ -573,7 +574,8 @@ public class ConfigurationWizard extends JDialog { new File(cLibraryName + ".c"), new File(cLibraryName + ContikiMoteType.mapSuffix), new File(cLibraryName + ContikiMoteType.librarySuffix), - new File(cLibraryName + ContikiMoteType.dependSuffix) + new File(cLibraryName + ContikiMoteType.dependSuffix), + CommunicationStack.RIME ); } catch (Exception e) { testOutput.addMessage("### Error: Compiler environment failed", MessageList.ERROR); diff --git a/tools/cooja/java/se/sics/cooja/dialogs/ContikiMoteCompileDialog.java b/tools/cooja/java/se/sics/cooja/dialogs/ContikiMoteCompileDialog.java index 85ed92d35..003088f61 100644 --- a/tools/cooja/java/se/sics/cooja/dialogs/ContikiMoteCompileDialog.java +++ b/tools/cooja/java/se/sics/cooja/dialogs/ContikiMoteCompileDialog.java @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: ContikiMoteCompileDialog.java,v 1.2 2009/03/11 18:18:57 fros4943 Exp $ + * $Id: ContikiMoteCompileDialog.java,v 1.3 2009/04/01 14:00:30 fros4943 Exp $ */ package se.sics.cooja.dialogs; @@ -39,7 +39,6 @@ import java.awt.event.ActionListener; import java.io.File; import javax.swing.Box; import javax.swing.JButton; -import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JPanel; @@ -67,6 +66,8 @@ import se.sics.cooja.contikimote.ContikiMoteType.CommunicationStack; public class ContikiMoteCompileDialog extends AbstractCompileDialog { private static Logger logger = Logger.getLogger(ContikiMoteCompileDialog.class); + private JComboBox commStackComboBox = new JComboBox(CommunicationStack.values()); + public static boolean showDialog( Container parent, Simulation simulation, @@ -94,7 +95,7 @@ public class ContikiMoteCompileDialog extends AbstractCompileDialog { /* Add Contiki mote type specifics */ addMoteInterfaceClasses(); - /* TODO addAdvancedTab(tabbedPane);*/ + addAdvancedTab(tabbedPane); } public boolean canLoadFirmware(File file) { @@ -157,24 +158,33 @@ public class ContikiMoteCompileDialog extends AbstractCompileDialog { source, ((ContikiMoteType)moteType).mapFile, ((ContikiMoteType)moteType).libFile, - ((ContikiMoteType)moteType).archiveFile + ((ContikiMoteType)moteType).archiveFile, + ((ContikiMoteType) moteType).getCommunicationStack() ); + String[] envOneDimension = new String[env.length]; + for (int i=0; i < env.length; i++) { + envOneDimension[i] = env[i][0] + "=" + env[i][1]; + } + createEnvironmentTab(tabbedPane, env); + + /* Prepare compiler with environment variables */ + this.compilationEnvironment = envOneDimension; } catch (Exception e) { logger.warn("Error when creating environment: " + e.getMessage()); e.printStackTrace(); + env = null; } - String[] envOneDimension = new String[env.length]; - for (int i=0; i < env.length; i++) { - envOneDimension[i] = env[i][0] + "=" + env[i][1]; + + String defines = ""; + if (((ContikiMoteType) moteType).getCommunicationStack() == CommunicationStack.UIP) { + defines = " DEFINES=WITH_UIP=1"; + } + if (((ContikiMoteType) moteType).getCommunicationStack() == CommunicationStack.UIPV6) { + defines = " DEFINES=UIP_CONF_IPV6=1"; } - createEnvironmentTab(tabbedPane, env); - - /* Prepare compiler with environment variables */ - this.compilationEnvironment = envOneDimension; - return /*"make clean TARGET=cooja\n" + */ - "make " + getExpectedFirmwareFile(source).getName() + " TARGET=cooja"; + "make " + getExpectedFirmwareFile(source).getName() + " TARGET=cooja" + defines; } public File getExpectedFirmwareFile(File source) { @@ -207,20 +217,25 @@ public class ContikiMoteCompileDialog extends AbstractCompileDialog { private void addAdvancedTab(JTabbedPane parent) { /* TODO System symbols */ - JCheckBox symbolsCheckBox = new JCheckBox("With system symbols", false); + /*JCheckBox symbolsCheckBox = new JCheckBox("With system symbols", false); symbolsCheckBox.setAlignmentX(Component.LEFT_ALIGNMENT); symbolsCheckBox.setEnabled(false); - symbolsCheckBox.setToolTipText("Not implemented"); + symbolsCheckBox.setToolTipText("Not implemented");*/ - /* TODO Communication stack */ + /* Communication stack */ JLabel label = new JLabel("Communication stack"); label.setPreferredSize(LABEL_DIMENSION); - JComboBox commStackComboBox = new JComboBox(CommunicationStack.values()); - commStackComboBox.setSelectedIndex(0); + commStackComboBox.setSelectedItem(((ContikiMoteType)moteType).getCommunicationStack()); commStackComboBox.setEnabled(true); commStackComboBox.setPreferredSize(LABEL_DIMENSION); commStackComboBox.setMaximumSize(LABEL_DIMENSION); - commStackComboBox.setToolTipText("Not implemented"); + commStackComboBox.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + ((ContikiMoteType)moteType).setCommunicationStack( + (CommunicationStack)commStackComboBox.getSelectedItem()); + setDialogState(DialogState.SELECTED_SOURCE); + } + }); Box commStackBox = Box.createHorizontalBox(); commStackBox.setAlignmentX(Component.LEFT_ALIGNMENT); commStackBox.add(label); @@ -229,7 +244,7 @@ public class ContikiMoteCompileDialog extends AbstractCompileDialog { /* Advanced tab */ Box box = Box.createVerticalBox(); - box.add(symbolsCheckBox); + /*box.add(symbolsCheckBox);*/ box.add(commStackBox); box.add(Box.createVerticalGlue()); parent.addTab("Advanced", null, new JScrollPane(box), "Advanced Contiki Mote Type settings"); @@ -291,9 +306,6 @@ public class ContikiMoteCompileDialog extends AbstractCompileDialog { /* TODO System symbols */ ((ContikiMoteType)moteType).setHasSystemSymbols(false); - - /* TODO Communication stack */ - ((ContikiMoteType)moteType).setCommunicationStack(ContikiMoteType.CommunicationStack.RIME); } public void compileContiki()