47 lines
1.2 KiB
Java
47 lines
1.2 KiB
Java
package de.ctdo.bunti.artnet.packets;
|
|
|
|
import de.ctdo.bunti.artnet.ByteUtils;
|
|
|
|
public abstract class ArtNetPacket {
|
|
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;
|
|
|
|
private ByteUtils data;
|
|
private final PacketType type;
|
|
|
|
public ArtNetPacket(PacketType type, int length) {
|
|
this.type = type;
|
|
setData(new byte[length]);
|
|
|
|
// Set header
|
|
data.setByteChunk(HEADER, OFFSET_HEADER, HEADER.length);
|
|
data.setInt16LE(type.getOpCode(), OFFSET_OPCODE);
|
|
|
|
// Set protocol
|
|
data.setInt16(PROTOCOL_VERSION, OFFSET_PROTOCOL_VERSION);
|
|
}
|
|
|
|
public final ByteUtils getData() {
|
|
return data;
|
|
}
|
|
|
|
public final byte[] getRawData() {
|
|
return data.getBytes();
|
|
}
|
|
|
|
public int getLength() {
|
|
return getData().getLength();
|
|
}
|
|
|
|
public final void setData(byte[] data) {
|
|
this.data = new ByteUtils(data.clone());
|
|
}
|
|
|
|
public final PacketType getType() {
|
|
return type;
|
|
}
|
|
}
|