package art.servers.etdserver.protocols.diamond; import java.io.ByteArrayOutputStream; public class Diamond_ProtocolWriter { public static final int MAXLANES = 8; public static final int MAXVALUES = 32; public static final int MAXAXLES = 32; public static final int MAXSPEEDS = 32; public static final int MAXLENGTHS = 32; public static final int MAXGAPS = 32; public static final int MAXHEADWAYS = 32; public static final int MAXSPEEDSBYLENGTHS = 32; public static final int MAXSPEEDSBYAXLES = 32; public static final int MAXINTERVALS = 6; public static final int MAXPERIODS = 60; public static final int DIAMOND_MODULE_HEADER = 0x01; public static final int DIAMOND_MODULE_BINNED_SETUP = 0x02; public static final int DIAMOND_MODULE_SERIAL_NUMBER = 0x03; public static final int DIAMOND_MODULE_LANE1_CONFIGURATION = 0x10; public static final int DIAMOND_MODULE_LANE2_CONFIGURATION = 0x20; public static final int DIAMOND_MODULE_LANE3_CONFIGURATION = 0x30; public static final int DIAMOND_MODULE_LANE4_CONFIGURATION = 0x40; public static final int DIAMOND_MODULE_LANE5_CONFIGURATION = 0x50; public static final int DIAMOND_MODULE_LANE6_CONFIGURATION = 0x60; public static final int DIAMOND_MODULE_LANE7_CONFIGURATION = 0x70; public static final int DIAMOND_MODULE_LANE8_CONFIGURATION = 0x80; public static final int DIAMOND_MODULE_COUND_DATA = 0x90; public static final int DIAMOND_MODULE_BINNED_AXLE = 0x91; public static final int DIAMOND_MODULE_BINNED_SPEED = 0x92; public static final int DIAMOND_MODULE_BINNED_LENGTH = 0x93; public static final int DIAMOND_MODULE_BINNED_GAP = 0x94; public static final int DIAMOND_MODULE_BINNED_HEADWAY = 0x95; public static final int DIAMOND_MODULE_BINNED_SPEED_LENGTH = 0x96; public static final int DIAMOND_MODULE_BINNED_SPEED_AXLE = 0x97; public static final int DIAMOND_MODULE_ERROR_BIN_INFO = 0x9F; public static final int DIAMOND_MODULE_TIME_DATE = 0xF0; public static final int DIAMOND_MODULE_RECORD_INTERVAL = 0xF1; public static final int DIAMOND_MODULE_END_OF_FILE = 0xFF; public static final int DIAMONDSERIAL_OK = 1; public static final int DIAMONDSERIAL_ERROR = -1; public static final int DIAMONDSERIAL_TIMEOUT = -2; public static final int DIAMONDSERIAL_ERROR_OPENPORT = -100; public static final int DIAMONDSERIAL_ERROR_CONNECT = -101; public static final int DIAMONDSERIAL_ERROR_SPEEDTABLE = -102; public static final int DIAMONDSERIAL_ERROR_LENGTHTABLE = -103; public static final int DIAMONDSERIAL_ERROR_RETRIEVEFILE = -104; public static final int DIAMONDSERIAL_ERROR_PASSWORD = -105; public static final int DIAMONDSERIAL_ERROR_NOTBINNED = -107; public static final int DIAMONDSERIAL_ERROR_NOTBINNEDSPEED = -108; public static final int DIAMONDSERIAL_ERROR_NOTBINNEDLENGTH = -109; public static final int DIAMONDSERIAL_ERROR_NODATA = -110; public static final int DIAMONDSERIAL_ERROR_NOLANES = -111; public static final int DIAMONDSERIAL_ERROR_BINNEDLENGTH = -112; public static final int DIAMONDSERIAL_ERROR_STORAGEBINNED = -113; public static final int DIAMONDSERIAL_ERROR_ACTIVEDSPEED = -114; public static final int DIAMONDSERIAL_ERROR_ACTIVEDLENGTH = -115; public static final int DIAMONDSERIAL_ERROR_PRES_PRES = -116; public static final int DIAMONDSERIAL_ERROR_NOCARRILESACTIVOS = -117; public static final int DIAMONDSERIAL_ERROR_FECHA = -120; public static final int DIAMONDSERIAL_ERROR_SIZE = -121; public static final int DIAMONDSERIAL_MODEMCALLERROR = -500; public static final int DIAMOND_OK = 1; public static final int DIAMOND_ERR_00 = -1; public static final int DIAMOND_ERR_01 = -2; public static final int DIAMOND_ERR_02 = -3; public static final int DIAMOND_ERR_03 = -4; public static final int DIAMOND_ERR_04 = -5; public static final int DIAMOND_ERR_05 = -6; public static final int DIAMOND_ERR_06 = -7; public static final int DIAMOND_ERR_07 = -8; public static final int DIAMOND_ERR_08 = -9; public static final int DIAMOND_ERR_09 = -10; public static final int DIAMOND_ERR_0A = -11; public static final int DIAMOND_ERR_0B = -12; public static final int DIAMOND_ERROR = -501; public static final int STX = 0x0D; public static final int CR = 0x0D; public static final int NL = 0x0A; private ByteArrayOutputStream bos = new ByteArrayOutputStream(); public Diamond_ProtocolWriter() { } public void write(int data) { bos.write(data); } public void writeShort(int data) { bos.write((data >> 8) & 0xFF); bos.write((data & 0xFF)); } public void writeInt(int data) { bos.write((data >> 24) & 0xFF); bos.write((data >> 16) & 0xFF); bos.write((data >> 8) & 0xFF); bos.write((data & 0xFF)); } public void writeString(String data) { for (int i=0; i> 8)); bos.write((serialNumber & 0xFF)); } public void writeHeader() { bos.write('S'); bos.write('K'); bos.write('P'); bos.write('3'); } public void writeCR() { bos.write(CR); bos.write(NL); } public void writeNL() { bos.write(NL); } public byte[] createMessage() { return(toByteArray()); } public int crc(int[] command) { int crc = 0; for (int i=0; i