|
@@ -70,6 +70,8 @@ public class KafkaConsumerWorker implements MessageListener<String, byte[]> {
|
|
|
int turnOff = ((status >> 2) & 0x01); //소등, 1: 소등, 0: 정상
|
|
|
int sensing = ((status >> 3) & 0x01); //감응, 1: 감응, 0: 정상
|
|
|
int trans = ((status >> 4) & 0x01); //전이, 1: 전이중, 0: 전이완료
|
|
|
+ int ppc = ((status >> 5) & 0x01); //우선신호(PPC): 1: 서비스 중(In Service), 0: Not in Service ==> R28
|
|
|
+ int hold = ((status >> 6) & 0x01); //현시유지: 1: 유지, 0: 정상 ==> R28
|
|
|
|
|
|
int conflict = ((error ) & 0x01); //모순 이상, 1 : 이상, 0 : 정상
|
|
|
int centerComm = ((error >> 1) & 0x01); //센터 통신 이상, 1: 센터 통신이상, 0 : 정상
|
|
@@ -85,8 +87,8 @@ public class KafkaConsumerWorker implements MessageListener<String, byte[]> {
|
|
|
|
|
|
log.info(" LocalTime: ({})", signalTime);
|
|
|
log.info(" SystemTime: ({})", SysUtils.getSysTimeStr());
|
|
|
- log.info(" STATUS: 전이({}), 감응({}), 소등({}), 점멸({}), 수동({}) - (1:전이중, 0:전이완료... 1:상태, 0:정상)",
|
|
|
- trans, sensing, turnOff, blink, manual);
|
|
|
+ log.info(" STATUS: 전이({}), 감응({}), 소등({}), 점멸({}), 수동({}), PPC({}), HOLD({}) - (1:전이중, 0:전이완료... 1:상태, 0:정상)",
|
|
|
+ trans, sensing, turnOff, blink, manual, ppc, hold);
|
|
|
log.info(" ERROR: SCU통신({}), 센터통신({}), 모순({}) - (1: 이상, 0: 정상)",
|
|
|
scuComm, centerComm, conflict);
|
|
|
log.info("CycleCounter: {} sec.", counter);
|
|
@@ -121,19 +123,20 @@ public class KafkaConsumerWorker implements MessageListener<String, byte[]> {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- log.info("SEQ\t신호등정보\t방향\t시간정보신뢰성\t보행자 \t비보호신호\t신호등상태\t표출\t잔여\t방향코드");
|
|
|
+ log.info("SEQ\t신호등정보\t방향\t시간정보신뢰성\t보행자 \t보행/감응\t비보호신호\t신호등상태\t표출\t잔여\t방향코드");
|
|
|
for (int ii = 0; ii < statusCount; ii++) {
|
|
|
- int dirInfo = buffer[idx++] & 0xFF;
|
|
|
- int sttsInfo = buffer[idx++] & 0xFF;
|
|
|
+ int dirInfo = buffer[idx++] & 0xFF;
|
|
|
+ int sttsInfo = buffer[idx++] & 0xFF;
|
|
|
int displayTm = buffer[idx++] & 0xFF;
|
|
|
- int remainTm = buffer[idx++] & 0xFF;
|
|
|
- int dirCode = buffer[idx++] & 0xFF;
|
|
|
+ int remainTm = buffer[idx++] & 0xFF;
|
|
|
+ int dirCode = buffer[idx++] & 0xFF;
|
|
|
|
|
|
int dirAdd = ((dirInfo) & 0x0F); //3 ~ 0, 방향추가정보, 해당 방향에 연등지 없음(0), 해당 방향의 첫번째 연등지(1), 해당 방향의 두번째 연등지(2)
|
|
|
int lightsType = ((dirInfo >> 4) & 0x0F); //7 ~ 4, 신호등 정보, ■ 미지정(0), 직진(1), 좌회전(2), 보행자(3), 자전거(4), 우회전(5), 버스(6), 유턴(7)
|
|
|
|
|
|
int lighting = ((sttsInfo ) & 0x07); //2 ~ 0, 신호등 상태, ■ 소등(0), 적색점등(1), 황색점등(2), 녹색점등(3), 적색점멸(4), 황색점멸(5), 녹색점멸(6)
|
|
|
int unprotect = ((sttsInfo >> 3) & 0x01); //3, 비보호 상태, ■ 신호등 정보 유턴/좌회전에 대한 비보호 여부, ■ 비보호 아님(0), 비보호(1)
|
|
|
+ int walkerExt = ((sttsInfo >> 5) & 0x01); //5, 보행연장/차량감응제어(0: 없음, 1: 보행신호-연장중 또는 차량신호-감응제어중
|
|
|
int walkerPush = ((sttsInfo >> 6) & 0x01); //6, 보행자(푸쉬 또는 자동검지), ■ 없음(0), 버튼 눌림 or 자동검지(1)
|
|
|
int timeFlag = ((sttsInfo >> 7) & 0x01); //7, 시간 정보 신뢰성, ■ 고정신호시간(0), 가변신호시간(1)
|
|
|
|
|
@@ -157,6 +160,13 @@ public class KafkaConsumerWorker implements MessageListener<String, byte[]> {
|
|
|
case 1: ptimeFlag = "가변신호(1)"; break;
|
|
|
default: ptimeFlag = "XXX(" + timeFlag + ")"; break;
|
|
|
}
|
|
|
+ String pwalkerExt;
|
|
|
+ switch (walkerExt)
|
|
|
+ {
|
|
|
+ case 0: pwalkerExt = "없음(0) "; break;
|
|
|
+ case 1: pwalkerExt = "연장/감응(1)"; break;
|
|
|
+ default: pwalkerExt = "XXX(" + walkerExt + ")"; break;
|
|
|
+ }
|
|
|
String pwalkerPush;
|
|
|
switch (walkerPush)
|
|
|
{
|
|
@@ -183,12 +193,13 @@ public class KafkaConsumerWorker implements MessageListener<String, byte[]> {
|
|
|
case 6: plighting = "녹색점멸(6)"; break;
|
|
|
default: plighting = "XXX(" + lighting + ")"; break;
|
|
|
}
|
|
|
- log.info("{}\t{}\t{}\t{}\t{}\t{}\t{}\t{}\t{}\t{}",
|
|
|
+ log.info("{}\t{}\t{}\t{}\t{}\t{}\t{}\t{}\t{}\t{}\t{}",
|
|
|
String.format("%3d", ii),
|
|
|
plightInfo,
|
|
|
dirAdd,
|
|
|
ptimeFlag,
|
|
|
pwalkerPush,
|
|
|
+ pwalkerExt,
|
|
|
punprotect,
|
|
|
plighting,
|
|
|
displayTm,
|