package art.servers.sosserver.controller.musatel; import java.util.StringTokenizer; public class MusatelProtocol { public static final int ACK_DEM_USE = 0x81; public static final int ACK_DEM_SER = 0x82; public static final int ACK_ENV_ALA = 0x83; public static final int ORD_FON_ON = 0x41; public static final int ORD_FON_OFF = 0x42; public static final int ORD_TON_ON = 0x43; public static final int ORD_TON_OFF = 0x44; public static final int ORD_TST_FON = 0x45; public static final int ORD_TST_MAN = 0x46; public static final int ORD_ESC_HOR = 0x47; public static final int ORD_ESC_IO = 0x48; public static final int ORD_LEC_IO = 0x49; public static final int ORD_VOZ_ON = 0x4A; public static final int ORD_VOZ_OFF = 0x4B; public static final int ORD_ADJ_VOL = 0x4C; public static final int ORD_POS_ATE = 0x4D; public static final int DEM_USE = 0x21; public static final int DEM_SER = 0x22; public static final int ENV_ALA = 0x23; public static final int ACK_FON_ON = 0x84; public static final int ACK_FON_OFF = 0x85; public static final int ACK_TON_ON = 0x86; public static final int ACK_TON_OFF = 0x87; public static final int RES_TST_FON = 0x88; public static final int RES_TST_MAN = 0x89; public static final int ACK_ESC_HOR = 0x8A; public static final int ACK_ESC_IO = 0x8B; public static final int ACK_LEC_IO = 0x8C; public static final int ACK_VOZ_ON = 0x8D; public static final int ACK_ADJ_VOL = 0x8E; public static final int P_MAS = 0x90; public static final int P_ESC = 0x91; public static final int L_ESP = 0x51; public static final int L_FON = 0x52; public static final int T_LLA = 0x53; public static final int T_COM = 0x54; public static final int MEM_FUE_SER = 0x55; public static final int MEM_LLA_ESP = 0x56; public static final int TST_OK = 0x57; public static final int TST_FAL = 0x58; public static final int RES_POS_ATE = 0x0F; public static final int ORD_MOD_ON = 0x4E; public static final int ACK_MOD_ON = 0xA0; public static final int ORD_MOD_OFF = 0x4F; public static final int ACK_MOD_OFF = 0xA1; public static final int ORD_REN_ON = 0x60; public static final int ACK_VOZ_OFF = 0x92; public static final int ACK_REN_ON = 0x93; public static final int ORD_ADJ_ATE = 0xE0; public static final int ACK_ADJ_ATE = 0xF0; public static final int ORD_ADJ_ATS = 0xE1; public static final int ACK_ADJ_ATS = 0xF1; public static final int ORD_POS_ATS = 0xE2; public static final int RES_POS_ATS = 0xF2; public static final int ORD_CONF_PER = 0xE3; public static final int ACK_CONF_PER = 0xF3; public static final int ORD_PARTICULAR = 0xC3; public static final int ASIGNAR_CC = 0xB4; public static final int NACK = 0x15; public static final int OTRO_CC_ASIGNADO = 0x10; public static byte[] getIpArray (String ip) throws Exception { byte[] addr = new byte[4]; StringTokenizer strtok = new StringTokenizer(ip, "."); String s0 = strtok.nextToken(); String s1 = strtok.nextToken(); String s2 = strtok.nextToken(); String s3 = strtok.nextToken(); addr[0] = (byte)Integer.parseInt(s0); addr[1] = (byte)Integer.parseInt(s1); addr[2] = (byte)Integer.parseInt(s2); addr[3] = (byte)Integer.parseInt(s3); return(addr); } /****************************************************************************** * Compilation: javac CRC16CCITT * Reads in a sequence of bytes and prints out its 16 bit * Cylcic Redundancy Check (CRC-CCIIT 0xFFFF). * 1 + x + x^5 + x^12 + x^16 is irreducible polynomial. * % java CRC16-CCITT 123456789 * CRC16-CCITT = 29b1 ******************************************************************************/ public static int CRC(byte[] data) { int crc = 0xFFFF; int polynomial = 0x1021; // byte[] testBytes = "123456789".getBytes("ASCII"); for (byte b : data) { for (int i = 0; i < 8; i++) { boolean bit = ((b >> (7-i) & 1) == 1); boolean c15 = ((crc >> 15 & 1) == 1); crc <<= 1; if (c15 ^ bit) crc ^= polynomial; } } crc &= 0xffff; return crc; } }