|
@@ -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
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////
|