updated contiki mote compiler tests to again reflect contiki-cooja-main.c and the updated ContikiMoteType

This commit is contained in:
Fredrik Osterlind 2012-03-09 14:58:23 +01:00
parent 97c7a55eea
commit b49d1892f2
2 changed files with 19 additions and 14 deletions

View File

@ -34,9 +34,12 @@
#include <stdint.h>
#include <string.h>
/* This is a stripped version of platform/cooja/contiki-cooja-main.c, used by
* Cooja's Contiki Mote Configuration Wizard */
const struct simInterface *simInterfaces[] = {NULL};
long ref_var; /* Placed somewhere in the BSS section */
long referenceVar; /* Placed somewhere in the BSS section */
/* Variables with known memory addresses */
int var1=1;
@ -60,8 +63,9 @@ Java_se_sics_cooja_corecomm_[CLASS_NAME]_getMemory(JNIEnv *env, jobject obj, jin
mem_arr,
0,
(size_t) length,
(jbyte *) (((long)rel_addr) + ref_var)
(jbyte *) (((long)rel_addr) + referenceVar)
);
}
/*---------------------------------------------------------------------------*/
JNIEXPORT void JNICALL
@ -69,7 +73,7 @@ Java_se_sics_cooja_corecomm_[CLASS_NAME]_setMemory(JNIEnv *env, jobject obj, jin
{
jbyte *mem = (*env)->GetByteArrayElements(env, mem_arr, 0);
memcpy(
(char*) (((long)rel_addr) + ref_var),
(char*) (((long)rel_addr) + referenceVar),
mem,
length);
(*env)->ReleaseByteArrayElements(env, mem_arr, mem, 0);
@ -85,5 +89,5 @@ Java_se_sics_cooja_corecomm_[CLASS_NAME]_tick(JNIEnv *env, jobject obj)
JNIEXPORT void JNICALL
Java_se_sics_cooja_corecomm_[CLASS_NAME]_setReferenceAddress(JNIEnv *env, jobject obj, jint addr)
{
ref_var = (((long)&ref_var) - ((long)addr));
referenceVar = (((long)&referenceVar) - ((long)addr));
}

View File

@ -50,7 +50,7 @@ import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintStream;
import java.lang.reflect.Constructor;
import java.util.Properties;
import java.util.HashMap;
import javax.swing.Box;
import javax.swing.BoxLayout;
@ -66,11 +66,12 @@ import javax.swing.JScrollPane;
import se.sics.cooja.CoreComm;
import se.sics.cooja.GUI;
import se.sics.cooja.SectionMoteMemory;
import se.sics.cooja.MoteType.MoteTypeCreationException;
import se.sics.cooja.SectionMoteMemory;
import se.sics.cooja.contikimote.ContikiMoteType;
/* TODO Test common section */
/* TODO Test readonly section */
public class ConfigurationWizard extends JDialog {
private static final long serialVersionUID = 1L;
@ -141,7 +142,7 @@ public class ConfigurationWizard extends JDialog {
private static File cLibraryFile;
private static String javaLibraryName;
private static CoreComm javaLibrary;
private static Properties addresses;
private static HashMap<String, Integer> addresses;
private static int relDataSectionAddr;
private static int dataSectionSize;
private static int relBssSectionAddr;
@ -195,7 +196,7 @@ public class ConfigurationWizard extends JDialog {
"Changes made in this wizard are reflected in menu Settings, External tools paths.\n" +
"\n" +
"NOTE: You do not need to complete this wizard for emulating motes, such as Sky motes.\n",
"Configuration Wizard",
"Contiki mote configuration wizard",
JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE,
null, options, options[0]);
@ -756,7 +757,7 @@ public class ConfigurationWizard extends JDialog {
}
testOutput.addMessage("### Parsing map file data for addresses");
addresses = new Properties();
addresses = new HashMap<String, Integer>();
boolean parseOK = ContikiMoteType.parseMapFileData(mapData, addresses);
if (!parseOK) {
testOutput.addMessage("### Error: Failed parsing map file data", MessageList.ERROR);
@ -836,7 +837,7 @@ public class ConfigurationWizard extends JDialog {
}
testOutput.addMessage("### Parsing command output for addresses");
addresses = new Properties();
addresses = new HashMap<String, Integer>();
boolean parseOK = ContikiMoteType.parseCommandData(commandData, addresses);
if (!parseOK) {
testOutput.addMessage("### Error: Failed parsing command output", MessageList.ERROR);
@ -930,11 +931,11 @@ public class ConfigurationWizard extends JDialog {
testOutput.addMessage("### Testing Contiki library memory replacement");
testOutput.addMessage("### Configuring Contiki using parsed reference address");
int relRefAddress = (Integer) addresses.get("ref_var");
if (!addresses.containsKey("ref_var")) {
testOutput.addMessage("Could not find address of ref_var", MessageList.ERROR);
if (!addresses.containsKey("referenceVar")) {
testOutput.addMessage("Could not find address of referenceVar", MessageList.ERROR);
return false;
}
int relRefAddress = (Integer) addresses.get("referenceVar");
javaLibrary.setReferenceAddress(relRefAddress);
testOutput.addMessage("### Creating data and BSS memory sections");
@ -942,7 +943,7 @@ public class ConfigurationWizard extends JDialog {
byte[] initialBssSection = new byte[bssSectionSize];
javaLibrary.getMemory(relDataSectionAddr, dataSectionSize, initialDataSection);
javaLibrary.getMemory(relBssSectionAddr, bssSectionSize, initialBssSection);
SectionMoteMemory memory = new SectionMoteMemory(addresses);
SectionMoteMemory memory = new SectionMoteMemory(addresses, 0);
memory.setMemorySegment(relDataSectionAddr, initialDataSection);
memory.setMemorySegment(relBssSectionAddr, initialBssSection);