123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- package com.sig.comm.server.dto;
- import lombok.*;
- import java.io.Serializable;
- //@Data
- //@Builder
- @Setter
- @Getter
- @ToString
- @NoArgsConstructor//(access = AccessLevel.PROTECTED)
- @AllArgsConstructor
- public class IntStatusDto implements Serializable {
- public static final long serialVersionUID = 1L;
- public static final int MAX_KAFKA_DATA_SIZE = 31;
- public String regionCd;
- public int intNo;
- public long nodeId;
- public String commDt;
- public int groupNo;
- public int mode;
- public int ringA;
- public int ringB;
- public int status;
- public int count;
- public int cycle;
- public int phaseA1;
- public int phaseA2;
- public int phaseA3;
- public int phaseA4;
- public int phaseA5;
- public int phaseA6;
- public int phaseA7;
- public int phaseA8;
- public int phaseB1;
- public int phaseB2;
- public int phaseB3;
- public int phaseB4;
- public int phaseB5;
- public int phaseB6;
- public int phaseB7;
- public int phaseB8;
- public int commStts;
- public int mapNo;
- public int tmDiffFlag;
- public int operMode;
- public int ringPhaseA;
- public int ringPhaseB;
- public int ppcControl;
- public int blinking;
- public int turnOffFlag;
- public int manualFlag;
- private byte[] kafkaData;
- //노드 ID 제어기 번호(노드 ID) 4 BYTE
- //버전 버전정보 1 BYTE
- // 1-운영현시정보 사용, 시차제 좌회전 여부, 주기 주기길이 사용,
- // 2-운영현시정보 사용안함, 교차로 연등, 주기 주기길이 사용안함
- //
- //시각 UTC Time(1970년 1월 1일 0시 0분 0초 이후부터 현재까지 시간-초) 4 BYTE
- //제어기 운영 상태 1 BYTE
- // 7 센터와 통신 FAIL 상태 0 : 정상, 1 : 통신 FAIL
- // 6~4 현재 운영중인 맵 번호 ( 0 : 일반제, 1~5: 시차제, 6 : 전용맵)
- // 3 시차제 좌회전 여부(버전정보 1) 1: 수행중, 0: 수행 안함
- // 교차로 연등(버전정보 2) 1: 연등 교차로, 0: 일반교차로
- // 2~0 교통신호기 운영 모드
- // 0: SCU 고정주기 모드
- // 1: 감응하지 않는 OFFLINE 제어모드
- // 2: 감응되는 OFFLINE 제어모드
- // 4: 감응되는 온라인 제어모드
- // 5: 감응하지 않는 온라인 제어모드
- //A링 현시 1 BYTE
- // 7~5 RING A의 PHASE (0∼7)
- // 4~0 RING A의 STEP (0∼31)
- //B링 현시 1 BYTE
- // 7~5 RING B의 PHASE (0∼7)
- // 4~0 RING B의 STEP (0∼31)
- //제어기 상태 1 BYTE
- // 7 POLICE PANEL 수동진행S/W상태 (1: ON, 0: OFF)
- // 6 POLICE PANEL 수동 S/W 상태 (1: ON, 0: OFF)
- // 5 POLICE PANEL 점멸 S/W 상태 (1: ON, 0: OFF)
- // 4 POLICE PANEL 소등 S/W 상태 (1: ON, 0: OFF)
- // 3 모순 상태 (1: 모순, 0: 정상)
- // 2 소등 상태 (1: 소등, 0: 정상)
- // 1 점멸 상태 (1: 점멸, 0: 정상)
- // 0 PPC 제어 상태 (0: PPC Disable 1: PPC Enabled)
- //주기Count 주기 Count(초), 버전정보가 1인 경우 정보가 유효함 1 BYTE
- //주기 길이 현재 주기의 길이(초), 버전정보가 1인 경우 정보가 유효함 1 BYTE
- //운영 현시 운영현시(A Ring 8 BYTE + B Ring 8 BYTE), 버전정보가 1인 경우 정보가 유효함 16 BYTE
- public IntStatusDto(String regionCd, int intNo, long nodeId) {
- this.regionCd = regionCd;
- this.intNo = intNo;
- this.nodeId = nodeId;
- this.kafkaData = new byte[MAX_KAFKA_DATA_SIZE];
- this.kafkaData[0] = (byte)((nodeId >> 24) & 0x000000FF);
- this.kafkaData[1] = (byte)((nodeId >> 16) & 0x000000FF);
- this.kafkaData[2] = (byte)((nodeId >> 8 ) & 0x000000FF);
- this.kafkaData[3] = (byte)((nodeId ) & 0x000000FF);
- this.kafkaData[4] = (byte)0x01;
- initStatus(0);
- }
- public void initStatus(long unixTimestamp) {
- int idx = 5;
- this.kafkaData[idx++] = (byte)((unixTimestamp >> 24) & 0x000000FF);
- this.kafkaData[idx++] = (byte)((unixTimestamp >> 16) & 0x000000FF);
- this.kafkaData[idx++] = (byte)((unixTimestamp >> 8 ) & 0x000000FF);
- this.kafkaData[idx++] = (byte)((unixTimestamp ) & 0x000000FF);
- for (int ii = idx; ii < MAX_KAFKA_DATA_SIZE; ii++) {
- this.kafkaData[ii] = (byte)0x00;
- }
- }
- public void setOperStatus(int operStts) {
- this.kafkaData[9] = (byte)(operStts & 0xFF);
- }
- public void setPhase(int ringA, int ringB) {
- this.kafkaData[10] = (byte)(ringA & 0xFF);
- this.kafkaData[11] = (byte)(ringB & 0xFF);
- }
- public void setStatus(int status) {
- this.kafkaData[12] = (byte)(status & 0xFF);
- }
- public void setCycle(int count, int length) {
- this.kafkaData[13] = (byte)(count & 0xFF);
- this.kafkaData[14] = (byte)(length & 0xFF);
- }
- public void setPhaseVal(byte[] buffer, int phaseIdx) {
- int idx = 15;
- for (int ii = phaseIdx; ii < phaseIdx+16; ii++) {
- this.kafkaData[idx++] = buffer[ii];
- }
- }
- // public void setPhaseVal(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int b1, int b2, int b3, int b4, int b5, int b6, int b7, int b8) {
- // this.kafkaData[15] = (byte)(a1 & 0xFF);
- // this.kafkaData[16] = (byte)(a2 & 0xFF);
- // this.kafkaData[17] = (byte)(a3 & 0xFF);
- // this.kafkaData[18] = (byte)(a4 & 0xFF);
- // this.kafkaData[19] = (byte)(a5 & 0xFF);
- // this.kafkaData[20] = (byte)(a6 & 0xFF);
- // this.kafkaData[21] = (byte)(a7 & 0xFF);
- // this.kafkaData[22] = (byte)(a8 & 0xFF);
- //
- // this.kafkaData[23] = (byte)(b1 & 0xFF);
- // this.kafkaData[24] = (byte)(b2 & 0xFF);
- // this.kafkaData[25] = (byte)(b3 & 0xFF);
- // this.kafkaData[26] = (byte)(b4 & 0xFF);
- // this.kafkaData[27] = (byte)(b5 & 0xFF);
- // this.kafkaData[28] = (byte)(b6 & 0xFF);
- // this.kafkaData[29] = (byte)(b7 & 0xFF);
- // this.kafkaData[30] = (byte)(b8 & 0xFF);
- // }
- }
|