Explorar el Código

add vms control

shjung hace 2 años
padre
commit
05ec0503f9
Se han modificado 19 ficheros con 443 adiciones y 207 borrados
  1. 15 0
      src/main/java/com/its/op/controller/its/vms/CsVmsControlController.java
  2. 16 0
      src/main/java/com/its/op/controller/its/vms/VmsControlController.java
  3. 5 6
      src/main/java/com/its/op/dao/repository/its/vms/TbVmsCtlrRepository.java
  4. 47 27
      src/main/java/com/its/op/dto/its/vms/VmsControlDto.java
  5. 28 5
      src/main/java/com/its/op/service/its/vms/VmsControlService.java
  6. 41 23
      src/main/java/com/its/op/xnetudp/protocol/CENTER_COMM_DEFINE.java
  7. 7 7
      src/main/java/com/its/op/xnetudp/protocol/CENTER_COMM_MESSAGE.java
  8. 1 1
      src/main/java/com/its/op/xnetudp/protocol/CENTER_PG_STATE_RES.java
  9. 25 22
      src/main/java/com/its/op/xnetudp/protocol/CENTER_VMS_COMM_MESSAGE.java
  10. 11 13
      src/main/java/com/its/op/xnetudp/protocol/CENTER_VMS_REQ_COMMON.java
  11. 57 0
      src/main/java/com/its/op/xnetudp/protocol/CENTER_VMS_REQ_IMM_SCNR_DNLD.java
  12. 51 3
      src/main/java/com/its/op/xnetudp/protocol/CENTER_VMS_REQ_LUMINANCE.java
  13. 3 5
      src/main/java/com/its/op/xnetudp/protocol/CENTER_VMS_REQ_NOTIFY.java
  14. 13 10
      src/main/java/com/its/op/xnetudp/protocol/CENTER_VMS_REQ_OPER_MODE.java
  15. 27 30
      src/main/java/com/its/op/xnetudp/protocol/CENTER_VMS_REQ_PARAM.java
  16. 6 2
      src/main/java/com/its/op/xnetudp/protocol/CENTER_VMS_REQ_RESET.java
  17. 19 2
      src/main/java/com/its/op/xnetudp/service/VmsServerRequestSender.java
  18. 51 51
      src/main/java/com/its/op/xnetudp/thread/CenterCommServerReceiver.java
  19. 20 0
      src/main/java/com/its/utils/ItsUtils.java

+ 15 - 0
src/main/java/com/its/op/controller/its/vms/CsVmsControlController.java

@@ -101,6 +101,21 @@ public class CsVmsControlController {
         return this.service.controlOnOffTime(ctlrNmbr, req);
     }
 
