diff --git a/compiler/Java_CodeGen.jrag b/compiler/Java_CodeGen.jrag
index e3bdc22e4ca0d77bf64adf27e118783112f84ef1..7b7aab4844f754cebdeac65f7ec8a9777b304ac8 100644
--- a/compiler/Java_CodeGen.jrag
+++ b/compiler/Java_CodeGen.jrag
@@ -9,6 +9,7 @@ aspect Java_CodeGenEnv {
public class Java_env {
public final int version; //labcomm version to generate code for
+ public final String verStr;
private int indent;
private int depth;
private Java_printer printer;
@@ -78,6 +79,7 @@ aspect Java_CodeGenEnv {
private Java_env(int version, int indent) {
this.version = version;
+ this.verStr = (version == 2006) ? "2006" : "";
this.indent = indent;
}
@@ -337,9 +339,9 @@ aspect Java_Class {
}
env.println("import java.io.IOException;");
- env.println("import se.lth.control.labcomm.LabCommType;");
- env.println("import se.lth.control.labcomm.LabCommEncoder;");
- env.println("import se.lth.control.labcomm.LabCommDecoder;");
+ env.println("import se.lth.control.labcomm"+env.verStr+".LabCommType;");
+ env.println("import se.lth.control.labcomm"+env.verStr+".LabCommEncoder;");
+ env.println("import se.lth.control.labcomm"+env.verStr+".LabCommDecoder;");
env.println();
env.println("public class " + getName() + " implements LabCommType {");
env.println();
@@ -377,11 +379,11 @@ aspect Java_Class {
}
env.println("import java.io.IOException;");
- env.println("import se.lth.control.labcomm.LabCommDecoder;");
- env.println("import se.lth.control.labcomm.LabCommDispatcher;");
- env.println("import se.lth.control.labcomm.LabCommEncoder;");
- env.println("import se.lth.control.labcomm.LabCommHandler;");
- env.println("import se.lth.control.labcomm.LabCommSample;");
+ env.println("import se.lth.control.labcomm"+env.verStr+".LabCommDecoder;");
+ env.println("import se.lth.control.labcomm"+env.verStr+".LabCommDispatcher;");
+ env.println("import se.lth.control.labcomm"+env.verStr+".LabCommEncoder;");
+ env.println("import se.lth.control.labcomm"+env.verStr+".LabCommHandler;");
+ env.println("import se.lth.control.labcomm"+env.verStr+".LabCommSample;");
env.println();
env.print("public class " + getName());
// if(getType().isUserType()) {
diff --git a/examples/simple/Decoder06.java b/examples/simple/Decoder06.java
new file mode 100644
index 0000000000000000000000000000000000000000..b6185d7b04e70d89080a79a4fcdacb7b1c8ee1e1
--- /dev/null
+++ b/examples/simple/Decoder06.java
@@ -0,0 +1,83 @@
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+
+import se.lth.control.labcomm2006.LabCommDecoderChannel;
+
+public class Decoder06
+ implements theTwoInts.Handler, anotherTwoInts.Handler, IntString.Handler, TwoArrays.Handler, TwoFixedArrays.Handler
+
+{
+
+ LabCommDecoderChannel decoder;
+
+ public Decoder06(InputStream in)
+ throws Exception
+ {
+ decoder = new LabCommDecoderChannel(in);
+ theTwoInts.register(decoder, this);
+ anotherTwoInts.register(decoder, this);
+ IntString.register(decoder, this);
+ TwoArrays.register(decoder, this);
+ TwoFixedArrays.register(decoder, this);
+
+ try {
+ System.out.println("Running decoder.");
+ decoder.run();
+ } catch (java.io.EOFException e) {
+ System.out.println("Decoder reached end of file.");
+ }
+ }
+
+ public void printTwoInts(TwoInts d) throws java.io.IOException {
+ System.out.println("a="+d.a+", b="+d.b);
+ }
+
+ public void handle_theTwoInts(TwoInts d) throws java.io.IOException {
+ System.out.print("Got theTwoInts: ");
+ printTwoInts(d);
+ }
+
+ public void handle_anotherTwoInts(TwoInts d) throws java.io.IOException {
+ System.out.print("Got anotherheTwoInts: ");
+ printTwoInts(d);
+ }
+
+ public void handle_IntString(IntString d) throws java.io.IOException {
+ System.out.println("Got IntString, x="+d.x+", s="+d.s);
+ }
+
+ public void handle_TwoArrays(TwoArrays d) throws java.io.IOException {
+ System.out.println("Got TwoArrays:");
+ for(int i=0; i<d.fixed.length; i++) {
+ System.out.print(d.fixed[i]+" ");
+ }
+ System.out.println();
+ for(int i=0; i<d.variable[0].length; i++) {
+ System.out.print(d.variable[0][i]+" ");
+ System.out.print(d.variable[1][i]+" ");
+ }
+ System.out.println();
+ }
+
+ public void handle_TwoFixedArrays(TwoFixedArrays d) throws java.io.IOException {
+ System.out.println("Got TwoFixedArrays:");
+ for(int i=0; i<d.a.length; i++) {
+ System.out.print(d.a[i]+" ");
+ }
+ System.out.println();
+ for(int i=0; i<d.b[0].length; i++) {
+ System.out.print(d.b[0][i]+" ");
+ System.out.print(d.b[1][i]+" ");
+ }
+ System.out.println();
+ }
+
+
+ public static void main(String[] arg) throws Exception {
+ Decoder06 example = new Decoder06(
+ new FileInputStream(new File(arg[0]))
+ );
+ }
+}
+
diff --git a/examples/simple/Encoder06.java b/examples/simple/Encoder06.java
new file mode 100644
index 0000000000000000000000000000000000000000..5d913d9fc98748c012717ea5f51d662562e39341
--- /dev/null
+++ b/examples/simple/Encoder06.java
@@ -0,0 +1,62 @@
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.OutputStream;
+
+import se.lth.control.labcomm2006.LabCommEncoderChannel;
+
+/**
+ * Simple encoder
+ */
+public class Encoder06
+{
+
+ LabCommEncoderChannel encoder;
+
+ public Encoder06(OutputStream out)
+ throws Exception
+ {
+ encoder = new LabCommEncoderChannel(out);
+ theTwoInts.register(encoder);
+ IntString.register(encoder);
+ TwoArrays.register(encoder);
+ }
+
+ public void doEncode() throws java.io.IOException {
+ TwoInts x = new TwoInts();
+ x.a = 17;
+ x.b = 42;
+
+ IntString y = new IntString();
+ y.x = 37;
+ y.s = "Testing, testing";
+
+ TwoArrays ta = new TwoArrays();
+ ta.fixed = new int[] {14, 25};
+// ta.variable = new int[][] {{1,2},{0x11,0x12},{0x21,0x22},{0x31,0x32}};
+ ta.variable = new int[][] {{1,2, 3, 4},{0x21,0x22,0x23,0x24}};
+
+ System.out.println("Encoding theTwoInts, a="+x.a+", b="+x.b);
+ theTwoInts.encode(encoder, x);
+
+ System.out.println("Encoding IntString, x="+y.x+", s="+y.s);
+ IntString.encode(encoder, y);
+
+ System.out.println("Encoding TwoArrays");
+ for(int i = 0; i < ta.variable.length; i++) {
+ for(int j=0; j < ta.variable[0].length; j++)
+ System.out.println(ta.variable[i][j]);
+ System.out.println("---");
+ }
+ TwoArrays.encode(encoder, ta);
+ }
+
+
+ public static void main(String[] arg) throws Exception {
+ FileOutputStream fos = new FileOutputStream(arg[0]);
+ Encoder06 example = new Encoder06(fos);
+ example.doEncode();
+ fos.close();
+ }
+
+}
+
diff --git a/examples/simple/compile.sh b/examples/simple/compile.sh
index 009d74794f427620ffb18a3e7f0b53a24f907472..94c3e67902aff8cbbdc3ca0e3e4435e2a92088df 100644
--- a/examples/simple/compile.sh
+++ b/examples/simple/compile.sh
@@ -3,7 +3,7 @@
mkdir -p gen
java -jar ../../compiler/labComm.jar --ver=2006 --java=gen --c=gen/simple.c --h=gen/simple.h --python=gen/simple.py simple.lc
-javac -cp ../../lib/java:. gen/*.java Encoder.java Decoder.java
+javac -cp ../../lib/java:. gen/*.java Encoder06.java Decoder06.java
# gcc -Wall -Werror -I. -I../../lib/c -L../../lib/c \
# -o example_encoder example_encoder.c gen/simple.c \
diff --git a/lib/java/se/lth/control/labcomm2006/LabCommEncoderChannel.java b/lib/java/se/lth/control/labcomm2006/LabCommEncoderChannel.java
index e0de18d11872002d08351c60c8ba9e1b333fc451..6cd8804240b57698a23dbc117ded34118dd1dadd 100644
--- a/lib/java/se/lth/control/labcomm2006/LabCommEncoderChannel.java
+++ b/lib/java/se/lth/control/labcomm2006/LabCommEncoderChannel.java
@@ -24,7 +24,7 @@ public class LabCommEncoderChannel implements LabCommEncoder {
}
public LabCommEncoderChannel(LabCommWriter writer) throws IOException {
- this(writer, true);
+ this(writer, false);
}
public LabCommEncoderChannel(OutputStream writer,
@@ -33,7 +33,7 @@ public class LabCommEncoderChannel implements LabCommEncoder {
}
public LabCommEncoderChannel(OutputStream writer) throws IOException {
- this(new WriterWrapper(writer), true);
+ this(new WriterWrapper(writer), false);
}
public void register(LabCommDispatcher dispatcher) throws IOException {