Commit 0558727c authored by René Schöne's avatar René Schöne
Browse files

Use JSON config for setup (both starter and receiver).

- Starter: Send initial DataConfig
- Starter: Always send complete RobotConfig
parent 59b01b5b
......@@ -7,6 +7,7 @@ import org.jastadd.ros2rag.scanner.Ros2RagScanner;
import java.io.BufferedReader;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
......@@ -17,34 +18,95 @@ import java.nio.file.Paths;
* @author rschoene - Initial contribution
*/
public class SimpleMain {
// --- just testing byte[] conversion ---
public static void testing() {
byte[] bytes;
int i = 1;
double d = 2.3d;
float f = 4.2f;
short sh = 13;
long l = 7L;
String s = "Hello";
char c = 'a';
Integer ii = Integer.valueOf(1);
if (!ii.equals(i)) throw new AssertionError("Ints not equal");
// int to byte
ByteBuffer i2b = ByteBuffer.allocate(4);
i2b.putInt(i);
bytes = i2b.array();
// byte to int
ByteBuffer b2i = ByteBuffer.wrap(bytes);
int actual_i = b2i.getInt();
if (i != actual_i) throw new AssertionError("Ints not equal");
// double to byte
ByteBuffer d2b = ByteBuffer.allocate(8);
d2b.putDouble(d);
bytes = d2b.array();
// byte to double
ByteBuffer b2d = ByteBuffer.wrap(bytes);
double actual_d = b2d.getDouble();
if (d != actual_d) throw new AssertionError("Doubles not equal");
// float to byte
ByteBuffer f2b = ByteBuffer.allocate(4);
f2b.putFloat(f);
bytes = f2b.array();
// byte to float
ByteBuffer b2f = ByteBuffer.wrap(bytes);
float actual_f = b2f.getFloat();
if (f != actual_f) throw new AssertionError("Floats not equal");
// short to byte
ByteBuffer sh2b = ByteBuffer.allocate(2);
sh2b.putShort(sh);
bytes = sh2b.array();
// byte to short
ByteBuffer b2sh = ByteBuffer.wrap(bytes);
short actual_sh = b2sh.getShort();
if (sh != actual_sh) throw new AssertionError("Shorts not equal");
// long to byte
ByteBuffer l2b = ByteBuffer.allocate(8);
l2b.putLong(l);
bytes = l2b.array();
// byte to long
ByteBuffer b2l = ByteBuffer.wrap(bytes);
long actual_l = b2l.getLong();
if (l != actual_l) throw new AssertionError("Longs not equal");
// String to byte
bytes = s.getBytes();
// byte to String
String actual_s = new String(bytes);
if (!s.equals(actual_s)) throw new AssertionError("Strings not equal");
// char to byte
ByteBuffer c2b = ByteBuffer.allocate(2);
c2b.putChar(c);
bytes = c2b.array();
// byte to char
ByteBuffer b2c = ByteBuffer.wrap(bytes);
char actual_c = b2c.getChar();
if (c != actual_c) throw new AssertionError("Floats not equal");
}
public static void main(String[] args) {
/*
// as soon as the cache of isInSafetyZone is invalidated, update the value of Robot.ShouldUseLowSpeed with its value
[always] update Robot.ShouldUseLowSpeed with isInSafetyZone() using transformation();
// when a (new?) value for ShouldUseLowSpeed is set, send it over via mqtt
[always] write Robot.ShouldUseLowSpeed;
// when an update of pose is read via mqtt, then update current position
[always] read Joint.CurrentPosition using PoseToPosition;
// PBPose is a datatype defined in protobuf
PoseToPosition: map PBPose to Position using
pose.position.x += sqrt(.5 * size.x)
MAP round(2)
x = x / 100
IGNORE_IF_SAME
;
--- using generated methods ---
Joint j;
j.getCurrentPosition().connectTo("/robot/joint2/pos");
RobotArm r;
// this should not be required
r.getShouldUseLowSpeed().addObserver(j.getCurrentPosition());
r.getShouldUseLowSpeed().connectTo("/robot/config/speed");
*/
testing();
// createManualAST();
}
private static void createManualAST() {
Ros2Rag model = new Ros2Rag();
Program program = parseProgram(Paths.get("src", "test", "resources", "Example.relast"));
model.setProgram(program);
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment