RtdeSetupInputs.java 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package at.acdp.urweb.rtde.packets;
  2. import java.io.DataInputStream;
  3. import java.io.DataOutputStream;
  4. import java.io.IOException;
  5. import java.util.ArrayList;
  6. import java.util.Arrays;
  7. import java.util.List;
  8. import static at.acdp.urweb.rtde.CommandType.RTDE_CONTROL_PACKAGE_SETUP_INPUTS;
  9. import static at.acdp.urweb.rtde.CommandType.RTDE_CONTROL_PACKAGE_SETUP_OUTPUTS;
  10. public class RtdeSetupInputs implements IRtdeData {
  11. public int recipe;
  12. public List<String> variables=new ArrayList<>();
  13. public List<String> types=new ArrayList<>();
  14. public String typesText;
  15. public RtdeSetupInputs() {
  16. }
  17. public RtdeSetupInputs addVariable(String name) {
  18. variables.add(name);
  19. return this;
  20. }
  21. @Override
  22. public int getType() {
  23. return RTDE_CONTROL_PACKAGE_SETUP_INPUTS;
  24. }
  25. @Override
  26. public RtdeSetupInputs read(DataInputStream d, int length) throws IOException {
  27. recipe = d.readByte();
  28. byte[] text=new byte[length-1];
  29. d.readFully(text);
  30. typesText=new String(text);
  31. types.addAll(Arrays.asList(typesText.split(",")));
  32. return this;
  33. }
  34. @Override
  35. public RtdeSetupInputs send(DataOutputStream dos) throws IOException {
  36. var payload = String.join(",", variables).getBytes();
  37. sendHeader(dos, payload.length);
  38. dos.write(payload);
  39. dos.flush();
  40. return this;
  41. }
  42. }