Guest User

Untitled

a guest
Mar 22nd, 2018
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.16 KB | None | 0 0
  1. package device.packet;
  2.  
  3.  
  4. import device.packet.decoder.PacketDataDecoder;
  5.  
  6. import static device.packet.response.DeviceResponse.success;
  7.  
  8. public abstract class AbstractPacket implements Packet {
  9.  
  10. public static final int SERIAL_NUMBER_INDEX = 5;
  11. public static final int SERIAL_NUMBER_LENGTH = 20;
  12. private static final int PROTOCOL_START_INDEX = 25;
  13. private static final short RESPONSE_VERSION = 0x04;
  14. private static final int BLANK_RESPONSE_LENGTH = 0x001F;
  15. protected final byte[] hexDataBytes;
  16. private final byte[] serialNumberBytes;
  17. private int protocol;
  18. private String serialNumber;
  19.  
  20. public AbstractPacket(int protocol, String inHexDataPacket) {
  21. this(protocol, PacketDataDecoder.convertHexDataToByteArray(inHexDataPacket));
  22. }
  23.  
  24. public AbstractPacket(int protocol, byte[] hexDataBytes) {
  25. this.protocol = protocol;
  26. this.hexDataBytes = hexDataBytes;
  27. this.serialNumberBytes = PacketDataDecoder.copyOfBytesRange(hexDataBytes, SERIAL_NUMBER_INDEX, SERIAL_NUMBER_LENGTH);
  28. this.serialNumber = new String(serialNumberBytes).trim();
  29. }
  30.  
  31. public AbstractPacket(byte[] hexDataBytes) {
  32. this(parseProtocol(hexDataBytes), hexDataBytes);
  33. }
  34.  
  35. public void validate() {
  36. }
  37.  
  38. @Override
  39. public String getSerialNumber() {
  40. return serialNumber;
  41. }
  42.  
  43. public byte[] getSerialNumberBytes() {
  44. return serialNumberBytes;
  45. }
  46.  
  47. public static int parseProtocol(String inHexDataPacket) {
  48. byte[] dataPacket = PacketDataDecoder.convertHexDataToByteArray(inHexDataPacket);
  49. return parseProtocol(dataPacket);
  50. }
  51.  
  52. public static int parseProtocol(byte[] packetBytes) {
  53. return PacketDataDecoder.parseU16BigEndian(packetBytes, PROTOCOL_START_INDEX);
  54. }
  55.  
  56.  
  57.  
  58.  
  59. public int parseRpm() {
  60. return 0;
  61. }
  62.  
  63. public int getProtocol() {
  64. return protocol;
  65. }
  66.  
  67. public byte[] respond() {
  68. return success()
  69. .withLength(BLANK_RESPONSE_LENGTH)
  70. .withVersion(RESPONSE_VERSION)
  71. .withSerialNumber(getSerialNumberBytes())
  72. .withCommandType(getProtocol())
  73. .respond();
  74. }
  75. }
Add Comment
Please, Sign In to add comment