added possibility to override the default netstack in contiki-conf.h at compile time, by specifying another header

This commit is contained in:
fros4943 2010-03-10 07:51:30 +00:00
parent 70dd5454fc
commit 7c25544cdb

View File

@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE. * SUCH DAMAGE.
* *
* $Id: ContikiMoteCompileDialog.java,v 1.5 2010/03/09 08:11:18 fros4943 Exp $ * $Id: ContikiMoteCompileDialog.java,v 1.6 2010/03/10 07:51:30 fros4943 Exp $
*/ */
package se.sics.cooja.dialogs; package se.sics.cooja.dialogs;
@ -37,6 +37,8 @@ import java.awt.Container;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.io.File; import java.io.File;
import javax.swing.BorderFactory;
import javax.swing.Box; import javax.swing.Box;
import javax.swing.JButton; import javax.swing.JButton;
import javax.swing.JComboBox; import javax.swing.JComboBox;
@ -45,7 +47,10 @@ import javax.swing.JPanel;
import javax.swing.JScrollPane; import javax.swing.JScrollPane;
import javax.swing.JTabbedPane; import javax.swing.JTabbedPane;
import javax.swing.JTable; import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
@ -56,7 +61,7 @@ import se.sics.cooja.MoteType;
import se.sics.cooja.ProjectConfig; import se.sics.cooja.ProjectConfig;
import se.sics.cooja.Simulation; import se.sics.cooja.Simulation;
import se.sics.cooja.contikimote.ContikiMoteType; import se.sics.cooja.contikimote.ContikiMoteType;
import se.sics.cooja.contikimote.ContikiMoteType.CommunicationStack; import se.sics.cooja.contikimote.ContikiMoteType.NetworkStack;
/** /**
* Contiki Mote Type compile dialog. * Contiki Mote Type compile dialog.
@ -64,9 +69,10 @@ import se.sics.cooja.contikimote.ContikiMoteType.CommunicationStack;
* @author Fredrik Osterlind * @author Fredrik Osterlind
*/ */
public class ContikiMoteCompileDialog extends AbstractCompileDialog { public class ContikiMoteCompileDialog extends AbstractCompileDialog {
private static final long serialVersionUID = -2596048833554777606L;
private static Logger logger = Logger.getLogger(ContikiMoteCompileDialog.class); private static Logger logger = Logger.getLogger(ContikiMoteCompileDialog.class);
private JComboBox commStackComboBox = new JComboBox(CommunicationStack.values()); private JComboBox netStackComboBox = new JComboBox(NetworkStack.values());
public static boolean showDialog( public static boolean showDialog(
Container parent, Container parent,
@ -158,8 +164,7 @@ public class ContikiMoteCompileDialog extends AbstractCompileDialog {
source, source,
((ContikiMoteType)moteType).mapFile, ((ContikiMoteType)moteType).mapFile,
((ContikiMoteType)moteType).libFile, ((ContikiMoteType)moteType).libFile,
((ContikiMoteType)moteType).archiveFile, ((ContikiMoteType)moteType).archiveFile
((ContikiMoteType) moteType).getCommunicationStack()
); );
String[] envOneDimension = new String[env.length]; String[] envOneDimension = new String[env.length];
for (int i=0; i < env.length; i++) { for (int i=0; i < env.length; i++) {
@ -176,12 +181,10 @@ public class ContikiMoteCompileDialog extends AbstractCompileDialog {
} }
String defines = ""; String defines = "";
if (((ContikiMoteType) moteType).getCommunicationStack() == CommunicationStack.UIP) { if (((ContikiMoteType) moteType).getNetworkStack().getHeaderFile() != null) {
defines = " DEFINES=WITH_UIP=1"; defines = " DEFINES=NETSTACK_CONF_H=" + ((ContikiMoteType) moteType).getNetworkStack().getHeaderFile();
}
if (((ContikiMoteType) moteType).getCommunicationStack() == CommunicationStack.UIPV6) {
defines = " DEFINES=UIP_CONF_IPV6=1";
} }
return return
/*"make clean TARGET=cooja\n" + */ /*"make clean TARGET=cooja\n" + */
GUI.getExternalToolsSetting("PATH_MAKE") + " " + getExpectedFirmwareFile(source).getName() + " TARGET=cooja" + defines; GUI.getExternalToolsSetting("PATH_MAKE") + " " + getExpectedFirmwareFile(source).getName() + " TARGET=cooja" + defines;
@ -223,31 +226,59 @@ public class ContikiMoteCompileDialog extends AbstractCompileDialog {
symbolsCheckBox.setToolTipText("Not implemented");*/ symbolsCheckBox.setToolTipText("Not implemented");*/
/* Communication stack */ /* Communication stack */
/*JLabel label = new JLabel("Communication stack"); JLabel label = new JLabel("Default network stack header");
label.setPreferredSize(LABEL_DIMENSION); label.setPreferredSize(LABEL_DIMENSION);
commStackComboBox.setSelectedItem(((ContikiMoteType)moteType).getCommunicationStack()); final JTextField headerTextField = new JTextField();
commStackComboBox.setEnabled(true); headerTextField.setText(((ContikiMoteType)moteType).getNetworkStack().manualHeader);
commStackComboBox.setPreferredSize(LABEL_DIMENSION); headerTextField.getDocument().addDocumentListener(new DocumentListener() {
commStackComboBox.setMaximumSize(LABEL_DIMENSION); public void insertUpdate(DocumentEvent e) {
commStackComboBox.addActionListener(new ActionListener() { updateHeader();
}
public void removeUpdate(DocumentEvent e) {
updateHeader();
}
public void changedUpdate(DocumentEvent e) {
updateHeader();
}
private void updateHeader() {
((ContikiMoteType)moteType).getNetworkStack().manualHeader = headerTextField.getText();
}
});
final Box netStackHeaderBox = Box.createHorizontalBox();
netStackHeaderBox.setAlignmentX(Component.LEFT_ALIGNMENT);
netStackHeaderBox.add(label);
netStackHeaderBox.add(Box.createHorizontalStrut(20));
netStackHeaderBox.add(headerTextField);
label = new JLabel("Default network stack");
label.setPreferredSize(LABEL_DIMENSION);
netStackComboBox.setSelectedItem(((ContikiMoteType)moteType).getNetworkStack());
netStackComboBox.setEnabled(true);
netStackComboBox.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
((ContikiMoteType)moteType).setCommunicationStack( ((ContikiMoteType)moteType).setNetworkStack((NetworkStack)netStackComboBox.getSelectedItem());
(CommunicationStack)commStackComboBox.getSelectedItem()); netStackHeaderBox.setVisible((NetworkStack)netStackComboBox.getSelectedItem() == NetworkStack.MANUAL);
setDialogState(DialogState.SELECTED_SOURCE); setDialogState(DialogState.SELECTED_SOURCE);
} }
}); });
Box commStackBox = Box.createHorizontalBox(); Box netStackBox = Box.createHorizontalBox();
commStackBox.setAlignmentX(Component.LEFT_ALIGNMENT); netStackBox.setAlignmentX(Component.LEFT_ALIGNMENT);
commStackBox.add(label); netStackBox.add(label);
commStackBox.add(Box.createHorizontalGlue()); netStackBox.add(Box.createHorizontalStrut(20));
commStackBox.add(commStackComboBox);*/ netStackBox.add(netStackComboBox);
netStackHeaderBox.setVisible((NetworkStack)netStackComboBox.getSelectedItem() == NetworkStack.MANUAL);
/* Advanced tab */ /* Advanced tab */
Box box = Box.createVerticalBox(); Box box = Box.createVerticalBox();
box.setBorder(BorderFactory.createEmptyBorder(5, 10, 5, 10));
/*box.add(symbolsCheckBox);*/ /*box.add(symbolsCheckBox);*/
/*box.add(commStackBox);*/ box.add(netStackBox);
box.add(netStackHeaderBox);
box.add(Box.createVerticalGlue()); box.add(Box.createVerticalGlue());
parent.addTab("Advanced", null, new JScrollPane(box), "Advanced Contiki Mote Type settings"); JPanel container = new JPanel(new BorderLayout());
container.add(BorderLayout.NORTH, box);
parent.addTab("Advanced", null, new JScrollPane(container), "Advanced Contiki Mote Type settings");
} }
private void createEnvironmentTab(JTabbedPane parent, Object[][] env) { private void createEnvironmentTab(JTabbedPane parent, Object[][] env) {