Alejandro Acuña
2024-11-19 72a8eee716de93344f977ab79be7d3bfeb341462
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
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;
    }
 
 
     
}