Sfoglia il codice sorgente

[WallPadDevService]
1. 환기 대체품 이슈
- 초기 환기 들어간 현장에서 환기의 상태정보를 곧바로 물어보는 현장 발생하여 조치

jglee 3 anni fa
parent
commit
cab7b0e6c2

+ 72 - 0
WallPadDevService/src/main/java/com/artncore/wallpaddevservice/driver/Ventilation_Controller.java

@@ -52,6 +52,9 @@ public class Ventilation_Controller extends DeviceManager {
     /** 환기스케쥴 DB ID */
     private final String DB_ID_RESERVE = "VEN_RESERVE";
 
+    /** 현산 환기 자동 청정기능 동작 확인 주기 (60분)*/
+    private final long lHDCVERSIONINFO_CHECK_TIME_TICK = TIME_MINUTE * 60;
+
     /**
      * 환기 ON/OFF 상태를 프로토콜 데이터로 반환한다.
      *
@@ -224,6 +227,7 @@ public class Ventilation_Controller extends DeviceManager {
     private static int mVentilInfo = WallpadDeviceSet.VENTIL_TYPE_NORMAL;
     /** 예약운전 지원 여부 */
     private boolean mReservationSupport = false;
+    private int VersionRetryCount = 0;
 
     public class Driver {
         private PollingList Polling;
@@ -258,6 +262,7 @@ public class Ventilation_Controller extends DeviceManager {
             public byte Status;
             public int SearchTryCount;
             public long lHDCAutoAirCleanCheckTimeTick;
+            public long lHDCVersionInfoCheckTimeTick;
 
             private PollingList() {
                 Status = STATUS.First;
@@ -390,6 +395,19 @@ public class Ventilation_Controller extends DeviceManager {
                     UpdateVariables(Status);
                 }
                 mDriver.Polling.SetStatus(Driver.PollingList.STATUS.Normal);
+                VersionRetryCount = 0;
+            }
+
+            // 2세대 처음 들어간 곳 중에, 버전 정보를 물어보지 않는곳이 발생하여 10번 물어본 후 응답이 없으면 환기 상태를 노멀로 확인
+            if(Version == null && Version2 == null)
+            {
+                VersionRetryCount ++;
+            }
+
+            if(VersionRetryCount == 10)
+            {
+                VersionRetryCount = 0;
+                mDriver.Polling.SetStatus(Driver.PollingList.STATUS.Normal);
             }
         }
         /* [[ Normal ]]
@@ -406,6 +424,16 @@ public class Ventilation_Controller extends DeviceManager {
                 }
             }
 
+            // 2세대 처음 들어간 곳 중에, 버전 정보를 물어보지 않는곳이 발생하여, 1시간 주기로 확인
+            long currentTimeMillis = 0;
+            currentTimeMillis = System.currentTimeMillis();
+            if (Math.abs(currentTimeMillis - mDriver.Polling.lHDCVersionInfoCheckTimeTick) > lHDCVERSIONINFO_CHECK_TIME_TICK) {
+                CheckVersion();
+                mDriver.Polling.lHDCVersionInfoCheckTimeTick = currentTimeMillis;
+                Sleep(100);
+            }
+
+
             // 환기 예약 기능 관련
             ReservationAction(false);
 
@@ -423,6 +451,50 @@ public class Ventilation_Controller extends DeviceManager {
         }
     }
 
+    /**
+     * 드라이버 지원 정보 확인
+     */
+    protected void CheckVersion()
+    {
+        // 창호환기 옵션을 두는게 좋을까?
+        // 무조건 버전2 확인해서 알아서 확인하는게 좋을까?
+        // 우선 무조건 보내도록 한다. - 19.09.23. 최인보 sw
+        VERSION2 Version2 = Send_GetVersion2();
+        if (Version2 != null) {
+            // 지원2 상태를 저장한다.
+            mDriver.Status.Support2 = new DataClasses.Venti.SUPPORT2(Version2.Support2);
+            mDriver.Version2 = Version2;
+            Log.i(TAG, mDriver.Version2.ToDebugString());
+        }
+        else {
+            // 지원2 상태를 저장한다.
+            mDriver.Status.Support2 = new DataClasses.Venti.SUPPORT2((byte)0x00);
+            mDriver.Version2 = new VERSION2();
+            //Log.i(TAG, mDriver.Version2.ToDebugString());
+        }
+        Sleep(100);
+
+        VERSION Version = Send_GetVersion();
+        if (Version != null) {
+            // 지원 상태를 저장한다.
+            mDriver.Status.Support = new DataClasses.Venti.SUPPORT(Version.Support);
+            mDriver.Version = Version;
+            Log.i(TAG, mDriver.Version.ToDebugString());
+
+            // 룸콘트롤러가 없을 경우 DB에 저장된 값이 예약상태이다.
+            if (!mDriver.Status.Support.RoomController) {
+                mDriver.Status.Reservation = DB_GetVentiReserveOnOff();
+            }
+
+            // 상태를 가져온다.
+            Sleep(150);
+            DataClasses.Venti Status = Send_GetStatus();
+            if (Status != null) {
+                UpdateVariables(Status);
+            }
+        }
+    }
+
     ///////////////////////////////////////////////////////////////////////////////////////////////
     // Ctrl
     ///////////////////////////////////////////////////////////////////////////////////////////////