package art.servers.colorsserver.M.protocol; import java.io.ByteArrayOutputStream; public class M_ProtocolWriter { public static final int STX = 0x02; public static final int ETX = 0x03; public static final int EOB12 = 0x0A; public static final int EOB14 = 0x0C; public static final int EOB15 = 0x0D; public static final int HTR = 0x33; public static final int PRH = 0x40; public static final int DET = 0x20; public static final int M_READ_TABLE_FULL = 0x20; // A0; public static final int M_WRITE_TABLE_FULL = 0x60; // E0; public static final int M_READ_TABLE_PARTIAL = 0x21; // A1; public static final int M_WRITE_TABLE_PARTIAL = 0x61; // E1; public static final int M_START_RECORDING = 0x59; // D9; public static final int M_START_RECORDING_RESPONSE = 0x19; // 99; public static final int M_END_RECORDING = 0x5A; // DA; public static final int M_END_RECORDING_RESPONSE = 0x1A; // 9A; public static final int M_RECORDABLE_PLAN_QUERY = 0x10; // 90; public static final int M_CURRENT_PLAN_QUERY = 0x11; // 91; public static final int M_CURRENT_TIME_QUERY = 0x12; // 92; public static final int M_CURRENT_SUBCONTROLLER_STATE_QUERY = 0x14; // 94; public static final int M_CURRENT_PRESENCE_DETECTORS = 0x30; // B0; public static final int M_CURRENT_COUNTING_DETECTORS_DATETIME = 0x32; // B2; public static final int M_CURRENT_COUNTING_DETECTORS = 0x33; // B3; public static final int M_ALARMS_QUERY = 0x34; // B4; public static final int M_BLOWN_LAMPS_ALARMS_QUERY = 0x35; // B5; public static final int M_DAMAGED_GROUP_ALARMS_QUERY = 0x36; // B6; public static final int M_INCOMPATIBILITY_ALARMS_QUERY = 0x37; // B7; public static final int M_CURRENT_STATUS_GROUPS_QUERY = 0x39; // B9; public static final int M_SET_REALTIME_BUS_DETECTIONS_ENABLE = 0x40; // C0; public static final int M_SET_REALTIME_BUS_DETECTIONS_DISABLE = 0x41; // C1; public static final int M_REALTIME_BUS_DETECTIONS = 0x3B; // BB; public static final int M_BUS_DETECTIONS_QUERY = 0x3C; // BC; public static final int M_SAVE_RECORDABLE_PLAN = 0x50; // D0; public static final int M_SELECT_PLAN = 0x51; // D1; public static final int M_SET_TIME = 0x52; // D2; public static final int M_SET_REALTIME_DETECTORS = 0x53; // D3; public static final int M_SET_STATE = 0x54; // D4; public static final int M_PHASE_CHANGING = 0x55; // D5; public static final int M_DIRECT_GROUP_OUTPUT = 0x56; // D6; public static final int M_GROUPS_REALTIME_ENABLE = 0x5B; // DB; public static final int M_GROUPS_REALTIME_DISABLE = 0x5C; // DC; public static final int M_ERASE_ALARMS = 0x5D; // DD; public static final int M_SELECT_SPECIAL_DEMAND = 0x5E; // DE; public static final int M_CANCEL_SPECIAL_DEMAND = 0x5F; // DF; private ByteArrayOutputStream bos = new ByteArrayOutputStream(); public M_ProtocolWriter() { } public void write(int data) { bos.write((data & 0x7F) + 0x80); } public void writeRaw(int data) { bos.write(data); } public void writeEOB(int data) { bos.write(data & 0x7F); } public void write(int[] data) { for (int i=0; i