bunti/src/main/java/de/ctdo/bunti/artnet/packets/ArtNetPacket.java

47 lines
1.2 KiB
Java
Raw Normal View History

package de.ctdo.bunti.artnet.packets;
2012-02-25 15:55:47 +00:00
import de.ctdo.bunti.artnet.ByteUtils;
2012-02-25 15:55:47 +00:00
public abstract class ArtNetPacket {
2012-03-07 23:57:50 +00:00
private static final byte[] HEADER = "Art-Net\0".getBytes();
private static final int PROTOCOL_VERSION = 14;
private static final int OFFSET_HEADER = 0;
private static final int OFFSET_OPCODE = 8;
private static final int OFFSET_PROTOCOL_VERSION = 10;
2012-02-25 15:55:47 +00:00
2012-03-04 09:50:50 +00:00
private ByteUtils data;
private final PacketType type;
2012-03-07 23:57:50 +00:00
public ArtNetPacket(PacketType type, int length) {
this.type = type;
setData(new byte[length]);
2012-03-04 09:50:50 +00:00
2012-03-07 23:57:50 +00:00
// Set header
data.setByteChunk(HEADER, OFFSET_HEADER, HEADER.length);
data.setInt16LE(type.getOpCode(), OFFSET_OPCODE);
// Set protocol
data.setInt16(PROTOCOL_VERSION, OFFSET_PROTOCOL_VERSION);
2012-03-04 09:50:50 +00:00
}
2012-02-25 15:55:47 +00:00
2012-03-07 23:57:50 +00:00
public final ByteUtils getData() {
return data;
2012-02-25 15:55:47 +00:00
}
2012-03-04 09:50:50 +00:00
public final byte[] getRawData() {
2012-02-25 15:55:47 +00:00
return data.getBytes();
}
public int getLength() {
2012-03-04 09:50:50 +00:00
return getData().getLength();
2012-02-25 15:55:47 +00:00
}
2012-03-04 09:50:50 +00:00
public final void setData(byte[] data) {
2012-03-10 21:20:57 +00:00
this.data = new ByteUtils(data.clone());
2012-02-25 15:55:47 +00:00
}
2012-03-07 23:57:50 +00:00
public final PacketType getType() {
return type;
2012-02-25 15:55:47 +00:00
}
}