+    @ApiOperation(value = "VMS 제어기 폼 시나리오 즉시 다운로드", response = VmsControlDto.VmsControlRes.class)
+    @PostMapping(value = "/imm-scnr-dnld/{key}/{ctlrNmbr}", produces = {"application/json; charset=utf8"})
+    public VmsControlDto.VmsControlRes controlImmScnrDnld(
+            @PathVariable final String key,
+            @ApiParam(name = "ctlrNmbr", value = "제어기번호", example = "10021", required = true)
+            @PathVariable("ctlrNmbr") Long ctlrNmbr,
+            @ApiParam(name = "req", value = "VMS 제어기 폼 시나리오 즉시 다운로드 사용자 정보", example = "[ADMIN]", required = true)
+            @RequestBody @Valid final VmsControlDto.VmsControlReq req) throws NoSuchElementException {
+        log.warn("Vms opr-mode: {}, {}", key, ctlrNmbr);
+        if (!StringUtils.equals(key, "abcdefg1234567890x")) {
+            throw new NoSuchElementException("Authentication key mismatched: " + ctlrNmbr);
+        }
+        return this.service.controlImmScnrDnld(ctlrNmbr, req);
+    }
+
     @ApiOperation(value = "VMS 제어기 운영모드 설정", response = VmsControlDto.VmsControlRes.class)
     @PostMapping(value = "/opr-mode/{key}/{ctlrNmbr}", produces = {"application/json; charset=utf8"})
     public VmsControlDto.VmsControlRes controlOprMode(

+ 16 - 0
src/main/java/com/its/op/controller/its/vms/VmsControlController.java

@@ -121,6 +121,22 @@ public class VmsControlController {
         return this.service.controlOprMode(ctlrNmbr, req);
     }
 
+    @ApiOperation(value = "VMS 제어기 폼 시나리오 즉시 다운로드", response = VmsControlDto.VmsControlRes.class)
+    @PostMapping(value = "/imm-scnr-dnld/{ctlrNmbr}", produces = {"application/json; charset=utf8"})
+    public VmsControlDto.VmsControlRes controlImmScnrDnld(
+            @ApiParam(name = "ctlrNmbr", value = "제어기번호", example = "10021", required = true)
+            @PathVariable("ctlrNmbr") Long ctlrNmbr,
+            @ApiParam(name = "req", value = "VMS 제어기 폼 시나리오 즉시 다운로드 사용자 정보", example = "[ADMIN]", required = true)
+            @RequestBody @Valid final VmsControlDto.VmsControlReq req,
+            HttpServletRequest request) {
+        String userId = this.loginController.getSessionUserId(request);
+        log.info("UUID: {}", userId);
+        if (!userId.equals("")) {
+            req.setUserId(userId);
+        }
+        return this.service.controlImmScnrDnld(ctlrNmbr, req);
+    }
+
     @ApiOperation(value = "VMS 이미지 심볼 재로딩 요청", response = VmsControlDto.VmsControlRes.class)
     @PostMapping(value = "/notify/image-symbol", produces = {"application/json; charset=utf8"})
     public VmsControlDto.VmsControlRes controlNotifyImageSymbol() {

+ 5 - 6
src/main/java/com/its/op/dao/repository/its/vms/TbVmsCtlrRepository.java

@@ -56,14 +56,13 @@ public interface TbVmsCtlrRepository extends JpaRepository<TbVmsCtlr, Long>, Jpa
     @Modifying
     @Query(value =
             "UPDATE TB_VMS_CTLR                                  " +
-                    "   SET VMS_PHSE_CHNG_CYCL    = :schMsgTime, " +
-                    "       VMS_CMNC_ERR_BASS_VAL = :moduleTemp, " +
-                    "       FAN_MTNS_TMPR         = :fanTemp,    " +
-                    "       HETR_RUN_TMPR         = :heaterTemp, " +
-                    "       VMS_MODL_ERR_RATE     = :moduleFail  " +
+                    "   SET FAN_RUN_TMPR  = :fanRunTmpr,    " +
+                    "       HETR_RUN_TMPR = :hetrRunTmpr, " +
+                    "       PANL_ON_TIME  = :onTime,  " +
+                    "       PANL_OFF_TIME = :offTime  " +
                     " WHERE VMS_CTLR_NMBR = :id                  ",
             nativeQuery = true)
-    void updateParam(@Param("id") Long id, @Param("schMsgTime") Integer schMsgTime, @Param("moduleTemp") Integer moduleTemp, @Param("fanTemp") Integer fanTemp, @Param("heaterTemp") Integer heaterTemp, @Param("moduleFail") Integer moduleFail);
+    void updateParam(@Param("id") Long id, @Param("fanRunTmpr") Integer fanRunTmpr, @Param("hetrRunTmpr") Integer hetrRunTmpr, @Param("onTime") String onTime, @Param("offTime") String offTime);
 
     @Transactional
     @Modifying

+ 47 - 27
src/main/java/com/its/op/dto/its/vms/VmsControlDto.java

@@ -63,44 +63,64 @@ public class VmsControlDto implements Serializable {
         @JsonProperty("user_id")
         private String userId;
 
-        @ApiModelProperty("계획된 메시지 동작시간")
-        @JsonProperty("sch_msg_time")
-        private Integer schMsgTime;
+        //@ApiModelProperty("계획된 메시지 동작시간")
+        //@JsonProperty("sch_msg_time")
+        //@JsonIgnore
+        //private Integer schMsgTime;
 
-        @ApiModelProperty("모듈전원 OFF 온도")
-        @JsonProperty("module_temp")
-        private Integer moduleTemp;
+        //@ApiModelProperty("모듈전원 OFF 온도")
+        //@JsonProperty("module_temp")
+        //@JsonIgnore
+        //private Integer moduleTemp;
 
         @ApiModelProperty("Fan 동작 기준온도")
-        @JsonProperty("fan_temp")
-        private Integer fanTemp;
+        @JsonProperty("fan_run_tmpr")
+        private Integer fanRunTmpr;
 
         @ApiModelProperty("Heater 동작 기준온도")
-        @JsonProperty("heater_temp")
-        private Integer heaterTemp;
+        @JsonProperty("hetr_run_tmpr")
+        private Integer hetrRunTmpr;
 
-        @ApiModelProperty("모듈장애 판단율")
-        @JsonProperty("module_fail")
-        private Integer moduleFail;
+        //@ApiModelProperty("모듈장애 판단율")
+        //@JsonProperty("module_fail")
+        //@JsonIgnore
+        //private Integer moduleFail;
 
-        @ApiModelProperty("재시도 횟수")
-        @JsonProperty("retry_count")
-        private Integer retryCount;
+        //@ApiModelProperty("재시도 횟수")
+        //@JsonProperty("retry_count")
+        //@JsonIgnore
+        //private Integer retryCount;
 
-        @ApiModelProperty("최대응답대기시간")
-        @JsonProperty("timeout")
-        private Integer timeOut;
+        //@ApiModelProperty("최대응답대기시간")
+        //@JsonProperty("timeout")
+        //@JsonIgnore
+        //private Integer timeOut;
+
+        @ApiModelProperty("ON 시각")
+        @JsonProperty("panl_on_time")
+        private String panlOnTime;
+
+        @ApiModelProperty("OFF 시각")
+        @JsonProperty("panl_off_time")
+        private String panlOffTime;
 
         @Builder
-        public VmsControlParamReq(String user_id, Integer sch_msg_time, Integer module_temp, Integer fan_temp, Integer heater_temp, Integer module_fail, Integer retry_count, Integer timeout) {
+//        public VmsControlParamReq(String user_id, Integer sch_msg_time, Integer module_temp, Integer fan_temp, Integer heater_temp, Integer module_fail, Integer retry_count, Integer timeout) {
+//            this.userId = user_id;
+//            this.schMsgTime = sch_msg_time;
+//            this.moduleTemp = module_temp;
+//            this.fanTemp = fan_temp;
+//            this.heaterTemp = heater_temp;
+//            this.moduleFail = module_fail;
+//            this.retryCount = retry_count;
+//            this.timeOut = timeout;
+//        }
+        public VmsControlParamReq(String user_id, Integer fan_run_tmpr, Integer hetr_run_tmpr, String panl_on_time, String panl_off_time) {
             this.userId = user_id;
-            this.schMsgTime = sch_msg_time;
-            this.moduleTemp = module_temp;
-            this.fanTemp = fan_temp;
-            this.heaterTemp = heater_temp;
-            this.moduleFail = module_fail;
-            this.retryCount = retry_count;
-            this.timeOut = timeout;
+            this.fanRunTmpr = fan_run_tmpr;
+            this.hetrRunTmpr = hetr_run_tmpr;
+            this.panlOnTime = panl_on_time;
+            this.panlOffTime = panl_off_time;
         }
 
     }

+ 28 - 5
src/main/java/com/its/op/service/its/vms/VmsControlService.java

@@ -28,7 +28,6 @@ public class VmsControlService {
      */
     @Transactional
     public void saveCtrlHs(TbVmsCtrlHsDto dto) {
-        //TbVmsCtrlHs entity = dto.toEntity();
         this.repoCtrlHs.insertHs(dto.getCtrlDt(), dto.getVmsCtlrNmbr(), dto.getCtrlType(), dto.getCtrlVal(), dto.getCtrlResult(), dto.getUserId());
     }
 
@@ -39,7 +38,7 @@ public class VmsControlService {
      * @return
      */
     public VmsControlDto.VmsControlRes controlReset(Long id, VmsControlDto.VmsControlReq req) {
-        log.error("controlReset: {}, {}", id, req);
+        log.warn("controlReset: {}, {}", id, req);
         boolean isSendMsg = this.vmsServerRequestSender.requestReset(id, req);
         saveCtrlHs(TbVmsCtrlHsDto.builder()
                 .ctrlDt(ItsUtils.getSysTime())
@@ -85,11 +84,12 @@ public class VmsControlService {
      */
     public VmsControlDto.VmsControlRes controlLuminance(Long id, VmsControlDto.VmsControlReq req) {
         boolean isSendMsg = this.vmsServerRequestSender.controlLuminance(id, req);
+        String cmdValue = String.format("%d,%d,%d,%d", req.getValue(), req.getCurrStep(), req.getWeekStep(), req.getNghtStep());
         saveCtrlHs(TbVmsCtrlHsDto.builder()
                 .ctrlDt(ItsUtils.getSysTime())
                 .vmsCtlrNmbr(id)
                 .ctrlType("V07")
-                .ctrlVal(String.valueOf(req.getValue()))
+                .ctrlVal(cmdValue)
                 .ctrlResult(isSendMsg ? 1 : 0)
                 .userId(req.getUserId())
                 .build());
@@ -107,13 +107,14 @@ public class VmsControlService {
      */
     @Transactional
     public VmsControlDto.VmsControlRes controlParam(Long id, VmsControlDto.VmsControlParamReq req) {
-        this.repo.updateParam(id, req.getSchMsgTime(), req.getModuleTemp(), req.getFanTemp(), req.getHeaterTemp(), req.getModuleFail());
+        this.repo.updateParam(id, req.getFanRunTmpr(), req.getHetrRunTmpr(), req.getPanlOnTime(), req.getPanlOffTime());
         boolean isSendMsg = this.vmsServerRequestSender.controlParam(id, req);
         saveCtrlHs(TbVmsCtrlHsDto.builder()
                 .ctrlDt(ItsUtils.getSysTime())
                 .vmsCtlrNmbr(id)
                 .ctrlType("V04")
-                .ctrlVal(String.format("%d.%d,%d,%d,%d,%d,%d", req.getSchMsgTime(), req.getModuleTemp(), req.getFanTemp(), req.getHeaterTemp(), req.getModuleFail(), req.getRetryCount(), req.getTimeOut()))
+                //.ctrlVal(String.format("%d.%d,%d,%d,%d,%d,%d", req.getSchMsgTime(), req.getModuleTemp(), req.getFanTemp(), req.getHeaterTemp(), req.getModuleFail(), req.getRetryCount(), req.getTimeOut()))
+                .ctrlVal(String.format("%d.%d,%s,%s", req.getFanRunTmpr(), req.getHetrRunTmpr(), req.getPanlOnTime(), req.getPanlOffTime()))
                 .ctrlResult(isSendMsg ? 1 : 0)
                 .userId(req.getUserId())
                 .build());
@@ -171,6 +172,28 @@ public class VmsControlService {
         return new VmsControlDto.VmsControlRes(9, "VMS 서버로 제어 명령 전송 중 알수 없는 오류가 발생 하였습니다.");
     }
 
+    /**
+     * VMS 폼 시나리오 즉시 다운로드
+     * @param ctlrNmbr
+     * @param req
+     * @return
+     */
+    public VmsControlDto.VmsControlRes controlImmScnrDnld(Long ctlrNmbr, VmsControlDto.VmsControlReq req) {
+        boolean isSendMsg = this.vmsServerRequestSender.controlImmScnrDnld(ctlrNmbr, req);
+        saveCtrlHs(TbVmsCtrlHsDto.builder()
+                .ctrlDt(ItsUtils.getSysTime())
+                .vmsCtlrNmbr(ctlrNmbr)
+                .ctrlType("V10")
+                .ctrlVal("Immediately Scenario Download")
+                .ctrlResult(isSendMsg ? 1 : 0)
+                .userId(req.getUserId())
+                .build());
+        if (isSendMsg) {
+            return new VmsControlDto.VmsControlRes(0, "success");
+        }
+        return new VmsControlDto.VmsControlRes(9, "VMS 서버로 제어 명령 전송 중 알수 없는 오류가 발생 하였습니다.");
+    }
+
     /**
      * VMS 제어기 이미지 심볼 리로드
      * @return

+ 41 - 23
src/main/java/com/its/op/xnetudp/protocol/CENTER_COMM_DEFINE.java

@@ -43,7 +43,7 @@ public class CENTER_COMM_DEFINE {
 	/*******************************************************************************
 	 * 프로토콜 OP CODE 정의
 	 *******************************************************************************/
-	public static final int INT_OP_TRAFFIC_CHANGE   	    = 0x01;        /* 교통정보가공완료 */
+	public static final int INT_OP_TRAFFIC_CHANGE   	    = 0x10;        /* 교통정보가공완료 */
 	public static final int INT_OP_NODELINK_CHANGE          = 0x11;        /* 노드링크 기반 정보 변경 */
 	public static final int INT_OP_FACILITY_CHANGE          = 0x12;        /* 시설물 기반 정보 변경 */
 	public static final int INT_OP_PG_STATE_REQ             = 0x13;        /* 공통사항, 프로그램 동작상태 요청 */
@@ -57,34 +57,25 @@ public class CENTER_COMM_DEFINE {
 	/*******************************************************************************
 	 * VMS Protocol OP Code
 	 *******************************************************************************/
-	public static final int INT_OP_VMS_STATE_REQ            = 0x01;        /* VMS 통신 서버, VMS 시설물 상태정보 요청 */
-	public static final int INT_OP_VMS_STATE_RES            = 0x02;        /* VMS 통신 서버, VMS 시설물 상태정보 전송 */
-	public static final int INT_OP_VMS_POWER_CTL            = 0x03;        /* VMS 통신 서버, VMS 전광판 On/Off 제어 */
-	public static final int INT_OP_VMS_LUMINANCE_CTL        = 0x04;        /* VMS 통신 서버, VMS 휘도 제어 */
+	public static final int INT_OP_VMS_STATE_REQ            = 0x21;        /* VMS 통신 서버, VMS 시설물 상태정보 요청 */
+	public static final int INT_OP_VMS_STATE_RES            = 0x22;        /* VMS 통신 서버, VMS 시설물 상태정보 전송 */
+	public static final int INT_OP_VMS_POWER_CTL            = 0x23;        /* VMS 통신 서버, VMS 전광판 On/Off 제어 */
+	public static final int INT_OP_VMS_LUMINANCE_CTL        = 0x24;        /* VMS 통신 서버, VMS 휘도 제어 */
 	//public static final int INT_OP_VMS_STATE_REQ            = 0x21;        /* VMS 통신 서버, VMS 시설물 상태정보 요청 */
 	//public static final int INT_OP_VMS_STATE_RES            = 0x22;        /* VMS 통신 서버, VMS 시설물 상태정보 전송 */
 	//public static final int INT_OP_VMS_POWER_CTL            = 0x23;        /* VMS 통신 서버, VMS 전광판 On/Off 제어 */
 	//public static final int INT_OP_VMS_LUMINANCE_CTL        = 0x24;        /* VMS 통신 서버, VMS 휘도 제어 */
 
-	public static final int INT_OP_VMS_PARA_SET             = 0x08;        /* VMS 통신 서버, VMS 환경설정정보 전송 */
-	//public static final int INT_OP_VMS_PARA_SET             = 0x25;        /* VMS 통신 서버, VMS 환경설정정보 전송 */
+	public static final int INT_OP_VMS_PARA_SET             = 0x25;        /* VMS 통신 서버, VMS 환경설정정보 전송 */
 	public static final int INT_OP_VMS_PARA_SET2            = 0x26;        /* VMS 통신 서버, VMS 환경설정정보 전송(For Pasig) */
-	//public static final int INT_OP_VMS_RESET                = 0x27;        /* VMS 통신 서버, VMS 제어기 리셋 전송 */
-	public static final int INT_OP_VMS_RESET                = 0x09;        /* VMS 통신 서버, VMS 제어기 리셋 전송 */
-	public static final int INT_OP_VMS_MODE                 = 0x0A;        /* VMS 통신 서버, VMS 운영모드 변경 */
-	//public static final int INT_OP_VMS_MODE                 = 0x28;        /* VMS 통신 서버, VMS 운영모드 변경 */
-	public static final int INT_OP_VMS_FORM_SAVE            = 0x0B;        /* VMS 통신 서버, 실시간 VMS 제공정보 저장 */
-	public static final int INT_OP_VMS_FORM_DOWNLOAD        = 0x0C;        /* VMS 통신 서버, 실시간 VMS 제공정보 다운로드 결과 저장 */
-	//public static final int INT_OP_VMS_FORM_DOWNLOAD        = 0x2A;        /* VMS 통신 서버, 실시간 VMS 제공정보 저장 */
-	//public static final int INT_OP_VMS_FORM_SAVE            = 0x29;        /* VMS 통신 서버, 실시간 VMS 제공정보 저장 */
-	public static final int INT_OP_VMS_IMAGE_SYMBOL         = 0x10;        /* VMS image symbol update */
-	//public static final int INT_OP_VMS_IMAGE_SYMBOL         = 0x2B;        /* VMS image symbol update */
-	public static final int INT_OP_VMS_IMAGE_TRAFFIC        = 0x11;        /* VMS image traffic update */
-	//public static final int INT_OP_VMS_IMAGE_TRAFFIC        = 0x2C;        /* VMS image traffic update */
-	public static final int INT_OP_VMS_FORM_UPDATE          = 0x12;        /* VMS form update */
-	//public static final int INT_OP_VMS_FORM_UPDATE          = 0x2D;        /* VMS form update */
-	public static final int INT_OP_VMS_IFSC_UPDATE          = 0x13;        /* VMS ifsc update */
-	//public static final int INT_OP_VMS_IFSC_UPDATE          = 0x2E;        /* VMS ifsc update */
+	public static final int INT_OP_VMS_RESET                = 0x27;        /* VMS 통신 서버, VMS 제어기 리셋 전송 */
+	public static final int INT_OP_VMS_MODE                 = 0x28;        /* VMS 통신 서버, VMS 운영모드 변경 */
+	public static final int INT_OP_VMS_FORM_SAVE            = 0x29;        /* VMS 통신 서버, 실시간 VMS 제공정보 저장 */
+	public static final int INT_OP_VMS_FORM_DOWNLOAD        = 0x2A;        /* VMS 통신 서버, 실시간 VMS 제공정보 저장 */
+	public static final int INT_OP_VMS_IMAGE_SYMBOL         = 0x2B;        /* VMS image symbol update */
+	public static final int INT_OP_VMS_IMAGE_TRAFFIC        = 0x2C;        /* VMS image traffic update */
+	public static final int INT_OP_VMS_FORM_UPDATE          = 0x2D;        /* VMS form update */
+	public static final int INT_OP_VMS_IFSC_UPDATE          = 0x2E;        /* VMS ifsc update */
 
 	public static final int INT_OP_VMS_PARAM_RES            = 0x2F;        /* VMS 통신 서버, VMS 시설물 파라미터정보 전송 ==> 목포시 싸인텔레콤 추가 */
 
@@ -93,6 +84,33 @@ public class CENTER_COMM_DEFINE {
 	public static final int INT_OP_VMS_IMMEDIATE_SCN_DNLD   = 0x32;        /* 폼 즉시 다운로드 OP Code */
 	public static final int INT_OP_VMS_PARAM_REQ            = 0x33;        /* VMS 파라미터 요청 */
 	public static final int INT_OP_VMS_DIRECT               = 0x34;        /* VMS Direct command */
+//	public static final int INT_OP_VMS_PARA_SET             = 0x08;        /* VMS 통신 서버, VMS 환경설정정보 전송 */
+//	//public static final int INT_OP_VMS_PARA_SET             = 0x25;        /* VMS 통신 서버, VMS 환경설정정보 전송 */
+//	public static final int INT_OP_VMS_PARA_SET2            = 0x26;        /* VMS 통신 서버, VMS 환경설정정보 전송(For Pasig) */
+//	//public static final int INT_OP_VMS_RESET                = 0x27;        /* VMS 통신 서버, VMS 제어기 리셋 전송 */
+//	public static final int INT_OP_VMS_RESET                = 0x09;        /* VMS 통신 서버, VMS 제어기 리셋 전송 */
+//	public static final int INT_OP_VMS_MODE                 = 0x0A;        /* VMS 통신 서버, VMS 운영모드 변경 */
+//	//public static final int INT_OP_VMS_MODE                 = 0x28;        /* VMS 통신 서버, VMS 운영모드 변경 */
+//	public static final int INT_OP_VMS_FORM_SAVE            = 0x0B;        /* VMS 통신 서버, 실시간 VMS 제공정보 저장 */
+//	public static final int INT_OP_VMS_FORM_DOWNLOAD        = 0x0C;        /* VMS 통신 서버, 실시간 VMS 제공정보 다운로드 결과 저장 */
+//	//public static final int INT_OP_VMS_FORM_DOWNLOAD        = 0x2A;        /* VMS 통신 서버, 실시간 VMS 제공정보 저장 */
+//	//public static final int INT_OP_VMS_FORM_SAVE            = 0x29;        /* VMS 통신 서버, 실시간 VMS 제공정보 저장 */
+//	public static final int INT_OP_VMS_IMAGE_SYMBOL         = 0x10;        /* VMS image symbol update */
+//	//public static final int INT_OP_VMS_IMAGE_SYMBOL         = 0x2B;        /* VMS image symbol update */
+//	public static final int INT_OP_VMS_IMAGE_TRAFFIC        = 0x11;        /* VMS image traffic update */
+//	//public static final int INT_OP_VMS_IMAGE_TRAFFIC        = 0x2C;        /* VMS image traffic update */
+//	public static final int INT_OP_VMS_FORM_UPDATE          = 0x12;        /* VMS form update */
+//	//public static final int INT_OP_VMS_FORM_UPDATE          = 0x2D;        /* VMS form update */
+//	public static final int INT_OP_VMS_IFSC_UPDATE          = 0x13;        /* VMS ifsc update */
+//	//public static final int INT_OP_VMS_IFSC_UPDATE          = 0x2E;        /* VMS ifsc update */
+//
+//	public static final int INT_OP_VMS_PARAM_RES            = 0x2F;        /* VMS 통신 서버, VMS 시설물 파라미터정보 전송 ==> 목포시 싸인텔레콤 추가 */
+//
+//	public static final int INT_OP_VMS_COMMON               = 0x30;        /* 신규로 생성될 명령어를 처리하기 위한 OP Code */
+//	public static final int INT_OP_VMS_COMMON_EXT           = 0x31;        /* 신규로 생성될 명령어를 처리하기 위한 OP Code */
+//	public static final int INT_OP_VMS_IMMEDIATE_SCN_DNLD   = 0x32;        /* 폼 즉시 다운로드 OP Code */
+//	public static final int INT_OP_VMS_PARAM_REQ            = 0x33;        /* VMS 파라미터 요청 */
+//	public static final int INT_OP_VMS_DIRECT               = 0x34;        /* VMS Direct command */
 
 
 	/*******************************************************************************

+ 7 - 7
src/main/java/com/its/op/xnetudp/protocol/CENTER_COMM_MESSAGE.java

@@ -20,7 +20,7 @@ public class CENTER_COMM_MESSAGE {
 	private byte currentFrame;
 	private byte msgSeq;		// reserved
 	private byte opCode;
-	private int  length;		// 4byte unsigned short
+	private short length;		// 2byte unsigned short
 	
 	private byte[] body;
 
@@ -34,7 +34,7 @@ public class CENTER_COMM_MESSAGE {
 		this.currentFrame = 1;
 		this.msgSeq       = msgSeq;
 		this.opCode       = (byte)opCode;
-		this.length       = length;
+		this.length       = (short)length;
 	}
 
 	public CENTER_COMM_MESSAGE(byte[] buffer, InetSocketAddress inetSocketAddress) {
@@ -42,7 +42,7 @@ public class CENTER_COMM_MESSAGE {
 		this.sender = inetSocketAddress;
 
 		ByteBuffer byteBuffer = ByteBuffer.wrap(buffer);
-		byteBuffer.order(ByteOrder.BIG_ENDIAN);
+		byteBuffer.order(ByteOrder.LITTLE_ENDIAN);
 
 		this.sendId       = byteBuffer.get();
 		this.recvId       = byteBuffer.get();
@@ -50,8 +50,8 @@ public class CENTER_COMM_MESSAGE {
 		this.currentFrame = byteBuffer.get();
 		this.msgSeq       = byteBuffer.get();
 		this.opCode       = byteBuffer.get();
-		int  length       = byteBuffer.getInt();
-		this.length = byteBuffer.array().length - 10;
+		short length      = byteBuffer.getShort();
+		this.length       = (short)(byteBuffer.array().length - 8);
 		if (this.length > 0) {
 			this.body = new byte[this.length];
 			byteBuffer.get(this.body);
@@ -79,10 +79,10 @@ public class CENTER_COMM_MESSAGE {
 		this.opCode = opCode;
 	}
 	
-	public int getLength() {
+	public short getLength() {
 		return this.length;
 	}
-	public void setLength(int length) {
+	public void setLength(short length) {
 		this.length = length;
 	}
 	public InetSocketAddress getSender() {

+ 1 - 1
src/main/java/com/its/op/xnetudp/protocol/CENTER_PG_STATE_RES.java

@@ -34,7 +34,7 @@ public class CENTER_PG_STATE_RES extends CENTER_COMM_MESSAGE {
 	@Override
 	public ByteBuffer getBuffer() {
 		int pktSize = STATE_RES_HEAD_SIZE;
-		setLength(pktSize);
+		setLength((short)pktSize);
 
 		ByteBuffer byteBuffer = ByteBuffer.allocate(CENTER_HEADER_SIZE + getLength());
 		byteBuffer.order(ByteOrder.LITTLE_ENDIAN);

+ 25 - 22
src/main/java/com/its/op/xnetudp/protocol/CENTER_VMS_COMM_MESSAGE.java

@@ -10,20 +10,28 @@ import java.nio.ByteOrder;
 @Slf4j
 public class CENTER_VMS_COMM_MESSAGE {
 
-	public static int CENTER_HEADER_SIZE = 10;
+	public static int CENTER_HEADER_SIZE = 8;
 
 	private InetSocketAddress sender;
 
+//	private byte sendId;
+//	private byte recvId;
+//	private byte totalFrame;
+//	private byte currentFrame;
+//	private byte reserved;		// reserved
+//	private byte opCode;
+//	private int  length;		// 4byte unsigned short
+//
+//	private byte intOpCode;
+//	private byte intMsgSeq;
 	private byte sendId;
 	private byte recvId;
 	private byte totalFrame;
 	private byte currentFrame;
-	private byte reserved;		// reserved
+	private byte msgSeq;
 	private byte opCode;
-	private int  length;		// 4byte unsigned short
+	private short length;		// 2byte unsigned short
 
-	private byte intOpCode;
-	private byte intMsgSeq;
 	private byte[] body;
 
 	public CENTER_VMS_COMM_MESSAGE() {
@@ -33,11 +41,9 @@ public class CENTER_VMS_COMM_MESSAGE {
 		this.recvId       = (byte)recvId;
 		this.totalFrame   = 1;
 		this.currentFrame = 1;
-		this.reserved     = 0x00;
-		this.opCode       = (byte)0xFF;
-		this.length       = length+2;
-		this.intOpCode    = (byte)opCode;
-		this.intMsgSeq    = msgSeq;
+		this.length       = (short)(length+0);
+		this.opCode       = (byte)opCode;
+		this.msgSeq       = msgSeq;
 	}
 
 	public CENTER_VMS_COMM_MESSAGE(byte[] buffer, InetSocketAddress inetSocketAddress) {
@@ -45,18 +51,16 @@ public class CENTER_VMS_COMM_MESSAGE {
 		this.sender = inetSocketAddress;
 
 		ByteBuffer byteBuffer = ByteBuffer.wrap(buffer);
-		byteBuffer.order(ByteOrder.BIG_ENDIAN);
+		byteBuffer.order(ByteOrder.LITTLE_ENDIAN);
 
 		this.sendId       = byteBuffer.get();
 		this.recvId       = byteBuffer.get();
 		this.totalFrame   = byteBuffer.get();
 		this.currentFrame = byteBuffer.get();
-		this.reserved     = byteBuffer.get();
+		this.msgSeq       = byteBuffer.get();
 		this.opCode       = byteBuffer.get();
-		int  length       = byteBuffer.getInt();
-		this.intOpCode    = byteBuffer.get();
-		this.intMsgSeq    = byteBuffer.get();
-		this.length = byteBuffer.array().length - 10;
+		int  length       = byteBuffer.getShort();
+		//this.length       = (short)(byteBuffer.array().length - 8);
 		if (this.length > 0) {
 			this.body = new byte[this.length];
 			byteBuffer.get(this.body);
@@ -68,6 +72,7 @@ public class CENTER_VMS_COMM_MESSAGE {
 				log.error("VMS PACKET: {}", SysUtils.byteArrayToHex(buffer));
 			}
 		}
+		this.length = this.length;
 	}
 
 	public String getSenderIp() {
@@ -84,11 +89,11 @@ public class CENTER_VMS_COMM_MESSAGE {
 		this.opCode = opCode;
 	}
 	
-	public int getLength() {
+	public short getLength() {
 		return this.length;
 	}
 	public void setLength(int length) {
-		this.length = length;
+		this.length = (short)length;
 	}
 	public InetSocketAddress getSender() {
 		return sender;
@@ -130,14 +135,12 @@ public class CENTER_VMS_COMM_MESSAGE {
 		this.currentFrame = currentFrame;
 	}
 
-	public byte getReserved() { return reserved; }
 	public byte getMsgSeq() {
-		return intMsgSeq;
+		return msgSeq;
 	}
 
-	public byte getIntOpCode() { return intOpCode; }
 	public void setMsgSeq(byte msgSeq) {
-		this.intMsgSeq = msgSeq;
+		this.msgSeq = msgSeq;
 	}
 
 	public byte[] getBody() {

+ 11 - 13
src/main/java/com/its/op/xnetudp/protocol/CENTER_VMS_REQ_COMMON.java

@@ -24,35 +24,33 @@ public class CENTER_VMS_REQ_COMMON extends CENTER_VMS_COMM_MESSAGE {
 
 	@Override
 	public ByteBuffer getBuffer() {
-		int pktSize = CENTER_COMM_DEFINE.INT_VMS_MAX_DATETIME + CENTER_COMM_DEFINE.INT_VMS_MAX_ID + CENTER_COMM_DEFINE.INT_VMS_MAX_OPER_ID + 2;
+		int pktSize = CENTER_COMM_DEFINE.INT_VMS_MAX_DATETIME + CENTER_COMM_DEFINE.INT_VMS_MAX_OPER_ID + 4;
 		if (null != this.cmd) {
 			pktSize++;
 		}
 
 		setLength(pktSize);
-
 		ByteBuffer byteBuffer = ByteBuffer.allocate(CENTER_HEADER_SIZE + getLength());
-		byteBuffer.order(ByteOrder.BIG_ENDIAN);
+		byteBuffer.order(ByteOrder.LITTLE_ENDIAN);
 
 		byteBuffer.put(getSendId());
 		byteBuffer.put(getRecvId());
 		byteBuffer.put(getTotalFrame());
 		byteBuffer.put(getCurrentFrame());
-		byteBuffer.put(getReserved());
-		byteBuffer.put(getOpCode());
-		byteBuffer.putInt(getLength());
-		byteBuffer.put(getIntOpCode());
 		byteBuffer.put(getMsgSeq());
-
+		byteBuffer.put(getOpCode());
+		byteBuffer.putShort(getLength());
 		byte[] cmdTimeArr = new byte[CENTER_COMM_DEFINE.INT_VMS_MAX_DATETIME];
-		byte[] vmsIdArr = new byte[CENTER_COMM_DEFINE.INT_VMS_MAX_ID];
-		byte[] operIdArr = new byte[CENTER_COMM_DEFINE.INT_VMS_MAX_OPER_ID];
 		SysUtils.copyStringToByteArray(cmdTimeArr, cmdTimeArr.length, this.cmdTime);
-		SysUtils.copyStringToByteArray(vmsIdArr, vmsIdArr.length, String.valueOf(this.vmsCtlrNmbr));
-		SysUtils.copyStringToByteArray(operIdArr, operIdArr.length, this.operId);
 		byteBuffer.put(cmdTimeArr);
-		byteBuffer.put(vmsIdArr);
+
+		byte[] operIdArr = new byte[CENTER_COMM_DEFINE.INT_VMS_MAX_OPER_ID];
+		SysUtils.copyStringToByteArray(operIdArr, operIdArr.length, this.operId);
 		byteBuffer.put(operIdArr);
+
+		//byte[] vmsIdArr = new byte[CENTER_COMM_DEFINE.INT_VMS_MAX_ID];
+		//SysUtils.copyStringToByteArray(vmsIdArr, vmsIdArr.length, String.valueOf(this.vmsCtlrNmbr));
+		byteBuffer.putInt(this.vmsCtlrNmbr.intValue());
 		if (null != this.cmd) {
 			byteBuffer.put(this.cmd);
 		}

+ 57 - 0
src/main/java/com/its/op/xnetudp/protocol/CENTER_VMS_REQ_IMM_SCNR_DNLD.java

@@ -0,0 +1,57 @@
+package com.its.op.xnetudp.protocol;
+
+import com.its.op.dto.its.vms.VmsControlDto;
+import com.its.utils.SysUtils;
+
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+
+public class CENTER_VMS_REQ_IMM_SCNR_DNLD extends CENTER_VMS_REQ_COMMON {
+
+	private byte Count;
+	private Long vmsCtlrNmbr;
+
+	public CENTER_VMS_REQ_IMM_SCNR_DNLD(Long id, VmsControlDto.VmsControlReq req) {
+		super(CENTER_COMM_DEFINE.INT_OP_VMS_IMMEDIATE_SCN_DNLD, 0x80, 0, id, req.getUserId(), null);
+		this.Count = 1;
+		this.vmsCtlrNmbr = id;
+	}
+
+	@Override
+	public ByteBuffer getBuffer() {
+		int pktSize = CENTER_COMM_DEFINE.INT_VMS_MAX_DATETIME + CENTER_COMM_DEFINE.INT_VMS_MAX_OPER_ID + 1 + 4;
+
+		setLength(pktSize);
+
+		ByteBuffer byteBuffer = ByteBuffer.allocate(CENTER_HEADER_SIZE + getLength());
+		byteBuffer.order(ByteOrder.LITTLE_ENDIAN);
+
+		byteBuffer.put(getSendId());
+		byteBuffer.put(getRecvId());
+		byteBuffer.put(getTotalFrame());
+		byteBuffer.put(getCurrentFrame());
+		byteBuffer.put(getMsgSeq());
+		byteBuffer.put(getOpCode());
+		byteBuffer.putShort(getLength());
+
+		byte[] cmdTimeArr = new byte[CENTER_COMM_DEFINE.INT_VMS_MAX_DATETIME];
+		byte[] operIdArr = new byte[CENTER_COMM_DEFINE.INT_VMS_MAX_OPER_ID];
+
+		SysUtils.copyStringToByteArray(cmdTimeArr, cmdTimeArr.length, getCmdTime());
+		SysUtils.copyStringToByteArray(operIdArr, operIdArr.length, getOperId());
+
+		byteBuffer.put(cmdTimeArr);
+		byteBuffer.put(operIdArr);
+
+		byteBuffer.put(this.Count);
+
+		//byte[] vmsIdArr = new byte[CENTER_COMM_DEFINE.INT_VMS_MAX_ID];
+		//SysUtils.copyStringToByteArray(vmsIdArr, vmsIdArr.length, String.valueOf(getVmsCtlrNmbr()));
+		//byteBuffer.put(vmsIdArr);
+		byteBuffer.putInt(getVmsCtlrNmbr().intValue());
+
+		return byteBuffer;
+
+	}
+
+}

+ 51 - 3
src/main/java/com/its/op/xnetudp/protocol/CENTER_VMS_REQ_LUMINANCE.java

@@ -1,8 +1,56 @@
 package com.its.op.xnetudp.protocol;
 
+import com.its.utils.SysUtils;
+
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+
 public class CENTER_VMS_REQ_LUMINANCE extends CENTER_VMS_REQ_COMMON {
 
-	public CENTER_VMS_REQ_LUMINANCE(Long id, String userId, Byte value) {
-		super(CENTER_COMM_DEFINE.INT_OP_VMS_LUMINANCE_CTL, 0x30, 0, id, userId, value);
+	byte brghMode;
+	byte brghCurrStep;
+	byte brghWeekStep;
+	byte brghNghtStep;
+
+	public CENTER_VMS_REQ_LUMINANCE(Long id, String userId, byte brghMode, byte brghCurrStep, byte brghWeekStep, byte brghNghtStep) {
+		super(CENTER_COMM_DEFINE.INT_OP_VMS_LUMINANCE_CTL, 0x30, 0, id, userId, null);
+		this.brghMode = brghMode;
+		this.brghCurrStep = brghCurrStep;
+		this.brghWeekStep = brghWeekStep;
+		this.brghNghtStep = brghNghtStep;
+	}
+
+	@Override
+	public ByteBuffer getBuffer() {
+		int pktSize = CENTER_COMM_DEFINE.INT_VMS_MAX_DATETIME + CENTER_COMM_DEFINE.INT_VMS_MAX_OPER_ID + 4 + 1 + 1 + 1 + 1;
+
+		setLength(pktSize);
+		ByteBuffer byteBuffer = ByteBuffer.allocate(CENTER_HEADER_SIZE + getLength());
+		byteBuffer.order(ByteOrder.LITTLE_ENDIAN);
+
+		byteBuffer.put(getSendId());
+		byteBuffer.put(getRecvId());
+		byteBuffer.put(getTotalFrame());
+		byteBuffer.put(getCurrentFrame());
+		byteBuffer.put(getMsgSeq());
+		byteBuffer.put(getOpCode());
+		byteBuffer.putShort(getLength());
+		byte[] cmdTimeArr = new byte[CENTER_COMM_DEFINE.INT_VMS_MAX_DATETIME];
+		SysUtils.copyStringToByteArray(cmdTimeArr, cmdTimeArr.length, getCmdTime());
+		byteBuffer.put(cmdTimeArr);
+
+		byte[] operIdArr = new byte[CENTER_COMM_DEFINE.INT_VMS_MAX_OPER_ID];
+		SysUtils.copyStringToByteArray(operIdArr, operIdArr.length, getOperId());
+		byteBuffer.put(operIdArr);
+
+		//byte[] vmsIdArr = new byte[CENTER_COMM_DEFINE.INT_VMS_MAX_ID];
+		//SysUtils.copyStringToByteArray(vmsIdArr, vmsIdArr.length, String.valueOf(this.vmsCtlrNmbr));
+		byteBuffer.putInt(getVmsCtlrNmbr().intValue());
+
+		byteBuffer.put(this.brghMode);
+		byteBuffer.put(this.brghCurrStep);
+		byteBuffer.put(this.brghWeekStep);
+		byteBuffer.put(this.brghNghtStep);
+		return byteBuffer;
 	}
-}
+}

+ 3 - 5
src/main/java/com/its/op/xnetudp/protocol/CENTER_VMS_REQ_NOTIFY.java

@@ -19,17 +19,15 @@ public class CENTER_VMS_REQ_NOTIFY extends CENTER_VMS_COMM_MESSAGE {
 		setLength(pktSize);
 
 		ByteBuffer byteBuffer = ByteBuffer.allocate(CENTER_HEADER_SIZE + getLength());
-		byteBuffer.order(ByteOrder.BIG_ENDIAN);
+		byteBuffer.order(ByteOrder.LITTLE_ENDIAN);
 
 		byteBuffer.put(getSendId());
 		byteBuffer.put(getRecvId());
 		byteBuffer.put(getTotalFrame());
 		byteBuffer.put(getCurrentFrame());
-		byteBuffer.put(getReserved());
-		byteBuffer.put(getOpCode());
-		byteBuffer.putInt(getLength());
-		byteBuffer.put(getIntOpCode());
 		byteBuffer.put(getMsgSeq());
+		byteBuffer.put(getOpCode());
+		byteBuffer.putShort(getLength());
 
 		return byteBuffer;
 

+ 13 - 10
src/main/java/com/its/op/xnetudp/protocol/CENTER_VMS_REQ_OPER_MODE.java

@@ -9,10 +9,14 @@ import java.nio.ByteOrder;
 
 public class CENTER_VMS_REQ_OPER_MODE extends CENTER_VMS_REQ_COMMON {
 
+	private byte Count;
+	private Long vmsCtlrNmbr;
 	private byte Mode;
 
 	public CENTER_VMS_REQ_OPER_MODE(Long id, VmsControlDto.VmsControlOprModeReq req) {
 		super(CENTER_COMM_DEFINE.INT_OP_VMS_MODE, 0x50, 0, id, req.getUserId(), null);
+		this.Count = 1;
+		this.vmsCtlrNmbr = id;
 		if (StringUtils.equals("F", req.getOprMode())) {
 			this.Mode = 'F';
 		}
@@ -26,22 +30,20 @@ public class CENTER_VMS_REQ_OPER_MODE extends CENTER_VMS_REQ_COMMON {
 
 	@Override
 	public ByteBuffer getBuffer() {
-		int pktSize = CENTER_COMM_DEFINE.INT_VMS_MAX_DATETIME + CENTER_COMM_DEFINE.INT_VMS_MAX_ID + CENTER_COMM_DEFINE.INT_VMS_MAX_OPER_ID + 2 + 2;
+		int pktSize = CENTER_COMM_DEFINE.INT_VMS_MAX_DATETIME + CENTER_COMM_DEFINE.INT_VMS_MAX_OPER_ID + 1 + 4 + 1;
 
 		setLength(pktSize);
 
 		ByteBuffer byteBuffer = ByteBuffer.allocate(CENTER_HEADER_SIZE + getLength());
-		byteBuffer.order(ByteOrder.BIG_ENDIAN);
+		byteBuffer.order(ByteOrder.LITTLE_ENDIAN);
 
 		byteBuffer.put(getSendId());
 		byteBuffer.put(getRecvId());
 		byteBuffer.put(getTotalFrame());
 		byteBuffer.put(getCurrentFrame());
-		byteBuffer.put(getReserved());
-		byteBuffer.put(getOpCode());
-		byteBuffer.putInt(getLength());
-		byteBuffer.put(getIntOpCode());
 		byteBuffer.put(getMsgSeq());
+		byteBuffer.put(getOpCode());
+		byteBuffer.putShort(getLength());
 
 		byte[] cmdTimeArr = new byte[CENTER_COMM_DEFINE.INT_VMS_MAX_DATETIME];
 		byte[] operIdArr = new byte[CENTER_COMM_DEFINE.INT_VMS_MAX_OPER_ID];
@@ -52,11 +54,12 @@ public class CENTER_VMS_REQ_OPER_MODE extends CENTER_VMS_REQ_COMMON {
 		byteBuffer.put(cmdTimeArr);
 		byteBuffer.put(operIdArr);
 
-		byteBuffer.put((byte)1);
+		byteBuffer.put(this.Count);
 
-		byte[] vmsIdArr = new byte[CENTER_COMM_DEFINE.INT_VMS_MAX_ID];
-		SysUtils.copyStringToByteArray(vmsIdArr, vmsIdArr.length, String.valueOf(getVmsCtlrNmbr()));
-		byteBuffer.put(vmsIdArr);
+		//byte[] vmsIdArr = new byte[CENTER_COMM_DEFINE.INT_VMS_MAX_ID];
+		//SysUtils.copyStringToByteArray(vmsIdArr, vmsIdArr.length, String.valueOf(getVmsCtlrNmbr()));
+		//byteBuffer.put(vmsIdArr);
+		byteBuffer.putInt(this.vmsCtlrNmbr.intValue());
 		byteBuffer.put(this.Mode);
 
 		return byteBuffer;

+ 27 - 30
src/main/java/com/its/op/xnetudp/protocol/CENTER_VMS_REQ_PARAM.java

@@ -8,60 +8,57 @@ import java.nio.ByteOrder;
 
 public class CENTER_VMS_REQ_PARAM extends CENTER_VMS_REQ_COMMON {
 
-	private int  SchMsgTime;                           /* 계획된 메시지 동작시간 */
-	private byte ModuleTemp;                           /* 모듈전원 OFF 온도 */
-	private byte FanTemp;                              /* Fan동작 기준온도 */
-	private byte HeaterTemp;                           /* Heater동작 기준온도 */
-	private byte ModuleFail;                           /* 모듈장애 판단율 */
-	private byte RetryCount;                           /* 재시도 횟수 */
-	private int  TimeOut;                              /* 최대응답대기시간 */
+	private Long vmsCtlrNmbr;
+	private byte FanRunTmpr;                              /* Fan동작 기준온도 */
+	private byte HetrRunTmpr;                           /* Heater동작 기준온도 */
+	private String DispStrTm;
+	private String DispEndTm;
 
 	public CENTER_VMS_REQ_PARAM(Long id, VmsControlDto.VmsControlParamReq req) {
 		super(CENTER_COMM_DEFINE.INT_OP_VMS_PARA_SET, 0x40, 0, id, req.getUserId(), null);
-		this.SchMsgTime = req.getSchMsgTime();
-		this.ModuleTemp = (byte)req.getModuleTemp().intValue();
-		this.FanTemp = (byte)req.getFanTemp().intValue();
-		this.HeaterTemp = (byte)req.getHeaterTemp().intValue();
-		this.ModuleFail = (byte)req.getModuleFail().intValue();
-		this.RetryCount = (byte)req.getRetryCount().intValue();
-		this.TimeOut = req.getTimeOut();
+
+		this.vmsCtlrNmbr = id;
+		this.FanRunTmpr = (byte)req.getFanRunTmpr().intValue();
+		this.HetrRunTmpr = (byte)req.getHetrRunTmpr().intValue();
+		this.DispStrTm = req.getPanlOnTime();
+		this.DispEndTm = req.getPanlOffTime();
 	}
 
 	@Override
 	public ByteBuffer getBuffer() {
-		int pktSize = CENTER_COMM_DEFINE.INT_VMS_MAX_DATETIME + CENTER_COMM_DEFINE.INT_VMS_MAX_ID + CENTER_COMM_DEFINE.INT_VMS_MAX_OPER_ID + 2 + 13;
+		int pktSize = CENTER_COMM_DEFINE.INT_VMS_MAX_DATETIME + CENTER_COMM_DEFINE.INT_VMS_MAX_OPER_ID + 4 + 1 + 1 + 4 + 4;
 
 		setLength(pktSize);
 
 		ByteBuffer byteBuffer = ByteBuffer.allocate(CENTER_HEADER_SIZE + getLength());
-		byteBuffer.order(ByteOrder.BIG_ENDIAN);
+		byteBuffer.order(ByteOrder.LITTLE_ENDIAN);
 
 		byteBuffer.put(getSendId());
 		byteBuffer.put(getRecvId());
 		byteBuffer.put(getTotalFrame());
 		byteBuffer.put(getCurrentFrame());
-		byteBuffer.put(getReserved());
-		byteBuffer.put(getOpCode());
-		byteBuffer.putInt(getLength());
-		byteBuffer.put(getIntOpCode());
 		byteBuffer.put(getMsgSeq());
+		byteBuffer.put(getOpCode());
+		byteBuffer.putShort(getLength());
 
 		byte[] cmdTimeArr = new byte[CENTER_COMM_DEFINE.INT_VMS_MAX_DATETIME];
-		byte[] vmsIdArr = new byte[CENTER_COMM_DEFINE.INT_VMS_MAX_ID];
 		byte[] operIdArr = new byte[CENTER_COMM_DEFINE.INT_VMS_MAX_OPER_ID];
 		SysUtils.copyStringToByteArray(cmdTimeArr, cmdTimeArr.length, getCmdTime());
-		SysUtils.copyStringToByteArray(vmsIdArr, vmsIdArr.length, String.valueOf(getVmsCtlrNmbr()));
 		SysUtils.copyStringToByteArray(operIdArr, operIdArr.length, getOperId());
 		byteBuffer.put(cmdTimeArr);
-		byteBuffer.put(vmsIdArr);
 		byteBuffer.put(operIdArr);
-		byteBuffer.putInt(this.SchMsgTime);
-		byteBuffer.put(this.ModuleTemp);
-		byteBuffer.put(this.FanTemp);
-		byteBuffer.put(this.HeaterTemp);
-		byteBuffer.put(this.ModuleFail);
-		byteBuffer.put(this.RetryCount);
-		byteBuffer.putInt(this.TimeOut);
+
+		byteBuffer.putInt(this.vmsCtlrNmbr.intValue());
+		byteBuffer.put(this.FanRunTmpr);
+		byteBuffer.put(this.HetrRunTmpr);
+
+		byte[] panlOnTime = new byte[4];
+		SysUtils.copyStringToByteArray(panlOnTime, panlOnTime.length, this.DispStrTm);
+		byteBuffer.put(panlOnTime);
+
+		byte[] panlOffTime = new byte[4];
+		SysUtils.copyStringToByteArray(panlOffTime, panlOffTime.length, this.DispEndTm);
+		byteBuffer.put(panlOffTime);
 
 		return byteBuffer;
 

+ 6 - 2
src/main/java/com/its/op/xnetudp/protocol/CENTER_VMS_REQ_RESET.java

@@ -1,8 +1,12 @@
 package com.its.op.xnetudp.protocol;
 
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
 public class CENTER_VMS_REQ_RESET extends CENTER_VMS_REQ_COMMON {
 
-	public CENTER_VMS_REQ_RESET(Long id, String userId) {
-		super(CENTER_COMM_DEFINE.INT_OP_VMS_RESET, 0x20, 0, id, userId, null);
+	public CENTER_VMS_REQ_RESET(Long id, String userId, byte value) {
+		super(CENTER_COMM_DEFINE.INT_OP_VMS_RESET, 0x20, 0, id, userId, value);
+		log.error("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX: {}", value);
 	}
 }

+ 19 - 2
src/main/java/com/its/op/xnetudp/service/VmsServerRequestSender.java

@@ -79,7 +79,8 @@ public class VmsServerRequestSender {
      */
     public boolean requestReset(Long id, VmsControlDto.VmsControlReq req) {
         log.info("requestReset: {}, {}", id, req);
-        CENTER_VMS_REQ_RESET commMsg = new CENTER_VMS_REQ_RESET(id, req.getUserId());
+        // 0: 소프트웨어리셋, 1: 하드웨어리셋
+        CENTER_VMS_REQ_RESET commMsg = new CENTER_VMS_REQ_RESET(id, req.getUserId(), (byte)(req.getValue() == 0 ? 0x00 : 0x01));
         run(commMsg.getBuffer());
         return true;
     }
@@ -105,7 +106,11 @@ public class VmsServerRequestSender {
      */
     public boolean controlLuminance(Long id, VmsControlDto.VmsControlReq req) {
         log.info("controlLuminance: {}, {}", id, req);
-        CENTER_VMS_REQ_LUMINANCE commMsg = new CENTER_VMS_REQ_LUMINANCE(id, req.getUserId(), (byte)req.getValue().intValue());
+        byte brghMode = req.getValue().byteValue();
+        byte brghCurrStep = req.getCurrStep().byteValue();
+        byte brghWeekStep = req.getWeekStep().byteValue();
+        byte brghNghtStep = req.getNghtStep().byteValue();
+        CENTER_VMS_REQ_LUMINANCE commMsg = new CENTER_VMS_REQ_LUMINANCE(id, req.getUserId(), brghMode, brghCurrStep, brghWeekStep, brghNghtStep);
         run(commMsg.getBuffer());
         return true;
     }
@@ -146,6 +151,18 @@ public class VmsServerRequestSender {
         return true;
     }
 
+    /**
+     * VNS 시나리오 즉시 다운로드
+     * @param ctlrNmbr
+     * @return
+     */
+    public boolean controlImmScnrDnld(Long ctlrNmbr, VmsControlDto.VmsControlReq req) {
+        log.info("controlImmScnrDnld: {}, {}", ctlrNmbr, req);
+        CENTER_VMS_REQ_IMM_SCNR_DNLD commMsg = new CENTER_VMS_REQ_IMM_SCNR_DNLD(ctlrNmbr, req);
+        run(commMsg.getBuffer());
+        return true;
+    }
+
     /**
      * VMS 서버 Notify 요청
      * @param opCode

+ 51 - 51
src/main/java/com/its/op/xnetudp/thread/CenterCommServerReceiver.java

@@ -63,12 +63,12 @@ public class CenterCommServerReceiver {
             //log.error("VMS PACKET: {}", SysUtils.byteArrayToHex(data.getBody()));
             if (data.getLength() > 0) {
                 ByteBuffer byteBuffer = ByteBuffer.wrap(data.getBody());
-                byteBuffer.order(ByteOrder.BIG_ENDIAN);
+                byteBuffer.order(ByteOrder.LITTLE_ENDIAN);
 
                 byte[] vmsId;
                 byte count;
-                byte opCode = byteBuffer.get();
-                byte msgSeq = byteBuffer.get();
+                byte opCode = data.getOpCode();
+                byte msgSeq = data.getMsgSeq();
                 log.info("OP CODE: {}, MsgSeq: {}", opCode, msgSeq);
                 switch(opCode) {
                     case CENTER_COMM_DEFINE.INT_OP_VMS_FORM_SAVE:
@@ -131,54 +131,54 @@ public class CenterCommServerReceiver {
                         short module = byteBuffer.getShort();
                         count = byteBuffer.get();
                         log.info("INT_OP_VMS_STATE_RES: total({}), error({}), normal({}), module({}), count: {} EA.", total, error, normal, module, count);
-                        for (int ii = 0; ii < count; ii++) {
-                            vmsId = new byte[CENTER_COMM_DEFINE.INT_VMS_MAX_ID];
-                            byteBuffer.get(vmsId);
-                            byte  OprMode = byteBuffer.get();                                      /* VMS운영모드, 0:auto, 1:Fix */
-                            byte  Comm = byteBuffer.get();                                         /* 유선통신상태, 0:정상 1:장애 */
-                            byte  Wcomm = byteBuffer.get();                                        /* 무선통신상태, 0:정상 1:장애 */
-
-                            byte  DoorStatus = byteBuffer.get();                                   /* 도어상태정보코드,     0:열림 1:닫힘 2:알수없음 */
-                            byte  ModulePowerStatus = byteBuffer.get();                            /* 모듈전원상태정보코드, 0:켜짐 1:꺼짐 2:알수없음 */
-                            short BodyTemp = byteBuffer.getShort();                                     /* 함체온도값(℃), 범위(-128~127) */
-                            byte  LuminanceStatus = byteBuffer.get();                              /* 화면의 밝기값 (최대 휘도값을 100으로 했을 때의 백분율 값), 범위(0~100) */
-                            byte  FanStatus = byteBuffer.get();                                    /* Fan 동작상태정보코드,    0:켜짐, 1:꺼짐 2:알수없음 */
-                            byte  HeaterStatus = byteBuffer.get();                                 /* Heater 동작상태정보코드, 0:켜짐, 1:꺼짐 2:알수없음 */
-
-                            byte  ExternalLightStatus = byteBuffer.get();                          /* 선택 외부조명 동작상태정보코드 0:켜짐, 1:꺼짐, 2:자동(공단은 미사용) */
-                            byte  AlarmLightStatus = byteBuffer.get();                             /* 선택 경광등 동작상태정보코드   0:켜짐, 1:꺼짐 */
-                            byte  SpeakerStatus = byteBuffer.get();                                /* 선택 스피커 동작상태정보코드   0:켜짐, 1:꺼짐 */
-                            byte[] ControllerCurrentTime  = new byte[CENTER_COMM_DEFINE.INT_VMS_MAX_DATETIME];
-                            byteBuffer.get(ControllerCurrentTime);
-                            byte  Voltage = byteBuffer.get();                                      /* 전압, 범위(0~255), 사용안함 */
-
-                            byte  ModuleState = byteBuffer.get();                                  /* 모듈 상태, 0:정상 1:장애 2:알수없음 */
-                            byte  ModuleHorizontal = byteBuffer.get();                             /* 가로 모듈수 */
-                            byte  ModuleVertical = byteBuffer.get();                               /* 세로 모듈수 */
-                            byte[]  ModuleStatus = new byte[CENTER_COMM_DEFINE.INT_VMS_MAX_MODULE_BIT];         /* 모듈 개별 상태, 0:정상 1:장애 2:알수없음 */
-                            byteBuffer.get(ModuleStatus);
-                            byte  PowerCount = byteBuffer.get();                                   /* 전원 갯수 */
-                            byte[]  PowerStatus = new byte[CENTER_COMM_DEFINE.INT_VMS_MAX_POWER_BIT];           /* 전원 개별 상태, 0:켜짐 1:꺼짐 2:알수없음 */
-                            byteBuffer.get(PowerStatus);
-                            byte[]  Dummy = new byte[CENTER_COMM_DEFINE.INT_VMS_STATUE_DUMMY];                  /* protocol dummy bytes */
-                            byteBuffer.get(Dummy);
-                            short ScheduledMessageOperatingTime = byteBuffer.getShort();                /* 필수 계획된 메시지의 동작시간(초) */
-                            short ModuleOperatingTemperature = byteBuffer.getShort();                   /* 필수 모듈 전원이 꺼지는 온도값(℃) */
-                            short FanOperatingTemperature = byteBuffer.getShort();                      /* 필수 Fan 동작 기준 온도값(℃) */
-                            short HeaterOperatingTemperature = byteBuffer.getShort();                   /* 필수 Heater 동작 기준 온도값(℃) */
-                            short ExternalLightOperatingLuminance = byteBuffer.getShort();              /* 선택 외부전등 동작 기준 휘도값 */
-                            short ModuleBasicFailureRate = byteBuffer.getShort();                       /* 선택 모듈 장애율 (한 개의 모듈을 장애로 처리하기 위한 픽셀의 백분율값) */
-                            short MaximumRetry = byteBuffer.getShort();                                 /* 선택 최대 재시도 횟수(회) */
-                            short ResponseTimeOut = byteBuffer.getShort();                              /* 선택 최대응답대기시간 (초) */
-                            short BlinkingCycleTime = byteBuffer.getShort();                            /* 선택 점멸시간 주기 ( 1/10초단위) */
-
-                            for (int jj = 0; jj < vmsId.length; jj++) {
-                                if (vmsId[jj] < '0' || vmsId[jj] > '9') {
-                                    vmsId[jj] = ' ';
-                                }
-                            }
-                            //log.info("{}, VmsId: {}, ModuleHor: {}, ModuleVer: {}", ii+1, new String(vmsId).trim(), ModuleHorizontal, ModuleVertical);
-                        }
+//                        for (int ii = 0; ii < count; ii++) {
+//                            vmsId = new byte[CENTER_COMM_DEFINE.INT_VMS_MAX_ID];
+//                            byteBuffer.get(vmsId);
+//                            byte  OprMode = byteBuffer.get();                                      /* VMS운영모드, 0:auto, 1:Fix */
+//                            byte  Comm = byteBuffer.get();                                         /* 유선통신상태, 0:정상 1:장애 */
+//                            byte  Wcomm = byteBuffer.get();                                        /* 무선통신상태, 0:정상 1:장애 */
+//
+//                            byte  DoorStatus = byteBuffer.get();                                   /* 도어상태정보코드,     0:열림 1:닫힘 2:알수없음 */
+//                            byte  ModulePowerStatus = byteBuffer.get();                            /* 모듈전원상태정보코드, 0:켜짐 1:꺼짐 2:알수없음 */
+//                            short BodyTemp = byteBuffer.getShort();                                     /* 함체온도값(℃), 범위(-128~127) */
+//                            byte  LuminanceStatus = byteBuffer.get();                              /* 화면의 밝기값 (최대 휘도값을 100으로 했을 때의 백분율 값), 범위(0~100) */
+//                            byte  FanStatus = byteBuffer.get();                                    /* Fan 동작상태정보코드,    0:켜짐, 1:꺼짐 2:알수없음 */
+//                            byte  HeaterStatus = byteBuffer.get();                                 /* Heater 동작상태정보코드, 0:켜짐, 1:꺼짐 2:알수없음 */
+//
+//                            byte  ExternalLightStatus = byteBuffer.get();                          /* 선택 외부조명 동작상태정보코드 0:켜짐, 1:꺼짐, 2:자동(공단은 미사용) */
+//                            byte  AlarmLightStatus = byteBuffer.get();                             /* 선택 경광등 동작상태정보코드   0:켜짐, 1:꺼짐 */
+//                            byte  SpeakerStatus = byteBuffer.get();                                /* 선택 스피커 동작상태정보코드   0:켜짐, 1:꺼짐 */
+//                            byte[] ControllerCurrentTime  = new byte[CENTER_COMM_DEFINE.INT_VMS_MAX_DATETIME];
+//                            byteBuffer.get(ControllerCurrentTime);
+//                            byte  Voltage = byteBuffer.get();                                      /* 전압, 범위(0~255), 사용안함 */
+//
+//                            byte  ModuleState = byteBuffer.get();                                  /* 모듈 상태, 0:정상 1:장애 2:알수없음 */
+//                            byte  ModuleHorizontal = byteBuffer.get();                             /* 가로 모듈수 */
+//                            byte  ModuleVertical = byteBuffer.get();                               /* 세로 모듈수 */
+//                            byte[]  ModuleStatus = new byte[CENTER_COMM_DEFINE.INT_VMS_MAX_MODULE_BIT];         /* 모듈 개별 상태, 0:정상 1:장애 2:알수없음 */
+//                            byteBuffer.get(ModuleStatus);
+//                            byte  PowerCount = byteBuffer.get();                                   /* 전원 갯수 */
+//                            byte[]  PowerStatus = new byte[CENTER_COMM_DEFINE.INT_VMS_MAX_POWER_BIT];           /* 전원 개별 상태, 0:켜짐 1:꺼짐 2:알수없음 */
+//                            byteBuffer.get(PowerStatus);
+//                            byte[]  Dummy = new byte[CENTER_COMM_DEFINE.INT_VMS_STATUE_DUMMY];                  /* protocol dummy bytes */
+//                            byteBuffer.get(Dummy);
+//                            short ScheduledMessageOperatingTime = byteBuffer.getShort();                /* 필수 계획된 메시지의 동작시간(초) */
+//                            short ModuleOperatingTemperature = byteBuffer.getShort();                   /* 필수 모듈 전원이 꺼지는 온도값(℃) */
+//                            short FanOperatingTemperature = byteBuffer.getShort();                      /* 필수 Fan 동작 기준 온도값(℃) */
+//                            short HeaterOperatingTemperature = byteBuffer.getShort();                   /* 필수 Heater 동작 기준 온도값(℃) */
+//                            short ExternalLightOperatingLuminance = byteBuffer.getShort();              /* 선택 외부전등 동작 기준 휘도값 */
+//                            short ModuleBasicFailureRate = byteBuffer.getShort();                       /* 선택 모듈 장애율 (한 개의 모듈을 장애로 처리하기 위한 픽셀의 백분율값) */
+//                            short MaximumRetry = byteBuffer.getShort();                                 /* 선택 최대 재시도 횟수(회) */
+//                            short ResponseTimeOut = byteBuffer.getShort();                              /* 선택 최대응답대기시간 (초) */
+//                            short BlinkingCycleTime = byteBuffer.getShort();                            /* 선택 점멸시간 주기 ( 1/10초단위) */
+//
+//                            for (int jj = 0; jj < vmsId.length; jj++) {
+//                                if (vmsId[jj] < '0' || vmsId[jj] > '9') {
+//                                    vmsId[jj] = ' ';
+//                                }
+//                            }
+//                            //log.info("{}, VmsId: {}, ModuleHor: {}, ModuleVer: {}", ii+1, new String(vmsId).trim(), ModuleHorizontal, ModuleVertical);
+//                        }
                         break;
                     default:
                         log.info("Other opCode: {}", opCode);

+ 20 - 0
src/main/java/com/its/utils/ItsUtils.java

@@ -386,4 +386,24 @@ public final class ItsUtils
 		}
 		return ipAddress;
 	}
+
+//	public static short swap(short x){
+//        return (short)((x << 8) | ((x >> 8) & 0xff));
+//    }
+//	public static char swap(char x){
+//        return (char)((x << 8) | ((x >> 8) & 0xff));
+//    }
+//	public static int swap(int x){
+//        return (int)((swap((short)x) << 16) | (swap((short)(x >> 16)) & 0xffff));
+//    }
+//	public static long swap(long x){
+//        return (long)(((long)swap((int)(x)) << 32) | ((long)swap((int)(x >> 32)) & 0xffffffffL));
+//    }
+//	public static float swap(float x){
+//        return Float.intBitsToFloat(swap(Float.floatToRawIntBits(x)));
+//    }
+//	public static double swap(double x){
+//        return Double.longBitsToDouble(swap(Double.doubleToRawLongBits(x)));
+//    }
+
 }