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<data.length(); i++)
|
{
|
bos.write(data.charAt(i));
|
}
|
}
|
|
|
public void write(int[] data)
|
{
|
for (int i=0; i<data.length; i++)
|
{
|
write(data[i]);
|
}
|
}
|
|
|
public void writeSerialNumber(int serialNumber)
|
{
|
bos.write((serialNumber >> 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<command.length; i++)
|
crc += command[i];
|
return(crc%256);
|
}
|
|
|
|
public byte[] toByteArray()
|
{
|
return bos.toByteArray();
|
}
|
|
|
public int[] toIntegerArray()
|
{
|
byte[] data = bos.toByteArray();
|
int[] result = new int[data.length];
|
for (int i=0; i<data.length; i++) result[i] = (int)data[i] & 0xFF;
|
return result;
|
}
|
|
}
|