package at.acdp.urweb.rtde.packets; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.util.HashMap; import static at.acdp.urweb.rtde.CommandType.RTDE_DATA_PACKAGE; import static at.acdp.urweb.rtde.CommandType.RTDE_TEXT_MESSAGE; public class RtdeInDataPackage implements IRtdeData { private final RtdeSetupInputs inputs; private HashMap pdata=new HashMap<>(); public RtdeInDataPackage(RtdeSetupInputs inputs) { this.inputs=inputs; } @Override public int getType() { return RTDE_DATA_PACKAGE; } public HashMap getPdata() { return pdata; } @Override public RtdeInDataPackage read(DataInputStream di, int length) throws IOException { return this; } private int calcSize() { int size = 0; for (int i = 0; i < inputs.variables.size(); i++) { String output = inputs.variables.get(i); String type = inputs.types.get(i); switch (type) { case "BOOL": case "UINT8": size+=1; break; case "UINT32": case "INT32": size+=4; break; case "UINT64": case "DOUBLE": size+=8; break; case "VECTOR3D": case "VECTOR6INT32": case "VECTOR6UINT32": size+=24; break; case "VECTOR6D": size+=48; break; } } return size; } @Override public RtdeInDataPackage send(DataOutputStream dos) throws IOException { sendHeader(dos,calcSize()+1); dos.writeByte(inputs.recipe); for(int i=0; i