|
@@ -0,0 +1,3423 @@
|
|
|
+/*
|
|
|
+ * Copyright (C) 2018 Android WallPad Project
|
|
|
+ *
|
|
|
+ * FileName : HeatingV2PopupScreen.java
|
|
|
+ * Project : Android WallPad Project
|
|
|
+ * Company : HDC I-CONTROLS ( www.icontrols.co.kr )
|
|
|
+ * Author : Choi In Bo , inbo207@icontrols.co.kr
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+package kr.co.icontrols.wallpadhomectrl.screen.screen_venti;
|
|
|
+
|
|
|
+import android.annotation.SuppressLint;
|
|
|
+import android.content.Context;
|
|
|
+import android.content.Intent;
|
|
|
+import android.graphics.Color;
|
|
|
+import android.os.Handler;
|
|
|
+import android.os.Message;
|
|
|
+import android.util.Log;
|
|
|
+import android.view.Gravity;
|
|
|
+import android.view.MotionEvent;
|
|
|
+import android.view.View;
|
|
|
+import android.widget.RelativeLayout;
|
|
|
+
|
|
|
+import com.artncore.WallPadDataMgr.WallpadDeviceSet;
|
|
|
+import com.artncore.WallPadDataMgr.WallpadStatusData;
|
|
|
+import com.artncore.commons.API_Menu;
|
|
|
+import com.artncore.commons.DataClasses.AirQualityData;
|
|
|
+import com.artncore.commons.DataClasses.AirQualityData.Device.AIRLevel;
|
|
|
+import com.artncore.commons.DataClasses.Venti;
|
|
|
+import com.artncore.wallpadapi.AirQualitySensorAPI;
|
|
|
+import com.artncore.wallpadapi.VentiAPI;
|
|
|
+import com.artncore.wallpadapi.WallPadAPI;
|
|
|
+import com.artncore.wallpadapi.WallPadDevAPI;
|
|
|
+import com.util.LogUtil;
|
|
|
+
|
|
|
+import kr.co.icontrols.wallpadhomectrl.MainActivity;
|
|
|
+import kr.co.icontrols.wallpadhomectrl.R;
|
|
|
+import kr.co.icontrols.wallpadhomectrl.declare.Common;
|
|
|
+import kr.co.icontrols.wallpadhomectrl.declare.ID;
|
|
|
+import kr.co.icontrols.wallpadhomectrl.declare.TransactionDisplay;
|
|
|
+import kr.co.icontrols.wallpadhomectrl.screen.screen_heating.HeatingV2MainScreen;
|
|
|
+import kr.co.icontrols.wallpadsupport.Version;
|
|
|
+import kr.co.icontrols.wallpadsupport.WpadImageView;
|
|
|
+import kr.co.icontrols.wallpadsupport.WpadImageView.TOUCH_KIND;
|
|
|
+import kr.co.icontrols.wallpadsupport.WpadScreen;
|
|
|
+import kr.co.icontrols.wallpadsupport.WpadSound.SND;
|
|
|
+import kr.co.icontrols.wallpadsupport.WpadTextView;
|
|
|
+
|
|
|
+import static kr.co.icontrols.wallpadhomectrl.screen.screen_venti.VentilationModelMainScreen.Mode.NormalMode;
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @description
|
|
|
+ * 월패드 [우리집제어->환기] 메인화면 이다.<br>
|
|
|
+ * 예약버튼, ON/OFF버튼, 약풍/미풍,강풍 풍량버튼, 타이머좌우 버튼<br>
|
|
|
+ * 을(를) 여기서 처리한다.
|
|
|
+ */
|
|
|
+@SuppressLint("ViewConstructor")
|
|
|
+public class VentilationModelMainScreen extends WpadScreen {
|
|
|
+ private final String TAG = "VentilationMainScreen";
|
|
|
+
|
|
|
+ private final boolean DEBUG_LOG_ON = true;
|
|
|
+ private void printDebugLog(String s) { if(DEBUG_LOG_ON) Log.d(TAG, s); }
|
|
|
+
|
|
|
+ // =================================================================================================
|
|
|
+ // [[ Declaration ]] region
|
|
|
+ // =================================================================================================
|
|
|
+ // [Image]
|
|
|
+ private WpadImageView IMG_BACKGROUND;
|
|
|
+ private WpadImageView IMG_BACK_HOUSE;
|
|
|
+ private WpadImageView IMG_VENTIL_ANIM, IMG_FILTER_CHANGE, IMG_CARE_SERVICE;
|
|
|
+ private WpadImageView IMG_SANITIZATION_STATUS;
|
|
|
+
|
|
|
+ //private WpadImageView WindTitle;
|
|
|
+ //private WpadImageView TimerTitle, TimerBlank;
|
|
|
+ //private WpadImageView ByPassTitle;
|
|
|
+ //private WpadImageView HeaterTitle;
|
|
|
+ //private WpadImageView AutoDrivingTitle;
|
|
|
+ //private WpadImageView BathRoomTitle;
|
|
|
+
|
|
|
+ private WpadImageView IMG_AIRQUALITY_STATUS_PM10; // 미세먼지 상태 이미지
|
|
|
+ private WpadImageView IMG_AIRQUALITY_STATUS_PM2p5; // 초미세먼지 상태 이미지
|
|
|
+ private WpadImageView IMG_AIRQUALITY_STATUS_CO2; // 이산화탄소 상태 이미지
|
|
|
+ private WpadImageView IMG_BRIGHTNESS_STATUS; // 미세먼지 상태 이미지
|
|
|
+
|
|
|
+ // [Button]
|
|
|
+ private WpadImageView BTN_ONOFF_POWER, BTN_ONOFF_AUTOCLEAN, BTN_ONOFF_RESERVATION, BTN_RESERVATION_CONFIG, BTN_ONOFF_HEATER, BTN_BATHROOM;
|
|
|
+ private WpadImageView BTN_VENTILMODE_NORMAL, BTN_VENTILMODE_NATURAL, BTN_VENTILMODE_INTERNALCIRCUL, BTN_VENTILMODE_EXTERNALAIRCLEAN, BTN_VENTILMODE_SLEEP, BTN_VENTILMODE_AUTO;
|
|
|
+ private WpadImageView BTN_WIND_01, BTN_WIND_02, BTN_WIND_03;
|
|
|
+ private WpadImageView BTN_TIMER_LEFT, BTN_TIMER_RIGHT;
|
|
|
+ private WpadImageView BTN_ONOFF_CONFIG, BTN_SANITIZATION, BTN_BRIGHTNESS, BTN_ONOFF_SANITIZATION, BTN_ONOFF_VANITIZATION;
|
|
|
+
|
|
|
+ private WpadImageView BTN_PAGE_UP;
|
|
|
+ private WpadImageView BTN_PAGE_DOWN;
|
|
|
+
|
|
|
+ // [Text]
|
|
|
+ private WpadTextView TXT_TITLE_ONOFF_POWER, TXT_TITLE_ONOFF_AUTOCLEAN, TXT_TITLE_ONOFF_AUTO, TXT_TITLE_ONOFF_RESERVATION, TXT_TITLE_ONOFF_HEATER, TXT_TITLE_MODE, TXT_TITLE_WIND, TXT_TITLE_TIMER, TXT_TITLE_SANITIZATION, TXT_TITLE_VENTILATION, TXT_TITLE_BRIGHTNESS;
|
|
|
+
|
|
|
+ private WpadTextView TXT_TIMER;
|
|
|
+ private WpadTextView TXT_BATHROOM;
|
|
|
+ private WpadTextView TXT_ALARM_MESSAGE;
|
|
|
+
|
|
|
+ private WpadTextView TXT_AIRQUALITY_TITLE_PM10;
|
|
|
+ private WpadTextView TXT_AIRQUALITY_TITLE_PM2p5;
|
|
|
+ private WpadTextView TXT_AIRQUALITY_TITLE_CO2;
|
|
|
+ private WpadTextView TXT_AIRQUALITY_STATUS_PM10;
|
|
|
+ private WpadTextView TXT_AIRQUALITY_STATUS_PM2p5;
|
|
|
+ private WpadTextView TXT_AIRQUALITY_STATUS_CO2;
|
|
|
+ private WpadTextView TXT_AIRQUALITY_FIGURE_PM10;
|
|
|
+ private WpadTextView TXT_AIRQUALITY_FIGURE_PM2p5;
|
|
|
+ private WpadTextView TXT_AIRQUALITY_FIGURE_CO2;
|
|
|
+
|
|
|
+ private WpadTextView TXT_INSTRUCTION;
|
|
|
+
|
|
|
+ int FONT_SIZE_TITLE_NORMAL = Common.fontsize._30;
|
|
|
+ int FONT_SIZE_TITLE_AIRQUALITY = Common.fontsize._24;
|
|
|
+
|
|
|
+ // [Variables]
|
|
|
+ private int OPERATION_MODE = -1;
|
|
|
+ private boolean TEST_BUTTON = false; // 외기청정, 내부순환 테스트용 버튼 임시생성 / 자연,자동,취침 임시용
|
|
|
+ private boolean SAMPLE_MODE_TEST = false; // 샘플모드 플래그 (테스트용)
|
|
|
+
|
|
|
+ private boolean bEasyModeUse = false;
|
|
|
+
|
|
|
+ private int mVentilAnimImgCnt = 0;
|
|
|
+ private Handler mVentilAnimHandler = null;
|
|
|
+ private Handler mFilterChangeHandler = null;
|
|
|
+ private boolean mFilterChangeHandlerRun = false;
|
|
|
+
|
|
|
+ private byte hVentilAnimStatus = 0;
|
|
|
+ private int[] mVentilAnim = null;
|
|
|
+
|
|
|
+ // 일반환기 애니메이션
|
|
|
+ private int[] mAnimModeNormal = new int[] { R.drawable.ctrl_ventil_anim_normal_01, R.drawable.ctrl_ventil_anim_normal_02 };
|
|
|
+ // 자연환기 애니메이션
|
|
|
+ private int[] mAnimModeNatural = new int[]{ R.drawable.ctrl_ventil_anim_natural_01, R.drawable.ctrl_ventil_anim_natural_02 };
|
|
|
+ // 내부순환 애니메이션
|
|
|
+ private int[] mAnimModeInternalCircul = new int[]{ R.drawable.ctrl_ventil_anim_internal_01, R.drawable.ctrl_ventil_anim_internal_02 };
|
|
|
+ // 외기청정 애니메이션
|
|
|
+ private int[] mAnimModeExternalClean = new int[]{ R.drawable.ctrl_ventil_anim_externalclean_01, R.drawable.ctrl_ventil_anim_externalclean_02 };
|
|
|
+
|
|
|
+ private class VentilData {
|
|
|
+ Venti VentilStatus;
|
|
|
+ int Type; // 현산,LH,후드
|
|
|
+ int[] TimerTable;
|
|
|
+ public VentilData(int nType) {
|
|
|
+ VentilStatus = new Venti();
|
|
|
+ Type = nType;
|
|
|
+ if (Type == API_Menu.SubMenuCtrl.ChangAir_LH) TimerTable = new int [] { 0, 30 , 60 , 90 };
|
|
|
+ else TimerTable = new int [] { 0, 10 , 20 , 30 , 60 , 120 , 180 , 240 };
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private VentilData mVentilData;
|
|
|
+ public String strVentilManual = ""; // ByPass:0/Heater:0
|
|
|
+
|
|
|
+ private AirQualityData mAirQualityData;
|
|
|
+ private boolean bAirQualityFigureSupport = false;
|
|
|
+
|
|
|
+ // [API]
|
|
|
+ //private VentiAPI mVentilAPI = null;
|
|
|
+ private AirQualitySensorAPI mAirQualitySensorAPI;
|
|
|
+ private TransactionDisplay mTransactionDisplay = null;
|
|
|
+
|
|
|
+ boolean bVentilCareService = false; // 환기케어서비스 여부
|
|
|
+ boolean bDisplayAirQuality = false; // 실내 공기질 상태 표시 여부
|
|
|
+ boolean bAirQualitySensorUsage = false; // 실내 공기질 센서 사용 여부
|
|
|
+ boolean bVentilSupportAutoClean = false; // 환기장비 자동청정 기능 지원 여부 (내부순환, 외기청정 지원 여부)
|
|
|
+
|
|
|
+ public static boolean bFilterChange = false; // 필터교체 알림 버튼 Visible 유뮤 (매뉴얼 화면에서 버튼 유무를 파악하기 위함)
|
|
|
+
|
|
|
+ //Control을 위한 변수
|
|
|
+ protected boolean OnOff = false;
|
|
|
+ protected boolean Reservation = false;
|
|
|
+ byte Wind = 0x01;
|
|
|
+ protected boolean ByPass = false;
|
|
|
+ protected boolean AutoDriving = false;
|
|
|
+ protected boolean BathRoom = false;
|
|
|
+ protected boolean InnerCycle = false;
|
|
|
+ protected boolean OutAirClean = false;
|
|
|
+ protected boolean AirCleanAuto = false;
|
|
|
+ protected boolean HDCAutoAirClean = false;
|
|
|
+ byte Sleep = 0x00;
|
|
|
+ byte HeaterStatus = Venti.HEATER.NOT_SUPPORT;
|
|
|
+ int HeaterTimeRemaining = 0;
|
|
|
+ byte EtcCtr = 0x00;
|
|
|
+ int Timer = 0;
|
|
|
+ Venti.FAULT Fault = new Venti.FAULT((byte)0x00);
|
|
|
+ Venti.SUPPORT Support = new Venti.SUPPORT((byte)0xFB);
|
|
|
+ Venti.SUPPORT2 Support2 = new Venti.SUPPORT2((byte)0xF);
|
|
|
+
|
|
|
+ protected boolean sanitiztion = false;
|
|
|
+ protected boolean room_vanti = false;
|
|
|
+
|
|
|
+
|
|
|
+ private RoomView[] roomView = null;
|
|
|
+
|
|
|
+
|
|
|
+ int nRoomCnt = 4; //거실, 안방, 방1, 방2
|
|
|
+
|
|
|
+ public enum Mode
|
|
|
+ {
|
|
|
+ NormalMode, ByPassMode, InnerCycleMode, OutAirCleanMode
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 공기 모드 변경
|
|
|
+ * @param Mode 0: 기본, 1 : 바이패스, 2: 내분순환(공기청정), 3: 외기청정(공기청정 + 외기흡기)
|
|
|
+ */
|
|
|
+ protected void SetMode(Mode _mode)
|
|
|
+ {
|
|
|
+ ByPass = false;
|
|
|
+ InnerCycle = false;
|
|
|
+ OutAirClean = false;
|
|
|
+
|
|
|
+ switch (_mode)
|
|
|
+ {
|
|
|
+ case NormalMode:
|
|
|
+ break;
|
|
|
+ case ByPassMode:
|
|
|
+ ByPass = true;
|
|
|
+ break;
|
|
|
+ case InnerCycleMode:
|
|
|
+ InnerCycle = true;
|
|
|
+ break;
|
|
|
+ case OutAirCleanMode:
|
|
|
+ OutAirClean = true;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ // [Package]
|
|
|
+ /**
|
|
|
+ * 개별방의 View 구조를 정의한다.
|
|
|
+ */
|
|
|
+ private class RoomView {
|
|
|
+
|
|
|
+ public WpadTextView TXT_TITLE; // 방표시 버튼
|
|
|
+ public WpadImageView BTN_ONOFF; // 운전모드 ON/OFF 버튼
|
|
|
+
|
|
|
+ boolean OnOff = false;
|
|
|
+
|
|
|
+ public boolean getOnOff(){return OnOff;}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 생성자
|
|
|
+ * @param left - (int) 좌측마진
|
|
|
+ * @param top - (int) 상측마진
|
|
|
+ * @param index - (int) 인덱스
|
|
|
+ * 현재 버전 기준은 4개 기준 무조건
|
|
|
+ */
|
|
|
+ private RoomView(int left, int top, int _index) {
|
|
|
+ // 룸뷰 배경 그리기
|
|
|
+ int w = 98;
|
|
|
+ int h = 54;
|
|
|
+
|
|
|
+ int mNormal;
|
|
|
+ int mPress = R.drawable.btn_venti_room_press;
|
|
|
+ String room_name = "";
|
|
|
+
|
|
|
+ Log.d(TAG, "**************************룸뷰 생성 : " + _index);
|
|
|
+ //this.index = index;
|
|
|
+ switch (_index)
|
|
|
+ {
|
|
|
+ case 0:
|
|
|
+ mNormal = R.drawable.btn_venti_room_off_lv_1;
|
|
|
+ room_name = "거실";
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ mNormal = R.drawable.btn_venti_room_off_lv_4;
|
|
|
+ room_name = "안방";
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ mNormal = R.drawable.btn_venti_room_off_lv_3;
|
|
|
+ room_name = "방1";
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ mNormal = R.drawable.btn_venti_room_off_lv_2;
|
|
|
+ room_name = "방2";
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ mNormal = R.drawable.btn_venti_room_off_lv_1;
|
|
|
+ room_name = "거실";
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ BTN_ONOFF = new WpadImageView(getContext(), TOUCH_KIND.BUTTON, 98, 54, mNormal, mPress, ID.VentilationMainScreenID.BTN.ROOM_ONOFF_1 + _index);
|
|
|
+ //ViewRegistration(getLayout(), OnOffBtn, left+119, top+67);
|
|
|
+ ViewRegistration(getLayout(), BTN_ONOFF, Common.ImgPosion.GetX(left), Common.ImgPosion.GetY(top));
|
|
|
+ BTN_ONOFF.setTouchDelayMs(Common.BTN_DELAY_DEVCTRL);
|
|
|
+ int[] mTitleFontSize = {Common.fontsize._35, Common.fontsize._44};
|
|
|
+ TXT_TITLE = new WpadTextView(getContext(), false, 98, 30, Gravity.CENTER, Color.WHITE, 24, true, ID.VentilationMainScreenID.TXT.ROOM_TITLE_1 + _index);
|
|
|
+ //ViewRegistration(getLayout(), TitleText, left+10, top+10);
|
|
|
+ ViewRegistration(getLayout(), TXT_TITLE, Common.ImgPosion.GetX(left), Common.ImgPosion.GetY(top+14));
|
|
|
+ TXT_TITLE.setText(room_name);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setEnable(boolean enable) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setStatus(boolean OnOff, int Status) {
|
|
|
+ setEnable(true);
|
|
|
+ Log.d(TAG, "**************************" + TXT_TITLE.getText().toString() + ", OnOff : " + OnOff +", Status : " + Status);
|
|
|
+ if(OnOff)
|
|
|
+ {
|
|
|
+ switch (Status)
|
|
|
+ {
|
|
|
+ case 0:
|
|
|
+ Log.d(TAG, "**************************OnOff : " + OnOff +", Status : 파랑 거실" + Status);
|
|
|
+ BTN_ONOFF.setImageResource(R.drawable.btn_venti_room_on_lv_1);
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ Log.d(TAG, "**************************OnOff : " + OnOff +", Status : 초록 안방" + Status);
|
|
|
+ BTN_ONOFF.setImageResource(R.drawable.btn_venti_room_on_lv_2);
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ Log.d(TAG, "**************************OnOff : " + OnOff +", Status : 노랑 방1" + Status);
|
|
|
+ BTN_ONOFF.setImageResource(R.drawable.btn_venti_room_on_lv_3);
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ Log.d(TAG, "**************************OnOff : " + OnOff +", Status : 빨강 방2" + Status);
|
|
|
+ BTN_ONOFF.setImageResource(R.drawable.btn_venti_room_on_lv_4);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ Log.d(TAG, "**************************OnOff : " + OnOff +", Status : " + Status);
|
|
|
+ BTN_ONOFF.setImageResource(R.drawable.btn_venti_room_on_lv_1);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+// Message msg = OffHandler.obtainMessage();
|
|
|
+// msg.what = index;
|
|
|
+// msg.arg1 = Status;
|
|
|
+// OffHandler.sendMessage(msg);
|
|
|
+ switch (Status)
|
|
|
+ {
|
|
|
+ case 0:
|
|
|
+ Log.d(TAG, "**************************OnOff : " + OnOff +", Status : 파랑 거실" + Status);
|
|
|
+ BTN_ONOFF.setImageResource(R.drawable.btn_venti_room_off_lv_1);
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ Log.d(TAG, "**************************OnOff : " + OnOff +", Status : 초록 안방" + Status);
|
|
|
+ BTN_ONOFF.setImageResource(R.drawable.btn_venti_room_off_lv_2);
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ Log.d(TAG, "**************************OnOff : " + OnOff +", Status : 노랑 방1" + Status);
|
|
|
+ BTN_ONOFF.setImageResource(R.drawable.btn_venti_room_off_lv_3);
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ Log.d(TAG, "**************************OnOff : " + OnOff +", Status : 빨강 방2" + Status);
|
|
|
+ BTN_ONOFF.setImageResource(R.drawable.btn_venti_room_off_lv_4);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ Log.d(TAG, "**************************OnOff : " + OnOff +", Status : " + Status);
|
|
|
+ BTN_ONOFF.setImageResource(R.drawable.btn_venti_room_off_lv_1);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ this.OnOff = !OnOff;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private int [][][] mRoomPos = new int [][][]
|
|
|
+ {
|
|
|
+ { {750, 504}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0} }, // 1개(가이드 좌표 X - 임의 설정)
|
|
|
+ { {750, 504}, {853, 504}, {0, 0}, {0, 0}, {0, 0}, {0, 0} }, // 2개(가이드 좌표 X - 임의 설정)
|
|
|
+ { {750, 504}, {853, 504}, {956, 504}, {0, 0}, {0, 0}, {0, 0} }, // 3개(가이드 좌표 O)
|
|
|
+ { {750, 504}, {853, 504}, {956, 504}, {1059, 504}, {0, 0}, {0, 0} }, // 4개(가이드 좌표 O)
|
|
|
+ { {70, 168}, {359, 168}, {648, 168}, {200, 462}, {489, 462}, {0, 0}}, // 5개(가이드 좌표 O)
|
|
|
+ { {70, 168}, {359, 168}, {648, 168}, {70, 462}, {359, 462}, {648, 462} }, // 6개(가이드 좌표 O)
|
|
|
+ { {70, 110}, {359, 110}, {648, 110}, {70, 404}, {359, 404}, {648, 404}, {345, 328} }, // 7개
|
|
|
+ { {70, 110}, {359, 110}, {648, 110}, {70, 404}, {359, 404}, {648, 404}, {200, 328}, {489, 328}}, // 8개
|
|
|
+ { {70, 110}, {359, 110}, {648, 110}, {70, 404}, {359, 404}, {648, 404}, {50, 328}, {339, 328}, {628, 328}} // 9개
|
|
|
+ };
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ // =================================================================================================
|
|
|
+ // [[ Create & Close ]] region
|
|
|
+ // =================================================================================================
|
|
|
+ /**
|
|
|
+ * VentiMainScreen 클래스 생성자
|
|
|
+ *
|
|
|
+ * @param context - 부모 context
|
|
|
+ * @param layout - 사용할 main layout
|
|
|
+ * @param wpapi - 상속받은 WallPadAPI
|
|
|
+ * @param operationMode - 동작모드
|
|
|
+ * @param nMenuId - APP 시작시 메인에서 전달받은 MunuID (본 값으로 하여 [기본], [후드], [LH] 상태를 변경한다)
|
|
|
+ */
|
|
|
+ @SuppressLint("HandlerLeak")
|
|
|
+ public VentilationModelMainScreen(Context context, RelativeLayout layout, WallPadAPI wpapi, int operationMode, int nMenuId) {
|
|
|
+ super(context, layout);
|
|
|
+
|
|
|
+ Log.i(TAG, "[START - Screen] --------------------------------------------");
|
|
|
+
|
|
|
+ // 1. Data Create
|
|
|
+ printDebugLog("[Create] - Step1 : Data Create");
|
|
|
+ OPERATION_MODE = operationMode;
|
|
|
+ mVentilAnim = mAnimModeNormal;
|
|
|
+ Log.i(TAG, "[START - Screen] nMenuId: " + nMenuId);
|
|
|
+ mVentilData = new VentilData(nMenuId);
|
|
|
+ mAirQualityData = new AirQualityData();
|
|
|
+
|
|
|
+ bEasyModeUse = ((MainActivity) context).GetEasyModeUXUse();
|
|
|
+ bAirQualitySensorUsage = ((MainActivity) context).getAirSensorAPUsage();
|
|
|
+ WallpadDeviceSet mWallpadDeviceSet = new WallpadDeviceSet(getContext());
|
|
|
+ bVentilCareService = mWallpadDeviceSet.Get_VentiServiceQRUse();
|
|
|
+ mWallpadDeviceSet.closeDB();
|
|
|
+
|
|
|
+ // 2. Device API Load & Update
|
|
|
+ printDebugLog("[Create] - Step2 : Device API Load & Update");
|
|
|
+ if (OPERATION_MODE == Common.MODE_NOMAL) {
|
|
|
+ printDebugLog("OPERATION_MODE = MODE_NOMAL");
|
|
|
+ updateVentilatorData(false);
|
|
|
+ if (bAirQualitySensorUsage) {
|
|
|
+ if (loadAirSensorAPI(wpapi) >= 0) updateAirSensorData(false);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (OPERATION_MODE == Common.MODE_BUSINESS_SAMPLE) {
|
|
|
+ printDebugLog("OPERATION_MODE = MODE_BUSINESS_SAMPLE");
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ printDebugLog("OPERATION_MODE = Other (" + OPERATION_MODE + " ... Change Mode -> MODE_NOMAL");
|
|
|
+ OPERATION_MODE = Common.MODE_NOMAL;
|
|
|
+ }
|
|
|
+
|
|
|
+ roomView = new RoomView[nRoomCnt];
|
|
|
+ for(int i = 0 ; i< nRoomCnt; i++)
|
|
|
+ {
|
|
|
+ int left = Common.ImgPosion.GetX(mRoomPos[nRoomCnt - 1][i][0]);
|
|
|
+ int top = Common.ImgPosion.GetX(mRoomPos[nRoomCnt - 1][i][1]);
|
|
|
+ Log.d(TAG, "**************************초기화 : " + i);
|
|
|
+ roomView[i] = new RoomView(left, top , i);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 현산 자동청정 기능 지원 여부 확인
|
|
|
+ //printDebugLog("[Create] - Support.InnerCycle [" + mVentilData.VentilStatus.Support.InnerCycle + "], Support.OutAirClean [" + mVentilData.VentilStatus.Support.OutAirClean + "], bAirQualitySensorUsage [" + bAirQualitySensorUsage + "]");
|
|
|
+ if (InnerCycle && OutAirClean && bAirQualitySensorUsage) bVentilSupportAutoClean = true;
|
|
|
+ printDebugLog("[Create] - bEasyModeUse [" + bEasyModeUse + "], bAirQualitySensorUsage [" + bAirQualitySensorUsage + "], bVentilCareService [" + bVentilCareService + "], bVentilSupportAutoClean [" + bVentilSupportAutoClean + "]");
|
|
|
+
|
|
|
+ // 3. Common - Image & Button Create
|
|
|
+ printDebugLog("[Create] - Step3 : Common - Image & Button Create");
|
|
|
+
|
|
|
+ IMG_BACKGROUND = new WpadImageView(context, TOUCH_KIND.NONE, 1181, 647, R.drawable.ctrl_ventil_back, 0, ID.VentilationMainScreenID.IMG.BACKGROUND);
|
|
|
+ ViewRegistration(layout, IMG_BACKGROUND, Common.ImgPosion.GetX(49), Common.ImgPosion.GetY(114));
|
|
|
+
|
|
|
+ if (bDisplayAirQuality) {
|
|
|
+ IMG_BACK_HOUSE = new WpadImageView(context, TOUCH_KIND.BUTTON_LC, 280, 306, R.drawable.ctrl_ventil_back_house, 0, ID.VentilationMainScreenID.IMG.BACKGROUND_SUB);
|
|
|
+ ViewRegistration(layout, IMG_BACK_HOUSE, Common.ImgPosion.GetX(203), Common.ImgPosion.GetY(221));
|
|
|
+
|
|
|
+ IMG_VENTIL_ANIM = new WpadImageView(context, TOUCH_KIND.NONE, 350, 82, R.drawable.ctrl_ventil_anim_normal_01, 0, ID.VentilationMainScreenID.IMG.FAN);
|
|
|
+ ViewRegistration(layout, IMG_VENTIL_ANIM, Common.ImgPosion.GetX(244), Common.ImgPosion.GetY(380));
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ IMG_BACK_HOUSE = new WpadImageView(context, TOUCH_KIND.BUTTON_LC, 280, 306, R.drawable.ctrl_ventil_back_house, 0, ID.VentilationMainScreenID.IMG.BACKGROUND_SUB);
|
|
|
+ ViewRegistration(layout, IMG_BACK_HOUSE, Common.ImgPosion.GetX(203), Common.ImgPosion.GetY(313));
|
|
|
+
|
|
|
+ IMG_VENTIL_ANIM = new WpadImageView(context, TOUCH_KIND.NONE, 350, 82, R.drawable.ctrl_ventil_anim_normal_01, 0, ID.VentilationMainScreenID.IMG.FAN);
|
|
|
+ ViewRegistration(layout, IMG_VENTIL_ANIM, Common.ImgPosion.GetX(244), Common.ImgPosion.GetY(472));
|
|
|
+ }
|
|
|
+
|
|
|
+ TXT_INSTRUCTION = new WpadTextView(context, false, 1181, 57, Gravity.CENTER, Color.WHITE, Common.fontsize._32_POPUP_TITLE, true, ID.VentilationMainScreenID.TXT.INSTRUCTION);
|
|
|
+ ViewRegistration(layout, TXT_INSTRUCTION, Common.ImgPosion.GetX(49), Common.ImgPosion.GetY(114));
|
|
|
+ TXT_INSTRUCTION.setText("환기 동작 상태가 표시됩니다.");
|
|
|
+
|
|
|
+ TXT_ALARM_MESSAGE = new WpadTextView(context, true, 591, 40, Gravity.CENTER, Color.parseColor("#FF7E00"), Common.fontsize._26_DEFAULT, true, ID.VentilationMainScreenID.TXT.ALARM_MESSAGE);
|
|
|
+ ViewRegistration(layout, TXT_ALARM_MESSAGE, Common.ImgPosion.GetX(49), Common.ImgPosion.GetY(171));
|
|
|
+ TXT_ALARM_MESSAGE.setBackgroundResource(R.drawable.ctrl_ventil_back_alarmmsg);
|
|
|
+ TXT_ALARM_MESSAGE.setVisibility(View.INVISIBLE);
|
|
|
+
|
|
|
+ /** 환기 케어 서비스 버튼 추가 : SBS */
|
|
|
+ if (true) {
|
|
|
+ IMG_CARE_SERVICE = new WpadImageView(context, TOUCH_KIND.BUTTON, 130, 54,
|
|
|
+ new int[] { R.drawable.btn_venti_inqu_normal, R.drawable.btn_venti_inqu_pressed },
|
|
|
+ new int[] { R.drawable.btn_venti_inqu_normal, R.drawable.btn_venti_inqu_pressed },
|
|
|
+ ID.VentilationMainScreenID.BTN.FILLTER_SERVICE);
|
|
|
+ ViewRegistration(layout, IMG_CARE_SERVICE, Common.ImgPosion.GetX(49), Common.ImgPosion.GetY(541));
|
|
|
+ }
|
|
|
+
|
|
|
+ IMG_SANITIZATION_STATUS = new WpadImageView(context, TOUCH_KIND.BUTTON, 591, 40,
|
|
|
+ new int[] { R.drawable.venti_sanitiztion_bg_status, R.drawable.venti_sanitiztion_bg_status_off },
|
|
|
+ new int[] { R.drawable.venti_sanitiztion_bg_status, R.drawable.venti_sanitiztion_bg_status_off },
|
|
|
+ ID.VentilationMainScreenID.BTN.SANITIZTION_BG);
|
|
|
+ ViewRegistration(layout, IMG_SANITIZATION_STATUS, Common.ImgPosion.GetX(49), Common.ImgPosion.GetY(171));
|
|
|
+ IMG_SANITIZATION_STATUS.setVisibility(View.INVISIBLE);
|
|
|
+
|
|
|
+ /** 환기 케어 서비스 버튼 추가 end : SBS */
|
|
|
+
|
|
|
+ IMG_FILTER_CHANGE = new WpadImageView(context, TOUCH_KIND.BUTTON, 130, 54,
|
|
|
+ new int[] { R.drawable.ctrl_ventil_btn_filterchange_normal, R.drawable.ctrl_ventil_btn_filterchange_pressed },
|
|
|
+ new int[] { R.drawable.ctrl_ventil_btn_filterchange_warning, R.drawable.ctrl_ventil_btn_filterchange_pressed },
|
|
|
+ ID.VentilationMainScreenID.BTN.FILLTER_CHANGE);
|
|
|
+ ViewRegistration(layout, IMG_FILTER_CHANGE, Common.ImgPosion.GetX(49), Common.ImgPosion.GetY(457));
|
|
|
+ //IMG_FILTER_CHANGE.setVisibility(View.INVISIBLE);
|
|
|
+
|
|
|
+ // 환기장비 전원 On/Off
|
|
|
+ TXT_TITLE_ONOFF_POWER = new WpadTextView(context, false, 130, 48, Gravity.LEFT, Color.WHITE, FONT_SIZE_TITLE_NORMAL, true, ID.VentilationMainScreenID.TXT.TITLE_ONOFF_POWER);
|
|
|
+ ViewRegistration(layout, TXT_TITLE_ONOFF_POWER, Common.ImgPosion.GetX(660), Common.ImgPosion.GetY(209));
|
|
|
+ TXT_TITLE_ONOFF_POWER.setText("전 원");
|
|
|
+// TXT_TITLE_ONOFF_POWER.setBackgroundColor(Color.RED);
|
|
|
+
|
|
|
+ BTN_ONOFF_POWER = new WpadImageView(context, TOUCH_KIND.BUTTON, 122, 48,
|
|
|
+ new int[] { R.drawable.control_venti_btn_onoff_off, R.drawable.control_venti_btn_onoff_off },
|
|
|
+ new int[] { R.drawable.control_venti_btn_onoff_on, R.drawable.control_venti_btn_onoff_on },
|
|
|
+ ID.VentilationMainScreenID.BTN.ONOFF_POWER);
|
|
|
+ ViewRegistration(layout, BTN_ONOFF_POWER, Common.ImgPosion.GetX(799), Common.ImgPosion.GetY(209));
|
|
|
+ BTN_ONOFF_POWER.setTouchDelayMs(Common.BTN_DELAY_DEVCTRL_VENTIL);
|
|
|
+
|
|
|
+ BTN_ONOFF_CONFIG = new WpadImageView(context, TOUCH_KIND.BUTTON, 66, 66, R.drawable.ctrl_ventil_btn_setreservation_normal, R.drawable.ctrl_ventil_btn_setreservation_pressed, ID.VentilationMainScreenID.BTN.ONOFF_CONFIG);
|
|
|
+ ViewRegistration(layout, BTN_ONOFF_CONFIG, Common.ImgPosion.GetX(947), Common.ImgPosion.GetY(209));
|
|
|
+ BTN_ONOFF_CONFIG.setTouchDelayMs(Common.BTN_DELAY_SHOWPOPUP);
|
|
|
+
|
|
|
+ // 환기 예약운전 On/Off
|
|
|
+ TXT_TITLE_ONOFF_RESERVATION = new WpadTextView(context, false, 130, 48, Gravity.LEFT, Color.WHITE, FONT_SIZE_TITLE_NORMAL, true, ID.VentilationMainScreenID.TXT.TITLE_ONOFF_RESERVATION);
|
|
|
+ ViewRegistration(layout, TXT_TITLE_ONOFF_RESERVATION, Common.ImgPosion.GetX(660), Common.ImgPosion.GetY(308));
|
|
|
+ TXT_TITLE_ONOFF_RESERVATION.setText("예약운전");
|
|
|
+// TXT_TITLE_ONOFF_RESERVATION.setBackgroundColor(Color.RED);
|
|
|
+
|
|
|
+ BTN_RESERVATION_CONFIG = new WpadImageView(context, TOUCH_KIND.BUTTON, 66, 66, R.drawable.ctrl_ventil_btn_setreservation_normal, R.drawable.ctrl_ventil_btn_setreservation_pressed, ID.VentilationMainScreenID.BTN.RESERVATION_SET);
|
|
|
+ ViewRegistration(layout, BTN_RESERVATION_CONFIG, Common.ImgPosion.GetX(947), Common.ImgPosion.GetY(299));
|
|
|
+ BTN_RESERVATION_CONFIG.setTouchDelayMs(Common.BTN_DELAY_SHOWPOPUP);
|
|
|
+
|
|
|
+ BTN_ONOFF_RESERVATION = new WpadImageView(context, TOUCH_KIND.BUTTON, 122, 48,
|
|
|
+ new int[] { R.drawable.control_venti_btn_onoff_off, R.drawable.control_venti_btn_onoff_off },
|
|
|
+ new int[] { R.drawable.control_venti_btn_onoff_on, R.drawable.control_venti_btn_onoff_on },
|
|
|
+ ID.VentilationMainScreenID.BTN.ONOFF_RESERVATION);
|
|
|
+ ViewRegistration(layout, BTN_ONOFF_RESERVATION, Common.ImgPosion.GetX(799), Common.ImgPosion.GetY(308));
|
|
|
+ BTN_ONOFF_RESERVATION.setTouchDelayMs(Common.BTN_DELAY_DEVCTRL_VENTIL);
|
|
|
+
|
|
|
+
|
|
|
+ // 제균 On/Off
|
|
|
+ TXT_TITLE_SANITIZATION = new WpadTextView(context, false, 81, 48, Gravity.LEFT, Color.WHITE, FONT_SIZE_TITLE_NORMAL, true, ID.VentilationMainScreenID.TXT.TITLE_ONOFF_SANITIZATION);
|
|
|
+ ViewRegistration(layout, TXT_TITLE_SANITIZATION, Common.ImgPosion.GetX(1019), Common.ImgPosion.GetY(308));
|
|
|
+ TXT_TITLE_SANITIZATION.setText("제 균");
|
|
|
+
|
|
|
+ BTN_ONOFF_SANITIZATION = new WpadImageView(context, TOUCH_KIND.BUTTON, 122, 48,
|
|
|
+ new int[] { R.drawable.control_venti_btn_onoff_off, R.drawable.control_venti_btn_onoff_off },
|
|
|
+ new int[] { R.drawable.control_venti_btn_onoff_on, R.drawable.control_venti_btn_onoff_on },
|
|
|
+ ID.VentilationMainScreenID.BTN.ONOFF_SANITIZATION);
|
|
|
+ ViewRegistration(layout, BTN_ONOFF_SANITIZATION, Common.ImgPosion.GetX(1100), Common.ImgPosion.GetY(308));
|
|
|
+ BTN_ONOFF_SANITIZATION.setTouchDelayMs(Common.BTN_DELAY_DEVCTRL_VENTIL);
|
|
|
+
|
|
|
+ SetSanitiztion(sanitiztion);
|
|
|
+
|
|
|
+ // 각방환기 On/Off
|
|
|
+ TXT_TITLE_VENTILATION = new WpadTextView(context, false, 130, 48, Gravity.LEFT, Color.WHITE, FONT_SIZE_TITLE_NORMAL, true, ID.VentilationMainScreenID.TXT.TITLE_ONOFF_VENTILATION);
|
|
|
+ ViewRegistration(layout, TXT_TITLE_VENTILATION, Common.ImgPosion.GetX(660), Common.ImgPosion.GetY(407));
|
|
|
+ TXT_TITLE_VENTILATION.setText("각방환기");
|
|
|
+// TXT_TITLE_ONOFF_RESERVATION.setBackgroundColor(Color.RED);
|
|
|
+
|
|
|
+ BTN_ONOFF_VANITIZATION = new WpadImageView(context, TOUCH_KIND.BUTTON, 122, 48,
|
|
|
+ new int[] { R.drawable.control_venti_btn_onoff_off, R.drawable.control_venti_btn_onoff_off },
|
|
|
+ new int[] { R.drawable.control_venti_btn_onoff_on, R.drawable.control_venti_btn_onoff_on },
|
|
|
+ ID.VentilationMainScreenID.BTN.ONOFF_VENTILATION);
|
|
|
+ ViewRegistration(layout, BTN_ONOFF_VANITIZATION, Common.ImgPosion.GetX(799), Common.ImgPosion.GetY(407));
|
|
|
+ BTN_ONOFF_VANITIZATION.setTouchDelayMs(Common.BTN_DELAY_DEVCTRL_VENTIL);
|
|
|
+ SetRoomVentiOnOff(room_vanti);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ // 상태밝기
|
|
|
+ TXT_TITLE_BRIGHTNESS = new WpadTextView(context, false, 130, 48, Gravity.LEFT, Color.WHITE, FONT_SIZE_TITLE_NORMAL, true, ID.VentilationMainScreenID.TXT.TITLE_ONOFF_VENTILATION);
|
|
|
+ ViewRegistration(layout, TXT_TITLE_BRIGHTNESS, Common.ImgPosion.GetX(1019), Common.ImgPosion.GetY(407));
|
|
|
+ TXT_TITLE_BRIGHTNESS.setText("상태밝기");
|
|
|
+
|
|
|
+ IMG_BRIGHTNESS_STATUS = new WpadImageView(context, TOUCH_KIND.NONE, 66, 66, R.drawable.ctrl_ventil_icon_bright_1 , 0, ID.VentilationMainScreenID.IMG.BRIGHTNESS_STATUS);
|
|
|
+ ViewRegistration(layout, IMG_BRIGHTNESS_STATUS, Common.ImgPosion.GetX(1148), Common.ImgPosion.GetY(398));
|
|
|
+ IMG_BRIGHTNESS_STATUS.setVisibility(View.INVISIBLE);
|
|
|
+
|
|
|
+ BTN_PAGE_UP = new WpadImageView(getContext(), TOUCH_KIND.BUTTON, 60, 54, R.drawable.btn_venti_room_box_back_normal, R.drawable.btn_venti_room_box_back_pressed, ID.VentilationMainScreenID.BTN.ROOM_BACK );
|
|
|
+ ViewRegistration(getLayout(), BTN_PAGE_UP, Common.ImgPosion.GetX(685), Common.ImgPosion.GetY(504));
|
|
|
+
|
|
|
+ BTN_PAGE_DOWN = new WpadImageView(getContext(), TOUCH_KIND.BUTTON, 60, 54, R.drawable.btn_venti_room_box_next_normal, R.drawable.btn_venti_room_box_next_pressed, ID.VentilationMainScreenID.BTN.ROOM_NEXT );
|
|
|
+ ViewRegistration(getLayout(), BTN_PAGE_DOWN, Common.ImgPosion.GetX(1162), Common.ImgPosion.GetY(504));
|
|
|
+
|
|
|
+ if(nRoomCnt == 4)
|
|
|
+ {
|
|
|
+ BTN_PAGE_DOWN.setImageResource(R.drawable.btn_venti_room_box_next_disabled);
|
|
|
+ BTN_PAGE_UP.setImageResource(R.drawable.btn_venti_room_box_back_disabled);
|
|
|
+ BTN_PAGE_DOWN.setEnabled(false);
|
|
|
+ BTN_PAGE_UP.setEnabled(false);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 현산 자동청정 기능 지원 여부 확인
|
|
|
+ if (InnerCycle && OutAirClean && bAirQualitySensorUsage) bVentilSupportAutoClean = true;
|
|
|
+
|
|
|
+ // 현산 자동청정 On/Off
|
|
|
+ if (bVentilSupportAutoClean) {
|
|
|
+ TXT_TITLE_ONOFF_AUTOCLEAN = new WpadTextView(context, false, 130, 48, Gravity.LEFT, Color.WHITE, FONT_SIZE_TITLE_NORMAL, true, ID.VentilationMainScreenID.TXT.TITLE_ONOFF_AUTOCLEAN);
|
|
|
+ ViewRegistration(layout, TXT_TITLE_ONOFF_AUTOCLEAN, Common.ImgPosion.GetX(660), Common.ImgPosion.GetY(407));
|
|
|
+ TXT_TITLE_ONOFF_AUTOCLEAN.setText("자동청정");
|
|
|
+// TXT_TITLE_ONOFF_AUTOCLEAN.setBackgroundColor(Color.RED);
|
|
|
+
|
|
|
+ BTN_ONOFF_AUTOCLEAN = new WpadImageView(context, TOUCH_KIND.BUTTON, 122, 48,
|
|
|
+ new int[] { R.drawable.control_venti_btn_onoff_off, R.drawable.control_venti_btn_onoff_off },
|
|
|
+ new int[] { R.drawable.control_venti_btn_onoff_on, R.drawable.control_venti_btn_onoff_on },
|
|
|
+ ID.VentilationMainScreenID.BTN.ONOFF_AUTOCLEAN);
|
|
|
+ ViewRegistration(layout, BTN_ONOFF_AUTOCLEAN, Common.ImgPosion.GetX(799), Common.ImgPosion.GetY(407));
|
|
|
+ BTN_ONOFF_AUTOCLEAN.setTouchDelayMs(Common.BTN_DELAY_DEVCTRL_VENTIL);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ if (AutoDriving) {
|
|
|
+ TXT_TITLE_ONOFF_AUTO = new WpadTextView(context, false, 130, 48, Gravity.LEFT, Color.WHITE, FONT_SIZE_TITLE_NORMAL, true, ID.VentilationMainScreenID.TXT.TITLE_ONOFF_MODE_AUTO);
|
|
|
+ ViewRegistration(layout, TXT_TITLE_ONOFF_AUTO, Common.ImgPosion.GetX(660), Common.ImgPosion.GetY(407));
|
|
|
+ TXT_TITLE_ONOFF_AUTO.setText("자동운전");
|
|
|
+// TXT_TITLE_ONOFF_AUTO.setBackgroundColor(Color.RED);
|
|
|
+
|
|
|
+ BTN_VENTILMODE_AUTO = new WpadImageView(context, TOUCH_KIND.BUTTON, 122, 48,
|
|
|
+ new int[] { R.drawable.control_venti_btn_onoff_off, R.drawable.control_venti_btn_onoff_off },
|
|
|
+ new int[] { R.drawable.control_venti_btn_onoff_on, R.drawable.control_venti_btn_onoff_on },
|
|
|
+ ID.VentilationMainScreenID.BTN.MODE_AUTODRIVING);
|
|
|
+ ViewRegistration(layout, BTN_VENTILMODE_AUTO, Common.ImgPosion.GetX(799), Common.ImgPosion.GetY(407));
|
|
|
+ BTN_VENTILMODE_AUTO.setTouchDelayMs(Common.BTN_DELAY_DEVCTRL_VENTIL);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 환기 히터 On/Off
|
|
|
+ if (Support.Heater) {
|
|
|
+ TXT_TITLE_ONOFF_HEATER = new WpadTextView(context, false, 130, 48, Gravity.CENTER, Color.WHITE, FONT_SIZE_TITLE_NORMAL, true, ID.VentilationMainScreenID.TXT.TITLE_ONOFF_HEATER);
|
|
|
+ ViewRegistration(layout, TXT_TITLE_ONOFF_HEATER, Common.ImgPosion.GetX(948), Common.ImgPosion.GetY(407));
|
|
|
+ TXT_TITLE_ONOFF_HEATER.setText("히 터");
|
|
|
+// TXT_TITLE_ONOFF_HEATER.setBackgroundColor(Color.RED);
|
|
|
+
|
|
|
+ BTN_ONOFF_HEATER = new WpadImageView(context, TOUCH_KIND.BUTTON, 122, 48,
|
|
|
+ new int[] { R.drawable.control_venti_btn_onoff_off, R.drawable.control_venti_btn_onoff_off },
|
|
|
+ new int[] { R.drawable.control_venti_btn_onoff_on, R.drawable.control_venti_btn_onoff_on },
|
|
|
+ ID.VentilationMainScreenID.BTN.ONOFF_HEATER);
|
|
|
+ ViewRegistration(layout, BTN_ONOFF_HEATER, Common.ImgPosion.GetX(1087), Common.ImgPosion.GetY(407));
|
|
|
+ BTN_ONOFF_HEATER.setTouchDelayMs(Common.BTN_DELAY_DEVCTRL_VENTIL);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 4. Other - Image & Button Create
|
|
|
+ printDebugLog("[Create] - Step4 : Other - Image & Button Create");
|
|
|
+
|
|
|
+ // 환기 동작 모드
|
|
|
+ TXT_TITLE_MODE = new WpadTextView(context, false, 130, 48, Gravity.LEFT, Color.WHITE, FONT_SIZE_TITLE_NORMAL, true, ID.VentilationMainScreenID.TXT.TITLE_VENTILMODE);
|
|
|
+ ViewRegistration(layout, TXT_TITLE_MODE, Common.ImgPosion.GetX(660), Common.ImgPosion.GetY(606));
|
|
|
+ TXT_TITLE_MODE.setText("환기모드");
|
|
|
+// TXT_TITLE_MODE.setBackgroundColor(Color.RED);
|
|
|
+
|
|
|
+ // 일반환기 모드
|
|
|
+ BTN_VENTILMODE_NORMAL = new WpadImageView(context, TOUCH_KIND.BUTTON, 98, 54,
|
|
|
+ new int[] { R.drawable.ctrl_ventil_btn_mode_normal_normal, R.drawable.ctrl_ventil_btn_mode_normal_pressed },
|
|
|
+ new int[] { R.drawable.ctrl_ventil_btn_mode_normal_selected, R.drawable.ctrl_ventil_btn_mode_normal_pressed },
|
|
|
+ ID.VentilationMainScreenID.BTN.MODE_NORMAL);
|
|
|
+ ViewRegistration(layout, BTN_VENTILMODE_NORMAL, Common.ImgPosion.GetX(801), Common.ImgPosion.GetY(603));
|
|
|
+ BTN_VENTILMODE_NORMAL.setTouchDelayMs(Common.BTN_DELAY_DEVCTRL_VENTIL);
|
|
|
+
|
|
|
+ // 자연환기 모드 (바이패스 모드)
|
|
|
+ if (Support.ByPass) {
|
|
|
+ if (MainActivity.nConstructionFunction == WallpadDeviceSet.CONSTRUCTION_SPECIAL_FUNCTION_SK) {
|
|
|
+ BTN_VENTILMODE_NATURAL = new WpadImageView(context, TOUCH_KIND.BUTTON, 98, 54,
|
|
|
+ new int[] { R.drawable.ctrl_ventil_btn_mode_bypass_normal, R.drawable.ctrl_ventil_btn_mode_bypass_selected },
|
|
|
+ new int[] { R.drawable.ctrl_ventil_btn_mode_bypass_selected, R.drawable.ctrl_ventil_btn_mode_bypass_selected },
|
|
|
+ ID.VentilationMainScreenID.BTN.MODE_BYPASS);
|
|
|
+ ViewRegistration(layout, BTN_VENTILMODE_NATURAL, Common.ImgPosion.GetX(904), Common.ImgPosion.GetY(603));
|
|
|
+ BTN_VENTILMODE_NATURAL.setTouchDelayMs(Common.BTN_DELAY_DEVCTRL_VENTIL);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ BTN_VENTILMODE_NATURAL = new WpadImageView(context, TOUCH_KIND.BUTTON, 98, 54,
|
|
|
+ new int[] { R.drawable.ctrl_ventil_btn_mode_natural_normal, R.drawable.ctrl_ventil_btn_mode_natural_selected },
|
|
|
+ new int[] { R.drawable.ctrl_ventil_btn_mode_natural_selected, R.drawable.ctrl_ventil_btn_mode_natural_selected },
|
|
|
+ ID.VentilationMainScreenID.BTN.MODE_BYPASS);
|
|
|
+ ViewRegistration(layout, BTN_VENTILMODE_NATURAL, Common.ImgPosion.GetX(904), Common.ImgPosion.GetY(603));
|
|
|
+ BTN_VENTILMODE_NATURAL.setTouchDelayMs(Common.BTN_DELAY_DEVCTRL_VENTIL);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 내부순환 모드 (공기청정 모드)
|
|
|
+ if (Support.InnerCycle) {
|
|
|
+ BTN_VENTILMODE_INTERNALCIRCUL = new WpadImageView(context, TOUCH_KIND.BUTTON, 98, 54,
|
|
|
+ new int[] { R.drawable.ctrl_ventil_btn_mode_internal_normal, R.drawable.ctrl_ventil_btn_mode_internal_pressed },
|
|
|
+ new int[] { R.drawable.ctrl_ventil_btn_mode_internal_selected, R.drawable.ctrl_ventil_btn_mode_internal_pressed },
|
|
|
+ ID.VentilationMainScreenID.BTN.MODE_INNERCYCLE);
|
|
|
+ ViewRegistration(layout, BTN_VENTILMODE_INTERNALCIRCUL, Common.ImgPosion.GetX(1006), Common.ImgPosion.GetY(603));
|
|
|
+ BTN_VENTILMODE_INTERNALCIRCUL.setTouchDelayMs(Common.BTN_DELAY_DEVCTRL_VENTIL);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 외기청정 모드 (공기청정 + 외기흡기)
|
|
|
+ if (Support.OutAirClean) {
|
|
|
+ BTN_VENTILMODE_EXTERNALAIRCLEAN = new WpadImageView(context, TOUCH_KIND.BUTTON, 98, 54,
|
|
|
+ new int[] { R.drawable.ctrl_ventil_btn_mode_externalclean_normal, R.drawable.ctrl_ventil_btn_mode_externalclean_pressed },
|
|
|
+ new int[] { R.drawable.ctrl_ventil_btn_mode_externalclean_selected, R.drawable.ctrl_ventil_btn_mode_externalclean_pressed },
|
|
|
+ ID.VentilationMainScreenID.BTN.MODE_OUTAIRCLEAN);
|
|
|
+ ViewRegistration(layout, BTN_VENTILMODE_EXTERNALAIRCLEAN, Common.ImgPosion.GetX(1109), Common.ImgPosion.GetY(603));
|
|
|
+ BTN_VENTILMODE_EXTERNALAIRCLEAN.setTouchDelayMs(Common.BTN_DELAY_DEVCTRL_VENTIL);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 풍량 조절
|
|
|
+ TXT_TITLE_WIND = new WpadTextView(context, false, 130, 48, Gravity.LEFT, Color.WHITE, FONT_SIZE_TITLE_NORMAL, true, ID.VentilationMainScreenID.TXT.TITLE_WINDVOL);
|
|
|
+ ViewRegistration(layout, TXT_TITLE_WIND, Common.ImgPosion.GetX(660), Common.ImgPosion.GetY(705));
|
|
|
+ TXT_TITLE_WIND.setText("풍 량");
|
|
|
+// TXT_TITLE_WIND.setBackgroundColor(Color.RED);
|
|
|
+
|
|
|
+ // 미풍
|
|
|
+ BTN_WIND_01 = new WpadImageView(context, TOUCH_KIND.BUTTON, 129, 54,
|
|
|
+ new int[] { R.drawable.ctrl_ventil_btn_wind_01_normal, R.drawable.ctrl_ventil_btn_wind_01_pressed },
|
|
|
+ new int[] { R.drawable.ctrl_ventil_btn_wind_01_selected, R.drawable.ctrl_ventil_btn_wind_01_pressed },
|
|
|
+ ID.VentilationMainScreenID.BTN.WIND_1);
|
|
|
+ ViewRegistration(layout, BTN_WIND_01, Common.ImgPosion.GetX(800), Common.ImgPosion.GetY(702));
|
|
|
+ BTN_WIND_01.setTouchDelayMs(Common.BTN_DELAY_DEVCTRL_VENTIL);
|
|
|
+
|
|
|
+ // 약풍
|
|
|
+ BTN_WIND_02 = new WpadImageView(context, TOUCH_KIND.BUTTON, 129, 54,
|
|
|
+ new int[] { R.drawable.ctrl_ventil_btn_wind_02_normal, R.drawable.ctrl_ventil_btn_wind_02_pressed },
|
|
|
+ new int[] { R.drawable.ctrl_ventil_btn_wind_02_selected, R.drawable.ctrl_ventil_btn_wind_02_pressed },
|
|
|
+ ID.VentilationMainScreenID.BTN.WIND_2);
|
|
|
+ ViewRegistration(layout, BTN_WIND_02, Common.ImgPosion.GetX(939), Common.ImgPosion.GetY(702));
|
|
|
+ BTN_WIND_02.setTouchDelayMs(Common.BTN_DELAY_DEVCTRL_VENTIL);
|
|
|
+
|
|
|
+ // 강픙
|
|
|
+ BTN_WIND_03 = new WpadImageView(context, TOUCH_KIND.BUTTON, 129, 54,
|
|
|
+ new int[] { R.drawable.ctrl_ventil_btn_wind_03_normal, R.drawable.ctrl_ventil_btn_wind_03_pressed },
|
|
|
+ new int[] { R.drawable.ctrl_ventil_btn_wind_03_selected, R.drawable.ctrl_ventil_btn_wind_03_pressed },
|
|
|
+ ID.VentilationMainScreenID.BTN.WIND_3);
|
|
|
+ ViewRegistration(layout, BTN_WIND_03, Common.ImgPosion.GetX(1078), Common.ImgPosion.GetY(702));
|
|
|
+ BTN_WIND_03.setTouchDelayMs(Common.BTN_DELAY_DEVCTRL_VENTIL);
|
|
|
+
|
|
|
+ // 타이머
|
|
|
+ TXT_TITLE_TIMER = new WpadTextView(context, false, 130, 48, Gravity.LEFT, Color.WHITE, FONT_SIZE_TITLE_NORMAL, true, ID.VentilationMainScreenID.TXT.TITLE_TIMER);
|
|
|
+ ViewRegistration(layout, TXT_TITLE_TIMER, Common.ImgPosion.GetX(49), Common.ImgPosion.GetY(705));
|
|
|
+ TXT_TITLE_TIMER.setText("타이머");
|
|
|
+// TXT_TITLE_TIMER.setBackgroundColor(Color.RED);
|
|
|
+
|
|
|
+ // 타이머 왼쪽 버튼
|
|
|
+ BTN_TIMER_LEFT = new WpadImageView(context, TOUCH_KIND.BUTTON, 80, 54, R.drawable.control_venti_btn_arrow_back_normal, R.drawable.control_venti_btn_arrow_back_pressed, ID.VentilationMainScreenID.BTN.TIMER_LEFT);
|
|
|
+ ViewRegistration(layout, BTN_TIMER_LEFT, Common.ImgPosion.GetX(179), Common.ImgPosion.GetY(702));
|
|
|
+ BTN_TIMER_LEFT.setTouchDelayMs(Common.BTN_DELAY_DEVCTRL);
|
|
|
+
|
|
|
+ // 타이머 오른쪽 버튼
|
|
|
+ BTN_TIMER_RIGHT = new WpadImageView(context, TOUCH_KIND.BUTTON, 80, 54, R.drawable.control_venti_btn_arrow_next_normal, R.drawable.control_venti_btn_arrow_next_pressed, ID.VentilationMainScreenID.BTN.TIMER_RIGHT);
|
|
|
+ ViewRegistration(layout, BTN_TIMER_RIGHT, Common.ImgPosion.GetX(506), Common.ImgPosion.GetY(702));
|
|
|
+ BTN_TIMER_RIGHT.setTouchDelayMs(Common.BTN_DELAY_DEVCTRL);
|
|
|
+
|
|
|
+ // 타이머 상태
|
|
|
+ TXT_TIMER = new WpadTextView(context, false, 247, 54, Gravity.CENTER, Color.WHITE, Common.fontsize._36, true, ID.VentilationMainScreenID.TXT.TIMER_VALUE);
|
|
|
+ ViewRegistration(layout, TXT_TIMER, Common.ImgPosion.GetX(259), Common.ImgPosion.GetY(702));
|
|
|
+
|
|
|
+ // 5. Draw_Update
|
|
|
+ printDebugLog("[Create] - Step5 : Draw_Update");
|
|
|
+
|
|
|
+ // 공기질 표시 구역 컴포넌트 등록
|
|
|
+ if (bDisplayAirQuality) registerAirQualityFragment(context, layout);
|
|
|
+
|
|
|
+ // 6.1. 환기 에니메이션용 Handler
|
|
|
+ registerVentilModeAnimHandler();
|
|
|
+
|
|
|
+ // 6.2. 필터교환 에니메이션용 Handler
|
|
|
+ registerFilterChangeAnimHandler();
|
|
|
+
|
|
|
+ updateScreen();
|
|
|
+
|
|
|
+
|
|
|
+ if (MainActivity.getHideMenuOn()) mTransactionDisplay = new TransactionDisplay(true, (WallPadDevAPI) null, (WpadScreen) this);
|
|
|
+
|
|
|
+
|
|
|
+ if (mAirQualitySensorAPI != null) {
|
|
|
+ registerAirSensorBR(true);
|
|
|
+ }
|
|
|
+ updateAirQualityFragment();
|
|
|
+
|
|
|
+ // 현산모델에서 안전모드일시 시작과 동시에 알람팝업을 띄움
|
|
|
+ if (Version.getGatewayUsage()) {
|
|
|
+ if (Fault.SafeMode) {
|
|
|
+ Handler PopupHandler = new Handler() {
|
|
|
+ @SuppressLint("HandlerLeak")
|
|
|
+ @Override
|
|
|
+ public void handleMessage(Message msg) {
|
|
|
+ if (msg.what == 0) {
|
|
|
+ // 안전모드 팝업
|
|
|
+ startAlarmPopup(ID.VentiPopup_Alarm.kind.SafeMode);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+ PopupHandler.sendEmptyMessageDelayed(0, 300);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ protected void SetSanitiztion(boolean _onoff)
|
|
|
+ {
|
|
|
+ if(!OnOff)
|
|
|
+ {
|
|
|
+ sanitiztion = false;
|
|
|
+ BTN_ONOFF_SANITIZATION.setButtonFrontImage();
|
|
|
+ IMG_SANITIZATION_STATUS.setVisibility(View.INVISIBLE);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ sanitiztion = _onoff;
|
|
|
+ if (sanitiztion)
|
|
|
+ {
|
|
|
+ BTN_ONOFF_SANITIZATION.setButtonRearImage();
|
|
|
+ IMG_SANITIZATION_STATUS.setVisibility(View.VISIBLE);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ BTN_ONOFF_SANITIZATION.setButtonFrontImage();
|
|
|
+ IMG_SANITIZATION_STATUS.setVisibility(View.INVISIBLE);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ protected void SetRoomVentiOnOff(boolean _onoff)
|
|
|
+ {
|
|
|
+ if(!OnOff)
|
|
|
+ {
|
|
|
+ room_vanti = false;
|
|
|
+ BTN_ONOFF_VANITIZATION.setButtonFrontImage();
|
|
|
+ int status;
|
|
|
+ for(int i = 0 ; i< roomView.length; i++)
|
|
|
+ {
|
|
|
+ switch (i)
|
|
|
+ {
|
|
|
+ case 0:
|
|
|
+ status = 0;
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ status = 3;
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ status = 2;
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ status = 1;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ status = 0;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ roomView[i].setStatus(false, status);
|
|
|
+ }
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ room_vanti = _onoff;
|
|
|
+ if (room_vanti)
|
|
|
+ {
|
|
|
+
|
|
|
+ BTN_ONOFF_VANITIZATION.setButtonRearImage();
|
|
|
+ int status;
|
|
|
+ for(int i = 0 ; i< roomView.length; i++)
|
|
|
+ {
|
|
|
+ switch (i)
|
|
|
+ {
|
|
|
+ case 0:
|
|
|
+ status = 0;
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ status = 3;
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ status = 2;
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ status = 1;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ status = 0;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ roomView[i].setStatus(true, status);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ BTN_ONOFF_VANITIZATION.setButtonFrontImage();
|
|
|
+ int status;
|
|
|
+ for(int i = 0 ; i< roomView.length; i++)
|
|
|
+ {
|
|
|
+ switch (i)
|
|
|
+ {
|
|
|
+ case 0:
|
|
|
+ status = 0;
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ status = 3;
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ status = 2;
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ status = 1;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ status = 0;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ roomView[i].setStatus(false, status);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void registerVentilModeAnimHandler() {
|
|
|
+ try {
|
|
|
+ mVentilAnimHandler = new Handler() {
|
|
|
+ @SuppressLint("HandlerLeak")
|
|
|
+ @Override
|
|
|
+ public void handleMessage(Message msg) {
|
|
|
+ //Log.d(TAG, "FanAnimHandler - msg.what = " + msg.what);
|
|
|
+
|
|
|
+ if (Support.ByPass && ByPass) {
|
|
|
+ // 자연환기 동작중 애니메이션 이미지 지정
|
|
|
+ mVentilAnim = mAnimModeNatural;
|
|
|
+ }
|
|
|
+ else if (Support.InnerCycle && InnerCycle) {
|
|
|
+ // 내부순환 동작중 애니메이션 이미지 지정
|
|
|
+ mVentilAnim = mAnimModeInternalCircul;
|
|
|
+ }
|
|
|
+ else if (Support.OutAirClean && OutAirClean) {
|
|
|
+ // 외기청정 동작중 애니메이션 이미지 지정
|
|
|
+ mVentilAnim = mAnimModeExternalClean;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ // 나머지의 경우 일반환기 동작중 애니메이션 지정
|
|
|
+ mVentilAnim = mAnimModeNormal;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (msg.what == 1) {
|
|
|
+ if (mVentilAnimImgCnt >= mVentilAnim.length) mVentilAnimImgCnt = 0;
|
|
|
+ IMG_VENTIL_ANIM.setImageResource(mVentilAnim[mVentilAnimImgCnt]);
|
|
|
+ mVentilAnimImgCnt++;
|
|
|
+ if (mVentilAnimHandler != null) mVentilAnimHandler.sendEmptyMessageDelayed(msg.what, 400);
|
|
|
+ }
|
|
|
+ else if (msg.what == 2) {
|
|
|
+ if (mVentilAnimImgCnt >= mVentilAnim.length) mVentilAnimImgCnt = 0;
|
|
|
+ IMG_VENTIL_ANIM.setImageResource(mVentilAnim[mVentilAnimImgCnt]);
|
|
|
+ mVentilAnimImgCnt++;
|
|
|
+ if (mVentilAnimHandler != null) mVentilAnimHandler.sendEmptyMessageDelayed(msg.what, 300);
|
|
|
+ }
|
|
|
+ else if (msg.what == 3) {
|
|
|
+ if (mVentilAnimImgCnt >= mVentilAnim.length) mVentilAnimImgCnt = 0;
|
|
|
+ IMG_VENTIL_ANIM.setImageResource(mVentilAnim[mVentilAnimImgCnt]);
|
|
|
+ mVentilAnimImgCnt++;
|
|
|
+ if (mVentilAnimHandler != null) mVentilAnimHandler.sendEmptyMessageDelayed(msg.what, 200);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+ } catch (RuntimeException re) {
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ }
|
|
|
+ catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] registerVentilModeAnimHandler()");
|
|
|
+ //e.printStackTrace();
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void registerFilterChangeAnimHandler() {
|
|
|
+ try {
|
|
|
+ mFilterChangeHandler = new Handler() {
|
|
|
+ @SuppressLint("HandlerLeak")
|
|
|
+ @Override
|
|
|
+ public void handleMessage(Message msg) {
|
|
|
+ //Log.d(TAG, "FanAnimHandler - msg.what = " + msg.what);
|
|
|
+ if (msg.what == 0) {
|
|
|
+ mFilterChangeHandlerRun = false;
|
|
|
+ IMG_FILTER_CHANGE.setVisibility(View.INVISIBLE);
|
|
|
+ bFilterChange = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (msg.what == 1) {
|
|
|
+ mFilterChangeHandlerRun = true;
|
|
|
+ if (Support.FilterReset) {
|
|
|
+ if (IMG_FILTER_CHANGE.getVisibility() == View.INVISIBLE) {
|
|
|
+ IMG_FILTER_CHANGE.setVisibility(View.VISIBLE);
|
|
|
+ bFilterChange = true;
|
|
|
+ }
|
|
|
+ IMG_FILTER_CHANGE.setButtonFrontImage();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ IMG_FILTER_CHANGE.setVisibility(View.VISIBLE);
|
|
|
+ bFilterChange = true;
|
|
|
+ }
|
|
|
+ mFilterChangeHandler.sendEmptyMessageDelayed(2, 1000);
|
|
|
+ }
|
|
|
+ else if (msg.what == 2) {
|
|
|
+ mFilterChangeHandlerRun = true;
|
|
|
+ if (Support.FilterReset) {
|
|
|
+ IMG_FILTER_CHANGE.setButtonRearImage();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ IMG_FILTER_CHANGE.setVisibility(View.INVISIBLE);
|
|
|
+ bFilterChange = false;
|
|
|
+ }
|
|
|
+ mFilterChangeHandler.sendEmptyMessageDelayed(1, 1000);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+ } catch (RuntimeException re) {
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ }
|
|
|
+ catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] registerFilterChangeAnimHandler()");
|
|
|
+ //e.printStackTrace();
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 본 스크린 종료시 호출됨
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ protected void onClose() {
|
|
|
+ super.onClose();
|
|
|
+
|
|
|
+ // 등록된 BR 을 해제 한다.
|
|
|
+ if (MainActivity.getHideMenuOn()) { if(mTransactionDisplay != null) mTransactionDisplay.Close(); }
|
|
|
+
|
|
|
+ if (bAirQualitySensorUsage) {
|
|
|
+ if (mAirQualitySensorAPI != null) registerAirSensorBR(false);
|
|
|
+ }
|
|
|
+
|
|
|
+ drawAirFlowAnim((byte)0x00);
|
|
|
+ mVentilAnimHandler = null;
|
|
|
+
|
|
|
+ Log.i(TAG, "[END - Screen] ********************************************");
|
|
|
+ }
|
|
|
+
|
|
|
+ // =================================================================================================
|
|
|
+ // [[ BroadcastReceiver ]] region
|
|
|
+ // =================================================================================================
|
|
|
+ /**
|
|
|
+ * 부모 Activity 에서 BroadcastReceiver 을 수신받을시 호출됨
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ protected void onBrReceive(Intent intent) {
|
|
|
+ super.onBrReceive(intent);
|
|
|
+
|
|
|
+ String ActionName = intent.getAction();
|
|
|
+
|
|
|
+ printDebugLog("[[[[ onBrReceive ]]]] ActionName = " + ActionName);
|
|
|
+ if (ActionName.equals(ID.VentilationMainScreenID.BR_VENTI)) {
|
|
|
+ printDebugLog("onBrReceive - BR_VENTI");
|
|
|
+ updateVentilatorData(false);
|
|
|
+ updateScreen();
|
|
|
+ }
|
|
|
+ else if (ActionName.equals(ID.AirQualityMainScreenID.BR_AIRQUALITY)) {
|
|
|
+ if (bAirQualitySensorUsage) {
|
|
|
+ printDebugLog("onBrReceive - BR_AIRQUALITY");
|
|
|
+ updateAirSensorData(false);
|
|
|
+ updateAirQualityFragment();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 팝업 Activity에서 Result 를 전달 받았을시 호출된다.
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ protected void onPopupResult(Intent intent) {
|
|
|
+ super.onPopupResult(intent);
|
|
|
+
|
|
|
+ if (intent != null) {
|
|
|
+ int nScreenID = intent.getIntExtra("SCREEN", -1);
|
|
|
+ if (nScreenID == ID.screen.VentiPopupAlarmScreen) {
|
|
|
+ int nKind = intent.getIntExtra("KIND", -1);
|
|
|
+ boolean bOK = intent.getBooleanExtra("OK", false);
|
|
|
+
|
|
|
+ printDebugLog("[onPopupResult] bOK [" + bOK + "], nKind [" + nKind + "]");
|
|
|
+
|
|
|
+ if (bOK) {
|
|
|
+ if (nKind == ID.VentiPopup_Alarm.kind.ReservationClear) {
|
|
|
+ if (OPERATION_MODE == Common.MODE_NOMAL) {
|
|
|
+ ctrlDeviceReservation(false);
|
|
|
+ }
|
|
|
+ else if (OPERATION_MODE == Common.MODE_BUSINESS_SAMPLE) {
|
|
|
+ Sample_ReservationOnOff(false);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (nKind == ID.VentiPopup_Alarm.kind.HeaterOn) {
|
|
|
+ if (OPERATION_MODE == Common.MODE_NOMAL) {
|
|
|
+ ctrlDeviceHeater(true);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (nKind == ID.VentiPopup_Alarm.kind.FilterReset) {
|
|
|
+ if (OPERATION_MODE == Common.MODE_NOMAL) {
|
|
|
+ ctrlDeviceResetFilter();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (nKind == ID.VentiPopup_Alarm.kind.SafeMode) {
|
|
|
+
|
|
|
+ }
|
|
|
+ else if (nKind == ID.VentiPopup_Alarm.kind.HDCAutoAirCleanOn) {
|
|
|
+ if (OPERATION_MODE == Common.MODE_NOMAL) {
|
|
|
+ ctrlDeviceAutoVentil(true);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (nKind == ID.VentiPopup_Alarm.kind.CancelHDCAutoAirCleanNRunReservation) {
|
|
|
+ if (OPERATION_MODE == Common.MODE_NOMAL) {
|
|
|
+ ctrlDeviceAutoAirClean(false);
|
|
|
+ ctrlDeviceReservation(true);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (nKind == ID.VentiPopup_Alarm.kind.CancelReservationNRunAutoAirClean) {
|
|
|
+ if (OPERATION_MODE == Common.MODE_NOMAL) {
|
|
|
+ ctrlDeviceReservation(false);
|
|
|
+ ctrlDevicePower(true);
|
|
|
+ ctrlDeviceAutoAirClean(true);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (nKind == ID.VentiPopup_Alarm.kind.AirQualityFanWarning) {
|
|
|
+ if (OPERATION_MODE == Common.MODE_NOMAL) {
|
|
|
+ ctrlDeviceAirQualitySensorFan(AirQualityData.Device.FanMode.Always);
|
|
|
+ ctrlDevicePower(true);
|
|
|
+ ctrlDeviceAutoAirClean(true);
|
|
|
+// if (super.setChangeScreen(API_Menu.SubMenuCtrl.Inner_AirQuality)) {
|
|
|
+// ctrlDeviceAirQualitySensorFan(AirQualityData.FanMode.Always);
|
|
|
+// ctrlDevicePower(true);
|
|
|
+// ctrlDeviceAutoAirClean(true);
|
|
|
+// // 환기 뒤로가기 버튼 생성(공기질 --> 환기)
|
|
|
+//// ((MainActivity)(getContext())).setVentilBackBtnVisible(true);
|
|
|
+// }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (nScreenID == ID.screen.VentiPopupReservationScreen) {
|
|
|
+ if (OPERATION_MODE == Common.MODE_BUSINESS_SAMPLE) {
|
|
|
+ boolean Reservation = intent.getBooleanExtra("Reservation", false);
|
|
|
+ Sample_ReservationOnOff(Reservation);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // =================================================================================================
|
|
|
+ // [[ Touch & Key Event ]] region
|
|
|
+ // =================================================================================================
|
|
|
+ /**
|
|
|
+ * 본 클래스에서 등록한 [WpadImageView] [WpadTextView] 의 TouchEvent 가 있을시 호출됨
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ protected void onTouchEvent(View v, MotionEvent event) {
|
|
|
+ super.onTouchEvent(v, event);
|
|
|
+
|
|
|
+ int nTargetID = v.getId();
|
|
|
+ int nMoveEvent = event.getAction();
|
|
|
+
|
|
|
+// printDebugLog("[onTouchEvent] nMoveEvent [" + nMoveEvent + "]");
|
|
|
+
|
|
|
+ if (nMoveEvent == MotionEvent.ACTION_UP) {
|
|
|
+ printDebugLog("[onTouchEvent] nTargetID [" + nTargetID + "]");
|
|
|
+ if (nTargetID == ID.VentilationMainScreenID.TXT.ALARM_MESSAGE) {
|
|
|
+ printDebugLog("[onTouchEvent] ALARMMSG");
|
|
|
+ startAlarmPopup(ID.VentiPopup_Alarm.kind.DeviceError);
|
|
|
+ }
|
|
|
+ else if (nTargetID == ID.VentilationMainScreenID.BTN.ONOFF_POWER) {
|
|
|
+ // ON/OFF
|
|
|
+ OnOff =!OnOff;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ printDebugLog("[onTouchEvent] ONOFF_POWER");
|
|
|
+ if (Version.getGatewayUsage()) {
|
|
|
+ if (Fault.SafeMode) {
|
|
|
+ // 안전모드 팝업
|
|
|
+ startAlarmPopup(ID.VentiPopup_Alarm.kind.SafeMode);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (Reservation) {
|
|
|
+ // 예약중입니다 팝업 알람
|
|
|
+ startAlarmPopup(ID.VentiPopup_Alarm.kind.ReservationClear);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (OPERATION_MODE == Common.MODE_NOMAL) {
|
|
|
+ int ret = ctrlDevicePower(OnOff);
|
|
|
+ if (ret >= 0) Sound().Play(SND.effect.TOUCH_LATCHED);
|
|
|
+ else Sound().Play(SND.effect.TOUCH_UNLATCHED);
|
|
|
+ //OnOff를 다르게 해서 저장
|
|
|
+
|
|
|
+ }
|
|
|
+ else if (OPERATION_MODE == Common.MODE_BUSINESS_SAMPLE) {
|
|
|
+ Sample_PowerOnOff();
|
|
|
+ Sound().Play(SND.effect.TOUCH_LATCHED);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(OnOff)
|
|
|
+ IMG_BRIGHTNESS_STATUS.setVisibility(View.VISIBLE);
|
|
|
+ else
|
|
|
+ {
|
|
|
+ IMG_BRIGHTNESS_STATUS.setVisibility(View.INVISIBLE);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(!OnOff)
|
|
|
+ {
|
|
|
+ SetRoomVentiOnOff(false);
|
|
|
+ SetSanitiztion(false);
|
|
|
+ }
|
|
|
+
|
|
|
+ updateScreen();
|
|
|
+ }
|
|
|
+ else if (nTargetID == ID.VentilationMainScreenID.BTN.ONOFF_AUTOCLEAN) {
|
|
|
+ // 자동청정
|
|
|
+ HDCAutoAirClean = !HDCAutoAirClean;
|
|
|
+ printDebugLog("[onTouchEvent] ONOFF_AUTOCLEAN");
|
|
|
+
|
|
|
+ if (Reservation) {
|
|
|
+ // 예약중입니다 팝업 알람
|
|
|
+ startAlarmPopup(ID.VentiPopup_Alarm.kind.CancelReservationNRunAutoAirClean);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (OPERATION_MODE == Common.MODE_NOMAL) {
|
|
|
+
|
|
|
+ if (mAirQualityData == null) {
|
|
|
+ Log.w(TAG, "[onTouchEvent] mAirQualityData is null!!");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 공기질 센서 팬 동작 모드 상태를 확인하여, 상시 동작모드가 아니면 팬 동작 모드를 팝엉 알림 후 상시 동작모드로 동작 시킨다.
|
|
|
+// if (mAirQualityData.device.bAutoFanCtrl || mAirQualityData.device.hFanMode == AirQualityData.Device.FanMode.Off) {
|
|
|
+// startAlarmPopup(ID.VentiPopup_Alarm.kind.AirQualityFanWarning);
|
|
|
+// return;
|
|
|
+// }
|
|
|
+
|
|
|
+ if (!OnOff) {
|
|
|
+ // 전원을 On 시켜주세요 팝업 알람
|
|
|
+ startAlarmPopup(ID.VentiPopup_Alarm.kind.TurnOnVentilPower);
|
|
|
+ return;
|
|
|
+// int ret = ctrlDevicePower(true);
|
|
|
+// if (ret < 0) {
|
|
|
+// Sound().Play(SND.effect.TOUCH_UNLATCHED);
|
|
|
+// return;
|
|
|
+// }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 공기질 센서 팬 동작 모드가 자동이 아니고, 꺼져 있는 경우에는 Auto 동작 모드로 동작 시킨다.
|
|
|
+ if (!mAirQualityData.device.bAutoFanCtrl && mAirQualityData.device.hFanMode == AirQualityData.Device.FanMode.Off) {
|
|
|
+ int ret = ctrlDeviceAirQualitySensorFan(AirQualityData.Device.FanMode.Auto);
|
|
|
+ if (ret < 0) {
|
|
|
+ Sound().Play(SND.effect.TOUCH_UNLATCHED);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ int ret = ctrlDeviceAutoAirClean(HDCAutoAirClean);
|
|
|
+ if (ret >= 0) Sound().Play(SND.effect.TOUCH_LATCHED);
|
|
|
+ else Sound().Play(SND.effect.TOUCH_UNLATCHED);
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ else if (OPERATION_MODE == Common.MODE_BUSINESS_SAMPLE) {
|
|
|
+ Sample_PowerOnOff();
|
|
|
+ Sound().Play(SND.effect.TOUCH_LATCHED);
|
|
|
+ }
|
|
|
+ updateScreen();
|
|
|
+ }
|
|
|
+ else if (nTargetID == ID.VentilationMainScreenID.BTN.ONOFF_RESERVATION) {
|
|
|
+ Reservation = !Reservation;
|
|
|
+ // 예약
|
|
|
+ printDebugLog("[onTouchEvent] ONOFF_RESERVATION");
|
|
|
+
|
|
|
+ if (HDCAutoAirClean) {
|
|
|
+ // 자동청정기능이 동작중입니다.
|
|
|
+ startAlarmPopup(ID.VentiPopup_Alarm.kind.CancelHDCAutoAirCleanNRunReservation);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ int ret = ctrlDeviceReservation(Reservation);
|
|
|
+ if (ret >= 0) Sound().Play(SND.effect.TOUCH_LATCHED);
|
|
|
+ else Sound().Play(SND.effect.TOUCH_UNLATCHED);
|
|
|
+ updateScreen();
|
|
|
+
|
|
|
+ }
|
|
|
+ else if (nTargetID == ID.VentilationMainScreenID.BTN.RESERVATION_SET) {
|
|
|
+ // 예약운전
|
|
|
+ printDebugLog("[onTouchEvent] ONOFF_POWER");
|
|
|
+
|
|
|
+ Sound().Play(SND.effect.TOUCH_LATCHED);
|
|
|
+
|
|
|
+ if (OPERATION_MODE == Common.MODE_NOMAL) {
|
|
|
+ ((MainActivity)(getContext())).StartPopup(ID.screen.VentiPopupReservationScreen);
|
|
|
+ }
|
|
|
+ else if (OPERATION_MODE == Common.MODE_BUSINESS_SAMPLE) {
|
|
|
+ Intent intent = new Intent();
|
|
|
+ intent.putExtra("Reservation", Reservation);
|
|
|
+ ((MainActivity)(getContext())).StartPopup(ID.screen.VentiPopupReservationScreen, intent);
|
|
|
+ }
|
|
|
+ updateScreen();
|
|
|
+ }
|
|
|
+ else if (nTargetID == ID.VentilationMainScreenID.BTN.ONOFF_HEATER) {
|
|
|
+ // 히터
|
|
|
+ printDebugLog("onTouchEvent [HEATER] BUTTON !!!");
|
|
|
+
|
|
|
+ // 전원 OFF 체크
|
|
|
+ if (!OnOff) return;
|
|
|
+
|
|
|
+ if (HeaterStatus == Venti.HEATER.OFF) {
|
|
|
+ // 히터알람 팝업
|
|
|
+ startAlarmPopup(ID.VentiPopup_Alarm.kind.HeaterOn);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ int ret = ctrlDeviceHeater(false);
|
|
|
+ if (ret >= 0) Sound().Play(SND.effect.TOUCH_LATCHED);
|
|
|
+ else Sound().Play(SND.effect.TOUCH_UNLATCHED);
|
|
|
+ }
|
|
|
+ updateScreen();
|
|
|
+ }
|
|
|
+ else if (nTargetID == ID.VentilationMainScreenID.BTN.MODE_NORMAL) {
|
|
|
+ // 일반환기
|
|
|
+ printDebugLog("onTouchEvent [MODE_NORMAL] BUTTON !!!");
|
|
|
+
|
|
|
+ // 전원 OFF 체크
|
|
|
+ if (!OnOff) return;
|
|
|
+
|
|
|
+ if (Support2.WindowVenti && Reservation) {
|
|
|
+ printDebugLog("[onTouchEvent] ========== jeff 1 ==========");
|
|
|
+ // 예약중입니다 팝업 알람
|
|
|
+ startAlarmPopup(ID.VentiPopup_Alarm.kind.ReservationClear);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (Reservation) {
|
|
|
+ printDebugLog("[onTouchEvent] ========== jeff 2 ==========");
|
|
|
+ // 예약중입니다 팝업 알람
|
|
|
+ startAlarmPopup(ID.VentiPopup_Alarm.kind.ReservationClear);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ SetMode(NormalMode);
|
|
|
+
|
|
|
+ int ret = -99;
|
|
|
+ if (ByPass) {
|
|
|
+ ret = ctrlDeviceNaturalVentil(false);
|
|
|
+ if (ret < 0) {
|
|
|
+ Sound().Play(SND.effect.TOUCH_UNLATCHED);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (InnerCycle) {
|
|
|
+ ret = ctrlDeviceInternalVentil(false);
|
|
|
+ if (ret < 0) {
|
|
|
+ Sound().Play(SND.effect.TOUCH_UNLATCHED);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (OutAirClean) {
|
|
|
+ ret = ctrlDeviceOutAirClean(false);
|
|
|
+ if (ret < 0) {
|
|
|
+ Sound().Play(SND.effect.TOUCH_UNLATCHED);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ ret = 0;
|
|
|
+ if (ret >= 0) Sound().Play(SND.effect.TOUCH_LATCHED);
|
|
|
+ else Sound().Play(SND.effect.TOUCH_UNLATCHED);
|
|
|
+
|
|
|
+ updateScreen();
|
|
|
+ }
|
|
|
+ else if (nTargetID == ID.VentilationMainScreenID.BTN.MODE_BYPASS) {
|
|
|
+
|
|
|
+ // 자연환기
|
|
|
+ printDebugLog("onTouchEvent [BYPASS] BUTTON !!!");
|
|
|
+
|
|
|
+ // 전원 OFF 체크
|
|
|
+ if (!OnOff) return;
|
|
|
+
|
|
|
+ SetMode(Mode.ByPassMode);
|
|
|
+ if (Support2.WindowVenti && Reservation) {
|
|
|
+ // 예약중입니다 팝업 알람
|
|
|
+ startAlarmPopup(ID.VentiPopup_Alarm.kind.ReservationClear);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ int ret = ctrlDeviceNaturalVentil(ByPass);
|
|
|
+ if (ret >= 0) Sound().Play(SND.effect.TOUCH_LATCHED);
|
|
|
+ else Sound().Play(SND.effect.TOUCH_UNLATCHED);
|
|
|
+
|
|
|
+ updateScreen();
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ else if (nTargetID == ID.VentilationMainScreenID.BTN.MODE_AUTODRIVING) {
|
|
|
+ // 자동환기
|
|
|
+
|
|
|
+ printDebugLog("onTouchEvent [AUTODRIVING] BUTTON !!!");
|
|
|
+
|
|
|
+ // 예약운전 OFF, 타이머 OFF 체크
|
|
|
+ if (Reservation) {
|
|
|
+ if (Support2.WindowVenti) {
|
|
|
+ // 예약중입니다 팝업 알람
|
|
|
+ startAlarmPopup(ID.VentiPopup_Alarm.kind.ReservationClear);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (Timer != 0) return;
|
|
|
+
|
|
|
+
|
|
|
+ if (AutoDriving == false) {
|
|
|
+ // 자동운전 알림 팝업
|
|
|
+ if (Support2.WindowVenti) {
|
|
|
+ // 창호 환기 - 자동모드(하이브리드)
|
|
|
+ // 자동모드 설정 팝업 생성 안하고 바로 제어
|
|
|
+
|
|
|
+ int ret = ctrlDeviceAutoVentil(true);
|
|
|
+ if(ret >= 0) Sound().Play(SND.effect.TOUCH_LATCHED);
|
|
|
+ else Sound().Play(SND.effect.TOUCH_UNLATCHED);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ // 일반 전열교환기(일반 환기장비)
|
|
|
+// startAlarmPopup(ID.VentiPopup_Alarm.kind.HDCAutoAirCleanOn);
|
|
|
+ int ret = ctrlDeviceAutoVentil(true);
|
|
|
+ if(ret >= 0) Sound().Play(SND.effect.TOUCH_LATCHED);
|
|
|
+ else Sound().Play(SND.effect.TOUCH_UNLATCHED);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ int ret = ctrlDeviceAutoVentil(false);
|
|
|
+ if (ret >= 0) Sound().Play(SND.effect.TOUCH_LATCHED);
|
|
|
+ else Sound().Play(SND.effect.TOUCH_UNLATCHED);
|
|
|
+ }
|
|
|
+
|
|
|
+ updateScreen();
|
|
|
+ }
|
|
|
+ else if (nTargetID == ID.VentilationMainScreenID.BTN.MODE_INNERCYCLE) {
|
|
|
+ // 내부순환
|
|
|
+ printDebugLog("onTouchEvent [INNERCYCLE] BUTTON !!!");
|
|
|
+
|
|
|
+ // 전원 OFF 체크
|
|
|
+ if (!OnOff) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 예약중 체크
|
|
|
+ if (Reservation) {
|
|
|
+ // 예약중입니다 팝업 알람
|
|
|
+ startAlarmPopup(ID.VentiPopup_Alarm.kind.ReservationClear);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ SetMode(Mode.InnerCycleMode);
|
|
|
+ if (OPERATION_MODE == Common.MODE_NOMAL){
|
|
|
+ if (InnerCycle) {
|
|
|
+ // 사용중일때 눌림 : On -> Off
|
|
|
+ int ret = ctrlDeviceInternalVentil(false);
|
|
|
+ if (ret >= 0) Sound().Play(SND.effect.TOUCH_LATCHED);
|
|
|
+ else Sound().Play(SND.effect.TOUCH_UNLATCHED);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ // Off -> On
|
|
|
+ int ret = ctrlDeviceInternalVentil(true);
|
|
|
+ if (ret >= 0) Sound().Play(SND.effect.TOUCH_LATCHED);
|
|
|
+ else Sound().Play(SND.effect.TOUCH_UNLATCHED);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (OPERATION_MODE == Common.MODE_BUSINESS_SAMPLE){
|
|
|
+ Sample_InnerCycle(!InnerCycle);
|
|
|
+ Sound().Play(SND.effect.TOUCH_LATCHED);
|
|
|
+ }
|
|
|
+
|
|
|
+ updateScreen();
|
|
|
+ }
|
|
|
+ else if (nTargetID == ID.VentilationMainScreenID.BTN.MODE_OUTAIRCLEAN) {
|
|
|
+ // 내부순환
|
|
|
+ printDebugLog("onTouchEvent [OUTAIRCLEAN] BUTTON !!!");
|
|
|
+
|
|
|
+ // 전원 OFF 체크
|
|
|
+ if (!OnOff) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 예약중 체크
|
|
|
+ if (Reservation) {
|
|
|
+ // 예약중입니다 팝업 알람
|
|
|
+ startAlarmPopup(ID.VentiPopup_Alarm.kind.ReservationClear);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ SetMode(Mode.OutAirCleanMode);
|
|
|
+ if (OPERATION_MODE == Common.MODE_NOMAL) {
|
|
|
+ if (OutAirClean) {
|
|
|
+ // 사용중일때 눌림 : On -> Off
|
|
|
+ int ret = ctrlDeviceOutAirClean(false);
|
|
|
+ if (ret >= 0) Sound().Play(SND.effect.TOUCH_LATCHED);
|
|
|
+ else Sound().Play(SND.effect.TOUCH_UNLATCHED);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ // Off -> On
|
|
|
+ int ret = ctrlDeviceOutAirClean(true);
|
|
|
+ if (ret >= 0) Sound().Play(SND.effect.TOUCH_LATCHED);
|
|
|
+ else Sound().Play(SND.effect.TOUCH_UNLATCHED);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (OPERATION_MODE == Common.MODE_BUSINESS_SAMPLE) {
|
|
|
+ Sample_OutAirClean(!OutAirClean);
|
|
|
+ Sound().Play(SND.effect.TOUCH_LATCHED);
|
|
|
+ }
|
|
|
+
|
|
|
+ updateScreen();
|
|
|
+ }
|
|
|
+ else if (nTargetID == ID.VentilationMainScreenID.BTN.MODE_SLEEP) {
|
|
|
+ // 취침 모드
|
|
|
+ printDebugLog("onTouchEvent [SLEEP] BUTTON !!!");
|
|
|
+
|
|
|
+ // 전원 OFF 체크
|
|
|
+ if (!OnOff) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (Support2.WindowVenti && Reservation) {
|
|
|
+ // 예약중입니다 팝업 알람
|
|
|
+ startAlarmPopup(ID.VentiPopup_Alarm.kind.ReservationClear);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (OPERATION_MODE == Common.MODE_NOMAL) {
|
|
|
+ if (Sleep == Venti.SLEEP.SLEEP_ON) {
|
|
|
+ // 사용중일때 눌림 : On -> Off
|
|
|
+ int ret = ctrlDeviceSleepMode(false);
|
|
|
+ if (ret >= 0) Sound().Play(SND.effect.TOUCH_LATCHED);
|
|
|
+ else Sound().Play(SND.effect.TOUCH_UNLATCHED);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ // Off -> On
|
|
|
+ int ret = ctrlDeviceSleepMode(true);
|
|
|
+ if (ret >= 0) Sound().Play(SND.effect.TOUCH_LATCHED);
|
|
|
+ else Sound().Play(SND.effect.TOUCH_UNLATCHED);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (OPERATION_MODE == Common.MODE_BUSINESS_SAMPLE) {
|
|
|
+ boolean onoff = false;
|
|
|
+ if (Sleep == Venti.SLEEP.SLEEP_ON) onoff = true;
|
|
|
+
|
|
|
+ Sample_SleepMode(onoff);
|
|
|
+ Sound().Play(SND.effect.TOUCH_LATCHED);
|
|
|
+ }
|
|
|
+
|
|
|
+ updateScreen();
|
|
|
+ }
|
|
|
+ else if ((nTargetID >= ID.VentilationMainScreenID.BTN.WIND_1) && (nTargetID <= ID.VentilationMainScreenID.BTN.WIND_3)) {
|
|
|
+ // 풍량변경 [약풍 , 미풍 , 강풍]
|
|
|
+ int index = nTargetID - ID.VentilationMainScreenID.BTN.WIND_1;
|
|
|
+ printDebugLog("onTouchEvent [WIND_" + (index+1) + "] BUTTON !!!");
|
|
|
+
|
|
|
+ // 전원 OFF 체크
|
|
|
+ if (!OnOff) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 예약중 체크
|
|
|
+ if (Reservation) {
|
|
|
+ // 예약중입니다 팝업 알람
|
|
|
+ startAlarmPopup(ID.VentiPopup_Alarm.kind.ReservationClear);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 동일한 풍량을 눌렀을 경우
|
|
|
+ if (Wind == (byte) (index + 1)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ Wind = (byte)(index + 1);
|
|
|
+ if (OPERATION_MODE == Common.MODE_NOMAL) {
|
|
|
+ int ret = ctrlDeviceWindType(Wind);
|
|
|
+ if(ret >= 0) Sound().Play(SND.effect.TOUCH_LATCHED);
|
|
|
+ else Sound().Play(SND.effect.TOUCH_UNLATCHED);
|
|
|
+ }
|
|
|
+ else if (OPERATION_MODE == Common.MODE_BUSINESS_SAMPLE) {
|
|
|
+ Sample_WindCont(Wind);
|
|
|
+ Sound().Play(SND.effect.TOUCH_LATCHED);
|
|
|
+ }
|
|
|
+ updateScreen();
|
|
|
+ }
|
|
|
+ else if ((nTargetID == ID.VentilationMainScreenID.BTN.TIMER_LEFT) || (nTargetID == ID.VentilationMainScreenID.BTN.TIMER_RIGHT)) {
|
|
|
+ // 타이머 변경 [좌 , 우]
|
|
|
+ if (nTargetID == ID.VentilationMainScreenID.BTN.TIMER_LEFT) printDebugLog("onTouchEvent [TIMER_LEFT] BUTTON !!!");
|
|
|
+ else printDebugLog("onTouchEvent [TIMER_RIGHT] BUTTON !!!");
|
|
|
+
|
|
|
+ // 전원 OFF 체크
|
|
|
+ if (!OnOff) return;
|
|
|
+
|
|
|
+ // 예약중 체크
|
|
|
+ if (Reservation) {
|
|
|
+ // 예약중입니다 팝업 알람
|
|
|
+ startAlarmPopup(ID.VentiPopup_Alarm.kind.ReservationClear);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (OPERATION_MODE == Common.MODE_NOMAL) {
|
|
|
+ Timer = getNextTimerValue(nTargetID);
|
|
|
+ int ret = ctrlDeviceTimer(Timer);
|
|
|
+ if (ret >= 0) Sound().Play(SND.effect.TOUCH_LATCHED);
|
|
|
+ else Sound().Play(SND.effect.TOUCH_UNLATCHED);
|
|
|
+ }
|
|
|
+ else if (OPERATION_MODE == Common.MODE_BUSINESS_SAMPLE) {
|
|
|
+ Sample_TimerCont(nTargetID);
|
|
|
+ Sound().Play(SND.effect.TOUCH_LATCHED);
|
|
|
+ }
|
|
|
+
|
|
|
+ updateScreen();
|
|
|
+ }
|
|
|
+ else if (nTargetID == ID.VentilationMainScreenID.BTN.FILLTER_CHANGE) {
|
|
|
+ printDebugLog("onTouchEvent [FILLTER_CHANGE] BUTTON !!!");
|
|
|
+
|
|
|
+ if (Support.FilterReset) {
|
|
|
+ // 필터교환 팝업
|
|
|
+ startAlarmPopup(ID.VentiPopup_Alarm.kind.FilterReset);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (nTargetID == ID.VentilationMainScreenID.BTN.BATHROOM) {
|
|
|
+ //욕실 배기
|
|
|
+ printDebugLog("onTouchEvent [BATHROOM] BUTTON !!!");
|
|
|
+
|
|
|
+ // 9. 욕실 배기
|
|
|
+ if(Support.BathRoom) {
|
|
|
+ WallpadStatusData wd = new WallpadStatusData(this.getContext());
|
|
|
+ String ret = wd.GetWallPADData(WallpadStatusData.VENTI_BATHROOM);
|
|
|
+
|
|
|
+ if (ret.equalsIgnoreCase("true") == true) {
|
|
|
+ wd.UpdateWallPADData(WallpadStatusData.VENTI_BATHROOM, "false");
|
|
|
+ BTN_BATHROOM.setButtonFrontImage();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ wd.UpdateWallPADData(WallpadStatusData.VENTI_BATHROOM, "true");
|
|
|
+ BTN_BATHROOM.setButtonRearImage();
|
|
|
+ }
|
|
|
+ wd.closeDB();
|
|
|
+
|
|
|
+ if (OnOff == true) {
|
|
|
+ //제어
|
|
|
+ int ret2 = ctrlDevicePower(OnOff);
|
|
|
+ if (ret2 >= 0) Sound().Play(SND.effect.TOUCH_LATCHED);
|
|
|
+ else Sound().Play(SND.effect.TOUCH_UNLATCHED);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Sound().Play(SND.effect.TOUCH_LATCHED);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 환기케어서비스 버튼
|
|
|
+ * @author 신범식
|
|
|
+ * @since
|
|
|
+ **/
|
|
|
+ else if (nTargetID == ID.VentilationMainScreenID.BTN.FILLTER_SERVICE) {
|
|
|
+ //StartAlarmPopup(ID.VentiPopup_Alarm.kind.FilterService);
|
|
|
+
|
|
|
+ // 환기 케어 서비스
|
|
|
+ printDebugLog("onTouchEvent [FILLTER_SERVICE] BUTTON !!!");
|
|
|
+ Sound().Play(SND.effect.TOUCH_LATCHED);
|
|
|
+ ((MainActivity)(getContext())).StartPopup(ID.screen.VentiPopupServiceScreen);
|
|
|
+ }
|
|
|
+ else if ((nTargetID >= ID.VentilationMainScreenID.BTN.ROOM_ONOFF_1) && (nTargetID <= ID.VentilationMainScreenID.BTN.ROOM_ONOFF_8)) {
|
|
|
+
|
|
|
+ if(!OnOff ) return;
|
|
|
+ if(!room_vanti) return;
|
|
|
+ Sound().Play(SND.effect.TOUCH_LATCHED);
|
|
|
+ int id = nTargetID - ID.VentilationMainScreenID.BTN.ROOM_ONOFF_1;
|
|
|
+ int status;
|
|
|
+ switch (id)
|
|
|
+ {
|
|
|
+ case 0:
|
|
|
+ status = 0;
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ status = 3;
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ status = 2;
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ status = 1;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ status = 0;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ roomView[id].setStatus(roomView[id].getOnOff(), status);
|
|
|
+ }
|
|
|
+ else if (nTargetID == ID.VentilationMainScreenID.BTN.ONOFF_VENTILATION) {
|
|
|
+ //StartAlarmPopup(ID.VentiPopup_Alarm.kind.FilterService);
|
|
|
+ room_vanti = !room_vanti;
|
|
|
+ // 환기 케어 서비스
|
|
|
+ printDebugLog("onTouchEvent [ONOFF_VENTILATION] BUTTON !!!");
|
|
|
+ Sound().Play(SND.effect.TOUCH_LATCHED);
|
|
|
+ SetRoomVentiOnOff(room_vanti);
|
|
|
+ }
|
|
|
+ else if (nTargetID == ID.VentilationMainScreenID.BTN.ONOFF_SANITIZATION) {
|
|
|
+ //StartAlarmPopup(ID.VentiPopup_Alarm.kind.FilterService);
|
|
|
+ sanitiztion = !sanitiztion;
|
|
|
+ // 환기 케어 서비스
|
|
|
+ printDebugLog("onTouchEvent [ONOFF_SANITIZATION] BUTTON !!!");
|
|
|
+ Sound().Play(SND.effect.TOUCH_LATCHED);
|
|
|
+ SetSanitiztion(sanitiztion);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (nMoveEvent == MotionEvent.ACTION_POINTER_DOWN) {
|
|
|
+ if (nTargetID == ID.VentilationMainScreenID.IMG.BACKGROUND_SUB) {
|
|
|
+ // 필터교환 팝업 히든 버튼 (환기케어 서비스 담당자용)
|
|
|
+ if (Support.FilterReset) {
|
|
|
+ // 필터교환 팝업
|
|
|
+ startAlarmPopup(ID.VentiPopup_Alarm.kind.FilterReset);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 알람팝업을 실행시킨다.
|
|
|
+ *
|
|
|
+ * @param kind - (int) 팝업 종류 : 예약중 ID.VentiPopup_Alarm.kind.ReservationClear<br>
|
|
|
+ * 히터 알람 ID.VentiPopup_Alarm.kind.HeaterOn<br>
|
|
|
+ * 필터교환 ID.VentiPopup_Alarm.kind.FilterReset<br>
|
|
|
+ * 안전모드 ID.VentiPopup_Alarm.kind.SafeMode<br>
|
|
|
+ *
|
|
|
+ * @return (boolean) true : 성공, false : 실패
|
|
|
+ */
|
|
|
+ private boolean startAlarmPopup(int kind) {
|
|
|
+ boolean bRet = false;
|
|
|
+ Intent data = null;
|
|
|
+ if (kind == ID.VentiPopup_Alarm.kind.ReservationClear) {
|
|
|
+ // 예약중입니다 팝업 알람
|
|
|
+ data = new Intent();
|
|
|
+ data.putExtra("KIND", kind);
|
|
|
+ data.putExtra("IMAGE_ID", R.drawable.ventipopup_alarm);
|
|
|
+ data.putExtra("TEXT1", "예약 운전이 동작중입니다.");
|
|
|
+ data.putExtra("TEXT2", "예약 운전을 정지 하시겠습니까?");
|
|
|
+ data.putExtra("BTN_COUNT", 2);
|
|
|
+ }
|
|
|
+ else if (kind == ID.VentiPopup_Alarm.kind.HeaterOn) {
|
|
|
+ // 히터알람 팝업
|
|
|
+ data = new Intent();
|
|
|
+ data.putExtra("KIND", kind);
|
|
|
+ data.putExtra("IMAGE_ID", R.drawable.ventipopup_alarm);
|
|
|
+ data.putExtra("TEXT1", "히터 기능 선택시 시간당 약 400Wh 의");
|
|
|
+ data.putExtra("TEXT2", "전기 요금이 추가 됩니다.");
|
|
|
+ data.putExtra("BTN_COUNT", 2);
|
|
|
+ }
|
|
|
+ else if (kind == ID.VentiPopup_Alarm.kind.FilterReset) {
|
|
|
+ // 필터교환 팝업
|
|
|
+ if (bVentilCareService) {
|
|
|
+ // 신규
|
|
|
+ data = new Intent();
|
|
|
+ data.putExtra("KIND", kind);
|
|
|
+ data.putExtra("IMAGE_ID", R.drawable.control_venti_popup_qr);
|
|
|
+ data.putExtra("TEXT1", "필터교체 시기가 되었습니다.");
|
|
|
+ data.putExtra("TEXT2", "이를 초기화 시키겠습니까?");
|
|
|
+ data.putExtra("TEXT3", "환기 케어 서비스(필터교환)");
|
|
|
+ data.putExtra("TEXT4", "1811-2770");
|
|
|
+ data.putExtra("BTN_COUNT", 2);
|
|
|
+ data.putExtra("EXTEND_TYPE", "Y");
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ // 기존
|
|
|
+ data = new Intent();
|
|
|
+ data.putExtra("KIND", kind);
|
|
|
+ data.putExtra("IMAGE_ID", R.drawable.control_venti_popup_image);
|
|
|
+ data.putExtra("TEXT1", "필터교체 시기가 되었습니다.");
|
|
|
+ data.putExtra("TEXT2", "이를 초기화 시키겠습니까?");
|
|
|
+ data.putExtra("BTN_COUNT", 2);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (kind == ID.VentiPopup_Alarm.kind.SafeMode) {
|
|
|
+ // 안전모드 팝업
|
|
|
+ data = new Intent();
|
|
|
+ data.putExtra("KIND", kind);
|
|
|
+ data.putExtra("IMAGE_ID", R.drawable.ventipopup_alarm);
|
|
|
+ data.putExtra("TEXT1", "영하 -10℃ 이하에서는 장비 손상의");
|
|
|
+ data.putExtra("TEXT2", "우려가 있어 구동을 멈춥니다.");
|
|
|
+ data.putExtra("BTN_COUNT", 1);
|
|
|
+ }
|
|
|
+ else if (kind == ID.VentiPopup_Alarm.kind.HDCAutoAirCleanOn) {
|
|
|
+ // 자동운전 팝업 (ON)
|
|
|
+ data = new Intent();
|
|
|
+ data.putExtra("KIND", kind);
|
|
|
+ data.putExtra("IMAGE_ID", R.drawable.ventipopup_alarm);
|
|
|
+ data.putExtra("TEXT1", "실내의 공기오염정도에 따라 자동운전되며");
|
|
|
+ data.putExtra("TEXT2", "24시간후 자동 OFF 됩니다.");
|
|
|
+ data.putExtra("BTN_COUNT", 2);
|
|
|
+ }
|
|
|
+ else if (kind == ID.VentiPopup_Alarm.kind.CancelHDCAutoAirCleanNRunReservation) {
|
|
|
+ // 현산 지능형 환기 자동청정 기능
|
|
|
+ data = new Intent();
|
|
|
+ data.putExtra("KIND", kind);
|
|
|
+ data.putExtra("IMAGE_ID", R.drawable.ventipopup_alarm);
|
|
|
+ data.putExtra("TEXT1", "자동 청정 기능이 동작중입니다.");
|
|
|
+ data.putExtra("TEXT2", "취소하고 예약 운전을 실행하시겠습니까?");
|
|
|
+ data.putExtra("BTN_COUNT", 2);
|
|
|
+ }
|
|
|
+ else if (kind == ID.VentiPopup_Alarm.kind.CancelReservationNRunAutoAirClean) {
|
|
|
+ // 환기 예약운전 Off, 현산 지능형 환기 자동청정 On
|
|
|
+ data = new Intent();
|
|
|
+ data.putExtra("KIND", kind);
|
|
|
+ data.putExtra("IMAGE_ID", R.drawable.ventipopup_alarm);
|
|
|
+ data.putExtra("TEXT1", "예약 운전이 동작중입니다.");
|
|
|
+ data.putExtra("TEXT2", "취소하고 자동 청정을 실행하시겠습니까?");
|
|
|
+ data.putExtra("BTN_COUNT", 2);
|
|
|
+ }
|
|
|
+ else if (kind == ID.VentiPopup_Alarm.kind.AirQualityFanWarning) {
|
|
|
+ // 공기질 센서 동작 확인
|
|
|
+ data = new Intent();
|
|
|
+ data.putExtra("KIND", kind);
|
|
|
+ data.putExtra("IMAGE_ID", R.drawable.ventipopup_alarm);
|
|
|
+ data.putExtra("TEXT1", "공기질 센서의 팬이 동작 중일 때만 가능합니다.");
|
|
|
+ data.putExtra("TEXT2", "팬을 동작시키시겠습니까?");
|
|
|
+ data.putExtra("BTN_COUNT", 2);
|
|
|
+ }
|
|
|
+ else if (kind == ID.VentiPopup_Alarm.kind.TurnOnVentilPower) {
|
|
|
+ // 환기 전원 On 요청
|
|
|
+ data = new Intent();
|
|
|
+ data.putExtra("KIND", kind);
|
|
|
+ data.putExtra("IMAGE_ID", R.drawable.ventipopup_alarm);
|
|
|
+ data.putExtra("TEXT1", "환기장비의 전원을 On 시켜주세요.");
|
|
|
+ data.putExtra("TEXT2", "해당기능은 전원이 On인 상태에서 가능합니다.");
|
|
|
+ data.putExtra("BTN_COUNT", 1);
|
|
|
+ }
|
|
|
+ else if (kind == ID.VentiPopup_Alarm.kind.DeviceError) {
|
|
|
+ // 환기장비 이상
|
|
|
+ data = new Intent();
|
|
|
+ data.putExtra("KIND", kind);
|
|
|
+ data.putExtra("IMAGE_ID", R.drawable.ventipopup_alarm);
|
|
|
+ data.putExtra("TEXT1", "환기장비에 장애가 발생하였습니다.");
|
|
|
+ data.putExtra("TEXT2", "환기장비 업체에 문의하세요.");
|
|
|
+ data.putExtra("TEXT3", "E04: 모터, E08: 온도센서");
|
|
|
+ data.putExtra("TEXT4", "E20: 급기팬, E40: 배기팬");
|
|
|
+ data.putExtra("BTN_COUNT", 1);
|
|
|
+ data.putExtra("EXTEND_TYPE", "Y");
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log.w(TAG, "[StartAlarmPopup] Param : kind - Out Of Range !!! (kind:" + kind + ")");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (data != null) {
|
|
|
+ bRet = ((MainActivity)(getContext())).StartPopup(ID.screen.VentiPopupAlarmScreen, data);
|
|
|
+ if (bRet) {
|
|
|
+ Sound().Play(SND.effect.WARNING005);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log.w(TAG, "[StartAlarmPopup] StartPopup return false !!!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return bRet;
|
|
|
+ }
|
|
|
+
|
|
|
+ // =================================================================================================
|
|
|
+ // [[ Draw ]] region
|
|
|
+ // =================================================================================================
|
|
|
+ /**
|
|
|
+ * 변경되는 이미지를 다시 그린다.
|
|
|
+ */
|
|
|
+ private void updateScreen() {
|
|
|
+ try {
|
|
|
+ Log.i(TAG, "[updateScreen] OnOff [" + OnOff + "], Wind [" + Wind + "]");
|
|
|
+ // 환기 에러 확인
|
|
|
+ checkVentilatorError();
|
|
|
+
|
|
|
+ // 환기 동작 상태 표시
|
|
|
+ drawInstructionInfo();
|
|
|
+
|
|
|
+ // On/Off 스위치 상태 표시
|
|
|
+ drawSwitch();
|
|
|
+
|
|
|
+ // 환기 동작 모드 상태 표시
|
|
|
+ drawVentilMode();
|
|
|
+
|
|
|
+ // 3. 풍량
|
|
|
+ if (OnOff) {
|
|
|
+ drawWind(Wind);
|
|
|
+ drawAirFlowAnim(Wind);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ drawWind((byte)0x00);
|
|
|
+ drawAirFlowAnim((byte)0x00);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 4. 타이머
|
|
|
+ drawTimer(Timer);
|
|
|
+
|
|
|
+ // 5. 필터교환
|
|
|
+ if (Fault.FilterChangeMedium || Fault.FilterChangeFree) {
|
|
|
+ if (!mFilterChangeHandlerRun) {
|
|
|
+ mFilterChangeHandler.sendEmptyMessage(1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ if (mFilterChangeHandlerRun) {
|
|
|
+ mFilterChangeHandler.removeMessages(1);
|
|
|
+ mFilterChangeHandler.removeMessages(2);
|
|
|
+ mFilterChangeHandler.sendEmptyMessage(0);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+// ToDebugString();
|
|
|
+// ToFaultString();
|
|
|
+ } catch (RuntimeException re) {
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ }
|
|
|
+ catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] updateScreen())");
|
|
|
+ //e.printStackTrace();
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void drawSwitch() {
|
|
|
+ try {
|
|
|
+ // 전원 ON/OFF
|
|
|
+ if (OnOff) drawPower(true);
|
|
|
+ else drawPower(false);
|
|
|
+
|
|
|
+ // 예약운전 ON/OFF
|
|
|
+ if (Reservation) drawReservation(true);
|
|
|
+ else drawReservation(false);
|
|
|
+
|
|
|
+ // 자동청정 ON/OFF
|
|
|
+ if (bAirQualitySensorUsage) {
|
|
|
+ if (HDCAutoAirClean) drawAutoClean(true);
|
|
|
+ else drawAutoClean(false);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 자동운전 ON/OFF
|
|
|
+ if (Support.AutoDriving) {
|
|
|
+ if (AutoDriving) drawAutoDriving(true);
|
|
|
+ else drawAutoDriving(false);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 히터 ON/OFF
|
|
|
+ if (Support.Heater) {
|
|
|
+ if (ByPass) {
|
|
|
+ BTN_ONOFF_HEATER.setButtonEventOffEnable();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ BTN_ONOFF_HEATER.setButtonEventOffDisable();
|
|
|
+ if (OnOff) {
|
|
|
+ if (HeaterStatus == Venti.HEATER.STAND_BY || HeaterStatus == Venti.HEATER.ON) drawHeater(true);
|
|
|
+ else drawHeater(false);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ BTN_ONOFF_HEATER.setButtonEventOffEnable();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (RuntimeException re) {
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ }
|
|
|
+ catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] drawSwitch()");
|
|
|
+ //e.printStackTrace();
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void drawVentilMode() {
|
|
|
+ try {
|
|
|
+ if (OnOff && (HDCAutoAirClean || AutoDriving)) {
|
|
|
+ // 현산 자동청정/자동운전 기능 동작중
|
|
|
+ if (OutAirClean) {
|
|
|
+ // 외기청정 모드
|
|
|
+ if (BTN_VENTILMODE_NORMAL != null) BTN_VENTILMODE_NORMAL.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_mode_normal_normaldisabled);
|
|
|
+ if (BTN_VENTILMODE_NATURAL != null) {
|
|
|
+ if (MainActivity.nConstructionFunction == WallpadDeviceSet.CONSTRUCTION_SPECIAL_FUNCTION_SK) BTN_VENTILMODE_NATURAL.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_mode_bypass_normaldisabled);
|
|
|
+ else BTN_VENTILMODE_NATURAL.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_mode_natural_normaldisabled);
|
|
|
+ }
|
|
|
+ if (BTN_VENTILMODE_INTERNALCIRCUL != null) BTN_VENTILMODE_INTERNALCIRCUL.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_mode_internal_normaldisabled);
|
|
|
+ if (BTN_VENTILMODE_EXTERNALAIRCLEAN != null) BTN_VENTILMODE_EXTERNALAIRCLEAN.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_mode_externalclean_selecteddisabled);
|
|
|
+ }
|
|
|
+ else if (InnerCycle) {
|
|
|
+ // 내부순환 모드
|
|
|
+ if (BTN_VENTILMODE_NORMAL != null) BTN_VENTILMODE_NORMAL.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_mode_normal_normaldisabled);
|
|
|
+ if (BTN_VENTILMODE_NATURAL != null) {
|
|
|
+ if (MainActivity.nConstructionFunction == WallpadDeviceSet.CONSTRUCTION_SPECIAL_FUNCTION_SK) BTN_VENTILMODE_NATURAL.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_mode_bypass_normaldisabled);
|
|
|
+ BTN_VENTILMODE_NATURAL.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_mode_natural_normaldisabled);
|
|
|
+ }
|
|
|
+ if (BTN_VENTILMODE_INTERNALCIRCUL != null) BTN_VENTILMODE_INTERNALCIRCUL.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_mode_internal_selecteddisabled);
|
|
|
+ if (BTN_VENTILMODE_EXTERNALAIRCLEAN != null) BTN_VENTILMODE_EXTERNALAIRCLEAN.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_mode_externalclean_normaldisabled);
|
|
|
+ }
|
|
|
+ else if (ByPass) {
|
|
|
+ // 자연환기 모드
|
|
|
+ if (BTN_VENTILMODE_NORMAL != null) BTN_VENTILMODE_NORMAL.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_mode_normal_normaldisabled);
|
|
|
+ if (BTN_VENTILMODE_NATURAL != null) {
|
|
|
+ if (MainActivity.nConstructionFunction == WallpadDeviceSet.CONSTRUCTION_SPECIAL_FUNCTION_SK) BTN_VENTILMODE_NATURAL.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_mode_bypass_selecteddisabled);
|
|
|
+ BTN_VENTILMODE_NATURAL.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_mode_natural_selecteddisabled);
|
|
|
+ }
|
|
|
+ if (BTN_VENTILMODE_INTERNALCIRCUL != null) BTN_VENTILMODE_INTERNALCIRCUL.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_mode_internal_normaldisabled);
|
|
|
+ if (BTN_VENTILMODE_EXTERNALAIRCLEAN != null) BTN_VENTILMODE_EXTERNALAIRCLEAN.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_mode_externalclean_normaldisabled);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ // 일반환기 모드
|
|
|
+ if (BTN_VENTILMODE_NORMAL != null) BTN_VENTILMODE_NORMAL.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_mode_normal_selecteddisabled);
|
|
|
+ if (BTN_VENTILMODE_NATURAL != null) {
|
|
|
+ if (MainActivity.nConstructionFunction == WallpadDeviceSet.CONSTRUCTION_SPECIAL_FUNCTION_SK) BTN_VENTILMODE_NATURAL.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_mode_bypass_normaldisabled);
|
|
|
+ else BTN_VENTILMODE_NATURAL.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_mode_natural_normaldisabled);
|
|
|
+ }
|
|
|
+ if (BTN_VENTILMODE_INTERNALCIRCUL != null) BTN_VENTILMODE_INTERNALCIRCUL.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_mode_internal_normaldisabled);
|
|
|
+ if (BTN_VENTILMODE_EXTERNALAIRCLEAN != null) BTN_VENTILMODE_EXTERNALAIRCLEAN.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_mode_externalclean_normaldisabled);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ // 현산 자동청정/자동운전 기능 미동작중
|
|
|
+ if (Support.ByPass || Support.InnerCycle || Support.OutAirClean || Support.AutoDriving) {
|
|
|
+ // 일반환기 모드 외에 다른 환기 모드가 존재하는 경우, 다른 환기 모드가 꺼진경우 일반환기로 판단
|
|
|
+ if (OnOff) {
|
|
|
+ if (!ByPass && !InnerCycle && !OutAirClean && !AutoDriving) {
|
|
|
+ // 일반환기 모드 동작중
|
|
|
+ if (BTN_VENTILMODE_NORMAL != null) {
|
|
|
+ BTN_VENTILMODE_NORMAL.setButtonEventOffEnable();
|
|
|
+ BTN_VENTILMODE_NORMAL.setButtonRearImage();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ // 다른 환기 모드 동작중
|
|
|
+ if (BTN_VENTILMODE_NORMAL != null) {
|
|
|
+ BTN_VENTILMODE_NORMAL.setButtonEventOffDisable();
|
|
|
+ BTN_VENTILMODE_NORMAL.setButtonFrontImage();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ BTN_VENTILMODE_NORMAL.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_mode_normal_normaldisabled); // Disable
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ // 일반환기만 지원하는 경우
|
|
|
+ if (OnOff) {
|
|
|
+ if (BTN_VENTILMODE_NORMAL != null) {
|
|
|
+ BTN_VENTILMODE_NORMAL.setButtonEventOffEnable();
|
|
|
+ BTN_VENTILMODE_NORMAL.setButtonRearImage();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ if (BTN_VENTILMODE_NORMAL != null) {
|
|
|
+ BTN_VENTILMODE_NORMAL.setButtonEventOffDisable();
|
|
|
+ BTN_VENTILMODE_NORMAL.setButtonFrontImage();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 자연환기 모드
|
|
|
+ if (Support.ByPass) {
|
|
|
+ if (OnOff) {
|
|
|
+ if (ByPass) {
|
|
|
+ BTN_VENTILMODE_NATURAL.setButtonEventOffEnable();
|
|
|
+ BTN_VENTILMODE_NATURAL.setButtonRearImage();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ BTN_VENTILMODE_NATURAL.setButtonEventOffDisable();
|
|
|
+ BTN_VENTILMODE_NATURAL.setButtonFrontImage();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ if (MainActivity.nConstructionFunction == WallpadDeviceSet.CONSTRUCTION_SPECIAL_FUNCTION_SK) BTN_VENTILMODE_NATURAL.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_mode_bypass_normaldisabled); // Disable
|
|
|
+ else BTN_VENTILMODE_NATURAL.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_mode_natural_normaldisabled); // Disable
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 내부순환 모드
|
|
|
+ if (Support.InnerCycle) {
|
|
|
+ if (OnOff) {
|
|
|
+ if (InnerCycle) {
|
|
|
+ BTN_VENTILMODE_INTERNALCIRCUL.setButtonEventOffEnable();
|
|
|
+ BTN_VENTILMODE_INTERNALCIRCUL.setButtonRearImage();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ BTN_VENTILMODE_INTERNALCIRCUL.setButtonEventOffDisable();
|
|
|
+ BTN_VENTILMODE_INTERNALCIRCUL.setButtonFrontImage();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ BTN_VENTILMODE_INTERNALCIRCUL.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_mode_internal_normaldisabled); // Disable
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 외기청정 모드
|
|
|
+ if (Support.OutAirClean) {
|
|
|
+ if (OnOff) {
|
|
|
+ if (OutAirClean) {
|
|
|
+ BTN_VENTILMODE_EXTERNALAIRCLEAN.setButtonEventOffEnable();
|
|
|
+ BTN_VENTILMODE_EXTERNALAIRCLEAN.setButtonRearImage();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ BTN_VENTILMODE_EXTERNALAIRCLEAN.setButtonEventOffDisable();
|
|
|
+ BTN_VENTILMODE_EXTERNALAIRCLEAN.setButtonFrontImage();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ BTN_VENTILMODE_EXTERNALAIRCLEAN.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_mode_externalclean_normaldisabled); // Disable
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 취침 모드
|
|
|
+ if (Support2.SleepMode) {
|
|
|
+ if (OnOff) {
|
|
|
+ if (Sleep == Venti.SLEEP.SLEEP_ON) {
|
|
|
+ BTN_VENTILMODE_SLEEP.setButtonEventOffDisable();
|
|
|
+ BTN_VENTILMODE_SLEEP.setButtonRearImage();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ BTN_VENTILMODE_SLEEP.setButtonEventOffEnable();
|
|
|
+ BTN_VENTILMODE_SLEEP.setButtonFrontImage();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ BTN_VENTILMODE_SLEEP.setButtonEventOffEnable();
|
|
|
+// BTN_VENTILMODE_SLEEP.setButtonEventOffEnable(R.drawable.control_venti_btn_off_normal); // Disable
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 자동운전 모드
|
|
|
+ if (Support.AutoDriving && BTN_VENTILMODE_AUTO!=null) {
|
|
|
+ // [예약운전 & 창호환기 아닌경우] 또는 [타이머운전] 또는 [운전OFF중에 자동운전OFF일시] 자동운전 비활성화
|
|
|
+ if ((Reservation && !Support2.WindowVenti) || (Timer != 0) || (!OnOff && !AutoDriving)) {
|
|
|
+
|
|
|
+ BTN_VENTILMODE_AUTO.setButtonEventOffEnable();
|
|
|
+// BTN_VENTILMODE_AUTO.setButtonEventOffEnable(R.drawable.control_venti_btn_off_normal); // Disable
|
|
|
+ }
|
|
|
+ // 아닐시
|
|
|
+ // [타이머:OFF] [예약운전:OFF] [운전:ON] [자동운전:OFF] - 켜기 활성화
|
|
|
+ //
|
|
|
+ // [타이머:OFF] [예약운전:OFF] [운전:OFF] [자동운전:ON ] - 끄기 활성화
|
|
|
+ // [타이머:OFF] [예약운전:OFF] [운전:ON ] [자동운전:ON ] - 끄기 활성화
|
|
|
+ else {
|
|
|
+ if (AutoDriving) {
|
|
|
+ // 끄기 활성화
|
|
|
+ BTN_VENTILMODE_AUTO.setButtonEventOffDisable();
|
|
|
+ BTN_VENTILMODE_AUTO.setButtonRearImage();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ // 켜기 활성화
|
|
|
+ BTN_VENTILMODE_AUTO.setButtonEventOffDisable();
|
|
|
+ BTN_VENTILMODE_AUTO.setButtonFrontImage();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (RuntimeException re) {
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ }
|
|
|
+ catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] drawVentilMode()");
|
|
|
+ //e.printStackTrace();
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ String strErrorCodeHeader = "Error code: ";
|
|
|
+ String strErrorCode_MotorError = "E04"; // 모터이상
|
|
|
+ String strErrorCode_TempSensorError = "E08"; // 온도센서 이상
|
|
|
+ String strErrorCode_SupplyFanError = "E20"; // 급기팬 이상
|
|
|
+ String strErrorCode_ExhaustFanError = "E40"; // 배기팬 이상
|
|
|
+ private void checkVentilatorError() {
|
|
|
+ try {
|
|
|
+ Log.i(TAG, "[checkVentilatorError]");
|
|
|
+ if (mVentilData == null) {
|
|
|
+ Log.w(TAG, "[checkVentilatorError] mVentilData is null!!");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (mVentilData.VentilStatus == null) {
|
|
|
+ Log.w(TAG, "[checkVentilatorError] mVentilData.VentilStatus is null!!");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (Fault == null) {
|
|
|
+ Log.w(TAG, "[checkVentilatorError] Fault is null!!");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ String strAlarmMessage = "";
|
|
|
+
|
|
|
+ if (Fault.MotorError) {
|
|
|
+ if (strAlarmMessage.equalsIgnoreCase("")) strAlarmMessage += strErrorCodeHeader + strErrorCode_MotorError;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (Fault.TempSensorError) {
|
|
|
+ if (strAlarmMessage.equalsIgnoreCase("")) strAlarmMessage += strErrorCodeHeader + strErrorCode_TempSensorError;
|
|
|
+ else strAlarmMessage += ", " + strErrorCode_TempSensorError;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (Fault.SupplyFanError) {
|
|
|
+ if (strAlarmMessage.equalsIgnoreCase("")) strAlarmMessage += strErrorCodeHeader + strErrorCode_SupplyFanError;
|
|
|
+ else strAlarmMessage += ", " + strErrorCode_SupplyFanError;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (Fault.ExhaustFanError) {
|
|
|
+ if (strAlarmMessage.equalsIgnoreCase("")) strAlarmMessage += strErrorCodeHeader + strErrorCode_ExhaustFanError;
|
|
|
+ else strAlarmMessage += ", " + strErrorCode_ExhaustFanError;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (strAlarmMessage.equalsIgnoreCase("")) TXT_ALARM_MESSAGE.setVisibility(View.INVISIBLE);
|
|
|
+ else TXT_ALARM_MESSAGE.setVisibility(View.VISIBLE);
|
|
|
+
|
|
|
+ Log.w(TAG, "[checkVentilatorError] strAlarmMessage [" + strAlarmMessage + "]");
|
|
|
+
|
|
|
+ TXT_ALARM_MESSAGE.setText(strAlarmMessage);
|
|
|
+
|
|
|
+ } catch (RuntimeException re) {
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ }
|
|
|
+ catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] checkVentilatorError()");
|
|
|
+ //e.printStackTrace();
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ static class AIRITEM {
|
|
|
+ static int PM10 = 1; // 미세먼지 (PM10㎛ 이하)
|
|
|
+ static int PM2p5 = 2; // 초미세먼지 (PM2.5㎛ 이하)
|
|
|
+ static int CO2 = 3; // 이산화탄소 농도
|
|
|
+ }
|
|
|
+ private int AirQualityStep = 0; // 공기질 단계 (4: 4단계, 8: 8단계)
|
|
|
+
|
|
|
+ private void registerAirQualityFragment(Context context, RelativeLayout layout) {
|
|
|
+ try {
|
|
|
+ // 미세먼지
|
|
|
+ TXT_AIRQUALITY_TITLE_PM10 = new WpadTextView(context, false, 100, 36, Gravity.CENTER, Color.WHITE, Common.fontsize._24, true, ID.VentilationMainScreenID.TXT.AIRQUALITY_TITLE_PM10);
|
|
|
+ ViewRegistration(layout, TXT_AIRQUALITY_TITLE_PM10, Common.ImgPosion.GetX(144), Common.ImgPosion.GetY(595));
|
|
|
+ TXT_AIRQUALITY_TITLE_PM10.setText("미세");
|
|
|
+// TXT_AIRQUALITY_TITLE_PM10.setBackgroundColor(Color.RED);
|
|
|
+
|
|
|
+ IMG_AIRQUALITY_STATUS_PM10 = new WpadImageView(context, TOUCH_KIND.NONE, 82, 82, R.drawable.ctrl_ventil_icon_air_status_4step_02 , 0, ID.VentilationMainScreenID.IMG.AIRQUALITY_STATUS_PM10);
|
|
|
+ ViewRegistration(layout, IMG_AIRQUALITY_STATUS_PM10, Common.ImgPosion.GetX(153), Common.ImgPosion.GetY(633));
|
|
|
+
|
|
|
+ TXT_AIRQUALITY_STATUS_PM10 = new WpadTextView(context, false, 100, 36, Gravity.CENTER, Color.WHITE, Common.fontsize._24, true, ID.VentilationMainScreenID.TXT.AIRQUALITY_STATUS_PM10);
|
|
|
+ ViewRegistration(layout, TXT_AIRQUALITY_STATUS_PM10, Common.ImgPosion.GetX(144), Common.ImgPosion.GetY(719));
|
|
|
+ TXT_AIRQUALITY_STATUS_PM10.setText("보통");
|
|
|
+// TXT_AIRQUALITY_STATUS_PM10.setBackgroundColor(Color.RED);
|
|
|
+
|
|
|
+ if (bAirQualityFigureSupport) {
|
|
|
+ TXT_AIRQUALITY_FIGURE_PM10 = new WpadTextView(context, false, 100, 36, Gravity.CENTER, Color.WHITE, Common.fontsize._24, true, ID.VentilationMainScreenID.TXT.AIRQUALITY_FIGURE_PM10);
|
|
|
+ ViewRegistration(layout, TXT_AIRQUALITY_FIGURE_PM10, Common.ImgPosion.GetX(244), Common.ImgPosion.GetY(595));
|
|
|
+ TXT_AIRQUALITY_FIGURE_PM10.setText("50");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 초미세먼지 부분 추가
|
|
|
+ TXT_AIRQUALITY_TITLE_PM2p5 = new WpadTextView(context, false, 100, 36, Gravity.CENTER, Color.WHITE, Common.fontsize._24, true, ID.VentilationMainScreenID.TXT.AIRQUALITY_TITLE_PM2p5);
|
|
|
+ ViewRegistration(layout, TXT_AIRQUALITY_TITLE_PM2p5, Common.ImgPosion.GetX(294), Common.ImgPosion.GetY(595));
|
|
|
+ TXT_AIRQUALITY_TITLE_PM2p5.setText("초미세");
|
|
|
+// TXT_AIRQUALITY_TITLE_PM2p5.setBackgroundColor(Color.RED);
|
|
|
+
|
|
|
+ IMG_AIRQUALITY_STATUS_PM2p5 = new WpadImageView(context, TOUCH_KIND.NONE, 82, 82, R.drawable.ctrl_ventil_icon_air_status_4step_02 , 0, ID.VentilationMainScreenID.IMG.AIRQUALITY_STATUS_PM2p5);
|
|
|
+ ViewRegistration(layout, IMG_AIRQUALITY_STATUS_PM2p5, Common.ImgPosion.GetX(303), Common.ImgPosion.GetY(633));
|
|
|
+
|
|
|
+ TXT_AIRQUALITY_STATUS_PM2p5 = new WpadTextView(context, false, 100, 36, Gravity.CENTER, Color.WHITE, Common.fontsize._24, true, ID.VentilationMainScreenID.TXT.AIRQUALITY_STATUS_PM2p5);
|
|
|
+ ViewRegistration(layout, TXT_AIRQUALITY_STATUS_PM2p5, Common.ImgPosion.GetX(294), Common.ImgPosion.GetY(719));
|
|
|
+ TXT_AIRQUALITY_STATUS_PM2p5.setText("보통");
|
|
|
+// TXT_AIRQUALITY_STATUS_PM2p5.setBackgroundColor(Color.RED);
|
|
|
+
|
|
|
+ if (bAirQualityFigureSupport) {
|
|
|
+ TXT_AIRQUALITY_FIGURE_PM2p5 = new WpadTextView(context, false, 100, 36, Gravity.CENTER, Color.WHITE, Common.fontsize._24, true, ID.VentilationMainScreenID.TXT.AIRQUALITY_FIGURE_PM2p5);
|
|
|
+ ViewRegistration(layout, TXT_AIRQUALITY_FIGURE_PM2p5, Common.ImgPosion.GetX(394), Common.ImgPosion.GetY(595));
|
|
|
+ TXT_AIRQUALITY_FIGURE_PM2p5.setText("50");
|
|
|
+ }
|
|
|
+
|
|
|
+ // CO2 부분 추가
|
|
|
+ TXT_AIRQUALITY_TITLE_CO2 = new WpadTextView(context, false, 100, 36, Gravity.CENTER, Color.WHITE, Common.fontsize._24, true, ID.VentilationMainScreenID.TXT.AIRQUALITY_TITLE_CO2);
|
|
|
+ ViewRegistration(layout, TXT_AIRQUALITY_TITLE_CO2, Common.ImgPosion.GetX(444), Common.ImgPosion.GetY(595));
|
|
|
+ TXT_AIRQUALITY_TITLE_CO2.setText("CO2");
|
|
|
+// TXT_AIRQUALITY_TITLE_CO2.setBackgroundColor(Color.RED);
|
|
|
+
|
|
|
+ IMG_AIRQUALITY_STATUS_CO2 = new WpadImageView(context, TOUCH_KIND.NONE, 82, 82, R.drawable.ctrl_ventil_icon_air_status_4step_02 , 0, ID.VentilationMainScreenID.IMG.AIRQUALITY_STATUS_CO2);
|
|
|
+ ViewRegistration(layout, IMG_AIRQUALITY_STATUS_CO2, Common.ImgPosion.GetX(453), Common.ImgPosion.GetY(633));
|
|
|
+
|
|
|
+ TXT_AIRQUALITY_STATUS_CO2 = new WpadTextView(context, false, 100, 36, Gravity.CENTER, Color.WHITE, Common.fontsize._24, true, ID.VentilationMainScreenID.TXT.AIRQUALITY_STATUS_CO2);
|
|
|
+ ViewRegistration(layout, TXT_AIRQUALITY_STATUS_CO2, Common.ImgPosion.GetX(444), Common.ImgPosion.GetY(719));
|
|
|
+ TXT_AIRQUALITY_STATUS_CO2.setText("보통");
|
|
|
+// TXT_AIRQUALITY_STATUS_CO2.setBackgroundColor(Color.RED);
|
|
|
+
|
|
|
+ if (bAirQualityFigureSupport) {
|
|
|
+ TXT_AIRQUALITY_FIGURE_CO2 = new WpadTextView(context, false, 100, 36, Gravity.CENTER, Color.WHITE, Common.fontsize._24, true, ID.VentilationMainScreenID.TXT.AIRQUALITY_FIGURE_CO2);
|
|
|
+ ViewRegistration(layout, TXT_AIRQUALITY_FIGURE_CO2, Common.ImgPosion.GetX(544), Common.ImgPosion.GetY(595));
|
|
|
+ TXT_AIRQUALITY_FIGURE_CO2.setText("50");
|
|
|
+ }
|
|
|
+ } catch (RuntimeException re) {
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ }
|
|
|
+ catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] registerAirQualityFragment(Context context, RelativeLayout layout)");
|
|
|
+ //e.printStackTrace();
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void updateAirQualityFragment() {
|
|
|
+ try {
|
|
|
+ // 미세먼지
|
|
|
+ drawAirQualityImage(AIRITEM.PM10, mAirQualityData.device.hLevel_PM10);
|
|
|
+ drawAirQualityText(AIRITEM.PM10, mAirQualityData.device.hLevel_PM10);
|
|
|
+ if (bAirQualityFigureSupport) drawAirQualityFigure(AIRITEM.PM10, mAirQualityData.device.dFigure_PM10);
|
|
|
+
|
|
|
+ // 초미세먼지
|
|
|
+ drawAirQualityImage(AIRITEM.PM2p5, mAirQualityData.device.hLevel_PM2p5);
|
|
|
+ drawAirQualityText(AIRITEM.PM2p5, mAirQualityData.device.hLevel_PM2p5);
|
|
|
+ if (bAirQualityFigureSupport) drawAirQualityFigure(AIRITEM.PM2p5, mAirQualityData.device.dFigure_PM2p5);
|
|
|
+
|
|
|
+ // 이산화탄소
|
|
|
+ drawAirQualityImage(AIRITEM.CO2, mAirQualityData.device.hLevel_CO2);
|
|
|
+ drawAirQualityText(AIRITEM.CO2, mAirQualityData.device.hLevel_CO2);
|
|
|
+ if (bAirQualityFigureSupport) drawAirQualityFigure(AIRITEM.CO2, mAirQualityData.device.dFigure_CO2);
|
|
|
+ } catch (RuntimeException re) {
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ }
|
|
|
+ catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] updateAirQualityFragment()");
|
|
|
+ //e.printStackTrace();
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 공기질 단계별로 이미지를 교체한다
|
|
|
+ *
|
|
|
+ * @param nType 공기질 타입(미세, 초미세, CO2)
|
|
|
+ * @param hLevel 단계(좋음 ~ 최악)
|
|
|
+ */
|
|
|
+ public void drawAirQualityImage(int nType, byte hLevel) {
|
|
|
+ try {
|
|
|
+ if (nType < AIRITEM.PM10 || AIRITEM.CO2 < nType) {
|
|
|
+ Log.w(TAG, "[drawAirQualityImage] nType is out of range!!! -> " + nType);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if ((IMG_AIRQUALITY_STATUS_PM10 == null) || (IMG_AIRQUALITY_STATUS_PM2p5 == null) || (IMG_AIRQUALITY_STATUS_CO2 == null) ) return;
|
|
|
+
|
|
|
+ if (AirQualityStep == 4) {
|
|
|
+ if (nType == AIRITEM.PM10) {
|
|
|
+ if (hLevel == AIRLevel.LEVEL4.PM10.GOOD) IMG_AIRQUALITY_STATUS_PM10.setImageResource(R.drawable.ctrl_ventil_icon_air_status_4step_01);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL4.PM10.NORMAL) IMG_AIRQUALITY_STATUS_PM10.setImageResource(R.drawable.ctrl_ventil_icon_air_status_4step_02);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL4.PM10.BAD) IMG_AIRQUALITY_STATUS_PM10.setImageResource(R.drawable.ctrl_ventil_icon_air_status_4step_03);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL4.PM10.WORSE) IMG_AIRQUALITY_STATUS_PM10.setImageResource(R.drawable.ctrl_ventil_icon_air_status_4step_04);
|
|
|
+ else if (hLevel == (byte) 0xFF) IMG_AIRQUALITY_STATUS_PM10.setImageResource(R.drawable.ctrl_ventil_icon_air_status_4step_01);
|
|
|
+ }
|
|
|
+ else if (nType == AIRITEM.PM2p5) {
|
|
|
+ if (hLevel == AIRLevel.LEVEL4.PM2_5.GOOD) IMG_AIRQUALITY_STATUS_PM2p5.setImageResource(R.drawable.ctrl_ventil_icon_air_status_4step_01);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL4.PM2_5.NORMAL) IMG_AIRQUALITY_STATUS_PM2p5.setImageResource(R.drawable.ctrl_ventil_icon_air_status_4step_02);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL4.PM2_5.BAD) IMG_AIRQUALITY_STATUS_PM2p5.setImageResource(R.drawable.ctrl_ventil_icon_air_status_4step_03);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL4.PM2_5.WORSE) IMG_AIRQUALITY_STATUS_PM2p5.setImageResource(R.drawable.ctrl_ventil_icon_air_status_4step_04);
|
|
|
+ else if (hLevel == (byte) 0xFF) IMG_AIRQUALITY_STATUS_PM2p5.setImageResource(R.drawable.ctrl_ventil_icon_air_status_4step_01);
|
|
|
+ }
|
|
|
+ else if (nType == AIRITEM.CO2) {
|
|
|
+ if (hLevel == AIRLevel.LEVEL4.CO2.GOOD) IMG_AIRQUALITY_STATUS_CO2.setImageResource(R.drawable.ctrl_ventil_icon_air_status_4step_01);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL4.CO2.NORMAL) IMG_AIRQUALITY_STATUS_CO2.setImageResource(R.drawable.ctrl_ventil_icon_air_status_4step_02);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL4.CO2.BAD) IMG_AIRQUALITY_STATUS_CO2.setImageResource(R.drawable.ctrl_ventil_icon_air_status_4step_03);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL4.CO2.WORSE) IMG_AIRQUALITY_STATUS_CO2.setImageResource(R.drawable.ctrl_ventil_icon_air_status_4step_04);
|
|
|
+ else if (hLevel == (byte) 0xFF) IMG_AIRQUALITY_STATUS_CO2.setImageResource(R.drawable.ctrl_ventil_icon_air_status_4step_01);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (AirQualityStep == 8) {
|
|
|
+ if (nType == AIRITEM.PM10) {
|
|
|
+ if (hLevel == AIRLevel.LEVEL8.PM10.BEST) IMG_AIRQUALITY_STATUS_PM10.setImageResource(R.drawable.air_quality8_best);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.PM10.GOOD) IMG_AIRQUALITY_STATUS_PM10.setImageResource(R.drawable.air_quality8_good);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.PM10.FINE) IMG_AIRQUALITY_STATUS_PM10.setImageResource(R.drawable.air_quality8_fine);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.PM10.NORMAL) IMG_AIRQUALITY_STATUS_PM10.setImageResource(R.drawable.air_quality8_normal);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.PM10.BAD) IMG_AIRQUALITY_STATUS_PM10.setImageResource(R.drawable.air_quality8_bad);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.PM10.QUITEBAD) IMG_AIRQUALITY_STATUS_PM10.setImageResource(R.drawable.air_quality8_quite_bad);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.PM10.WORSE) IMG_AIRQUALITY_STATUS_PM10.setImageResource(R.drawable.air_quality8_worse);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.PM10.WORST) IMG_AIRQUALITY_STATUS_PM10.setImageResource(R.drawable.air_quality8_worst);
|
|
|
+ else if (hLevel == (byte) 0xFF) IMG_AIRQUALITY_STATUS_PM10.setImageResource(R.drawable.air_quality8_worst);
|
|
|
+ }
|
|
|
+ else if (nType == AIRITEM.PM2p5) {
|
|
|
+ if (hLevel == AIRLevel.LEVEL8.PM2_5.BEST) IMG_AIRQUALITY_STATUS_PM2p5.setImageResource(R.drawable.air_quality8_best);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.PM2_5.GOOD) IMG_AIRQUALITY_STATUS_PM2p5.setImageResource(R.drawable.air_quality8_good);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.PM2_5.FINE) IMG_AIRQUALITY_STATUS_PM2p5.setImageResource(R.drawable.air_quality8_fine);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.PM2_5.NORMAL) IMG_AIRQUALITY_STATUS_PM2p5.setImageResource(R.drawable.air_quality8_normal);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.PM2_5.BAD) IMG_AIRQUALITY_STATUS_PM2p5.setImageResource(R.drawable.air_quality8_bad);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.PM2_5.QUITEBAD) IMG_AIRQUALITY_STATUS_PM2p5.setImageResource(R.drawable.air_quality8_quite_bad);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.PM2_5.WORSE) IMG_AIRQUALITY_STATUS_PM2p5.setImageResource(R.drawable.air_quality8_worse);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.PM2_5.WORST) IMG_AIRQUALITY_STATUS_PM2p5.setImageResource(R.drawable.air_quality8_worst);
|
|
|
+ else if (hLevel == (byte) 0xFF) IMG_AIRQUALITY_STATUS_PM2p5.setImageResource(R.drawable.air_quality8_worst);
|
|
|
+ }
|
|
|
+ else if (nType == AIRITEM.CO2) {
|
|
|
+ if (hLevel == AIRLevel.LEVEL8.CO2.BEST) IMG_AIRQUALITY_STATUS_CO2.setImageResource(R.drawable.air_quality8_best);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.CO2.GOOD) IMG_AIRQUALITY_STATUS_CO2.setImageResource(R.drawable.air_quality8_good);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.CO2.FINE) IMG_AIRQUALITY_STATUS_CO2.setImageResource(R.drawable.air_quality8_fine);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.CO2.NORMAL) IMG_AIRQUALITY_STATUS_CO2.setImageResource(R.drawable.air_quality8_normal);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.CO2.BAD) IMG_AIRQUALITY_STATUS_CO2.setImageResource(R.drawable.air_quality8_bad);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.CO2.QUITEBAD) IMG_AIRQUALITY_STATUS_CO2.setImageResource(R.drawable.air_quality8_quite_bad);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.CO2.WORSE) IMG_AIRQUALITY_STATUS_CO2.setImageResource(R.drawable.air_quality8_worse);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.CO2.WORST) IMG_AIRQUALITY_STATUS_CO2.setImageResource(R.drawable.air_quality8_worst);
|
|
|
+ else if (hLevel == (byte) 0xFF) IMG_AIRQUALITY_STATUS_CO2.setImageResource(R.drawable.air_quality8_worst);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ // 기본 4단계로 그리도록 함
|
|
|
+ if (nType == AIRITEM.PM10) {
|
|
|
+ if (hLevel == AIRLevel.LEVEL4.PM10.GOOD) IMG_AIRQUALITY_STATUS_PM10.setImageResource(R.drawable.ctrl_ventil_icon_air_status_4step_01);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL4.PM10.NORMAL) IMG_AIRQUALITY_STATUS_PM10.setImageResource(R.drawable.ctrl_ventil_icon_air_status_4step_02);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL4.PM10.BAD) IMG_AIRQUALITY_STATUS_PM10.setImageResource(R.drawable.ctrl_ventil_icon_air_status_4step_03);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL4.PM10.WORSE) IMG_AIRQUALITY_STATUS_PM10.setImageResource(R.drawable.ctrl_ventil_icon_air_status_4step_04);
|
|
|
+ else if (hLevel == (byte) 0xFF) IMG_AIRQUALITY_STATUS_PM10.setImageResource(R.drawable.ctrl_ventil_icon_air_status_4step_01);
|
|
|
+ }
|
|
|
+ else if (nType == AIRITEM.PM2p5) {
|
|
|
+ if (hLevel == AIRLevel.LEVEL4.PM2_5.GOOD) IMG_AIRQUALITY_STATUS_PM2p5.setImageResource(R.drawable.ctrl_ventil_icon_air_status_4step_01);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL4.PM2_5.NORMAL) IMG_AIRQUALITY_STATUS_PM2p5.setImageResource(R.drawable.ctrl_ventil_icon_air_status_4step_02);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL4.PM2_5.BAD) IMG_AIRQUALITY_STATUS_PM2p5.setImageResource(R.drawable.ctrl_ventil_icon_air_status_4step_03);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL4.PM2_5.WORSE) IMG_AIRQUALITY_STATUS_PM2p5.setImageResource(R.drawable.ctrl_ventil_icon_air_status_4step_04);
|
|
|
+ else if (hLevel == (byte) 0xFF) IMG_AIRQUALITY_STATUS_PM2p5.setImageResource(R.drawable.ctrl_ventil_icon_air_status_4step_01);
|
|
|
+ }
|
|
|
+ else if (nType == AIRITEM.CO2) {
|
|
|
+ if (hLevel == AIRLevel.LEVEL4.CO2.GOOD) IMG_AIRQUALITY_STATUS_CO2.setImageResource(R.drawable.ctrl_ventil_icon_air_status_4step_01);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL4.CO2.NORMAL) IMG_AIRQUALITY_STATUS_CO2.setImageResource(R.drawable.ctrl_ventil_icon_air_status_4step_02);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL4.CO2.BAD) IMG_AIRQUALITY_STATUS_CO2.setImageResource(R.drawable.ctrl_ventil_icon_air_status_4step_03);
|
|
|
+ else if (hLevel == AIRLevel.LEVEL4.CO2.WORSE) IMG_AIRQUALITY_STATUS_CO2.setImageResource(R.drawable.ctrl_ventil_icon_air_status_4step_04);
|
|
|
+ else if (hLevel == (byte) 0xFF) IMG_AIRQUALITY_STATUS_CO2.setImageResource(R.drawable.ctrl_ventil_icon_air_status_4step_01);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (RuntimeException re) {
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ }
|
|
|
+ catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] drawAirQualityImage(int nType, byte hLevel)");
|
|
|
+ //e.printStackTrace();
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 공기질 항목별로 단계를 표기한다.
|
|
|
+ *
|
|
|
+ * @param nType
|
|
|
+ * @param hLevel
|
|
|
+ */
|
|
|
+ public void drawAirQualityText(int nType, byte hLevel) {
|
|
|
+ try {
|
|
|
+ if (nType < AIRITEM.PM10 || AIRITEM.CO2 < nType) {
|
|
|
+ Log.w(TAG, "[drawAirQualityText] nType is out of range!!! -> " + nType);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if ((TXT_AIRQUALITY_STATUS_PM10 == null) || (TXT_AIRQUALITY_STATUS_PM2p5 == null) || (TXT_AIRQUALITY_STATUS_CO2 == null)) return;
|
|
|
+
|
|
|
+ if (AirQualityStep == 4) {
|
|
|
+ if (nType == AIRITEM.PM10) {
|
|
|
+ if (hLevel == AIRLevel.LEVEL4.PM10.GOOD) TXT_AIRQUALITY_STATUS_PM10.setText("좋음");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL4.PM10.NORMAL) TXT_AIRQUALITY_STATUS_PM10.setText("보통");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL4.PM10.BAD) TXT_AIRQUALITY_STATUS_PM10.setText("나쁨");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL4.PM10.WORSE) TXT_AIRQUALITY_STATUS_PM10.setText("매우 나쁨");
|
|
|
+ else if (hLevel == (byte) 0xFF) TXT_AIRQUALITY_STATUS_PM10.setText("지원안함");
|
|
|
+ }
|
|
|
+ else if (nType == AIRITEM.PM2p5) {
|
|
|
+ if (hLevel == AIRLevel.LEVEL4.PM2_5.GOOD) TXT_AIRQUALITY_STATUS_PM2p5.setText("좋음");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL4.PM2_5.NORMAL) TXT_AIRQUALITY_STATUS_PM2p5.setText("보통");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL4.PM2_5.BAD) TXT_AIRQUALITY_STATUS_PM2p5.setText("나쁨");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL4.PM2_5.WORSE) TXT_AIRQUALITY_STATUS_PM2p5.setText("매우 나쁨");
|
|
|
+ else if (hLevel == (byte) 0xFF) TXT_AIRQUALITY_STATUS_PM2p5.setText("지원안함");
|
|
|
+ }
|
|
|
+ else if (nType == AIRITEM.CO2) {
|
|
|
+ if (hLevel == AIRLevel.LEVEL4.CO2.GOOD) TXT_AIRQUALITY_STATUS_CO2.setText("좋음");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL4.CO2.NORMAL) TXT_AIRQUALITY_STATUS_CO2.setText("보통");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL4.CO2.BAD) TXT_AIRQUALITY_STATUS_CO2.setText("나쁨");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL4.CO2.WORSE) TXT_AIRQUALITY_STATUS_CO2.setText("매우 나쁨");
|
|
|
+ else if (hLevel == (byte) 0xFF) TXT_AIRQUALITY_STATUS_CO2.setText("지원안함");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (AirQualityStep == 8) {
|
|
|
+ if (nType == AIRITEM.PM10) {
|
|
|
+ if (hLevel == AIRLevel.LEVEL8.PM10.BEST) TXT_AIRQUALITY_STATUS_PM10.setText("최고좋음");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.PM10.GOOD) TXT_AIRQUALITY_STATUS_PM10.setText("좋음");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.PM10.FINE) TXT_AIRQUALITY_STATUS_PM10.setText("양호");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.PM10.NORMAL) TXT_AIRQUALITY_STATUS_PM10.setText("보통");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.PM10.BAD) TXT_AIRQUALITY_STATUS_PM10.setText("나쁨");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.PM10.QUITEBAD) TXT_AIRQUALITY_STATUS_PM10.setText("상당히 나쁨");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.PM10.WORSE) TXT_AIRQUALITY_STATUS_PM10.setText("매우 나쁨");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.PM10.WORST) TXT_AIRQUALITY_STATUS_PM10.setText("최악");
|
|
|
+ else if (hLevel == (byte) 0xFF) TXT_AIRQUALITY_STATUS_PM10.setText("지원안함");
|
|
|
+ }
|
|
|
+ else if (nType == AIRITEM.PM2p5) {
|
|
|
+ if (hLevel == AIRLevel.LEVEL8.PM2_5.BEST) TXT_AIRQUALITY_STATUS_PM2p5.setText("아주좋음");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.PM2_5.GOOD) TXT_AIRQUALITY_STATUS_PM2p5.setText("좋음");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.PM2_5.FINE) TXT_AIRQUALITY_STATUS_PM2p5.setText("양호");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.PM2_5.NORMAL) TXT_AIRQUALITY_STATUS_PM2p5.setText("보통");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.PM2_5.BAD) TXT_AIRQUALITY_STATUS_PM2p5.setText("나쁨");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.PM2_5.QUITEBAD) TXT_AIRQUALITY_STATUS_PM2p5.setText("상당히 나쁨");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.PM2_5.WORSE) TXT_AIRQUALITY_STATUS_PM2p5.setText("매우 나쁨");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.PM2_5.WORST) TXT_AIRQUALITY_STATUS_PM2p5.setText("최악");
|
|
|
+ else if (hLevel == (byte) 0xFF) TXT_AIRQUALITY_STATUS_PM2p5.setText("지원안함");
|
|
|
+ }
|
|
|
+ else if (nType == AIRITEM.CO2) {
|
|
|
+ if (hLevel == AIRLevel.LEVEL8.CO2.BEST) TXT_AIRQUALITY_STATUS_CO2.setText("아주좋음");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.CO2.GOOD) TXT_AIRQUALITY_STATUS_CO2.setText("좋음");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.CO2.FINE) TXT_AIRQUALITY_STATUS_CO2.setText("양호");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.CO2.NORMAL) TXT_AIRQUALITY_STATUS_CO2.setText("보통");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.CO2.BAD) TXT_AIRQUALITY_STATUS_CO2.setText("나쁨");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.CO2.QUITEBAD) TXT_AIRQUALITY_STATUS_CO2.setText("상당히 나쁨");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.CO2.WORSE) TXT_AIRQUALITY_STATUS_CO2.setText("매우 나쁨");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL8.CO2.WORST) TXT_AIRQUALITY_STATUS_CO2.setText("최악");
|
|
|
+ else if (hLevel == (byte) 0xFF) TXT_AIRQUALITY_STATUS_CO2.setText("지원안함");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ // 기본 4단계로 그리도록 함
|
|
|
+ if (nType == AIRITEM.PM10) {
|
|
|
+ if (hLevel == AIRLevel.LEVEL4.PM10.GOOD) TXT_AIRQUALITY_STATUS_PM10.setText("좋음");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL4.PM10.NORMAL) TXT_AIRQUALITY_STATUS_PM10.setText("보통");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL4.PM10.BAD) TXT_AIRQUALITY_STATUS_PM10.setText("나쁨");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL4.PM10.WORSE) TXT_AIRQUALITY_STATUS_PM10.setText("매우 나쁨");
|
|
|
+ else if (hLevel == (byte) 0xFF) TXT_AIRQUALITY_STATUS_PM10.setText("지원안함");
|
|
|
+ }
|
|
|
+ else if (nType == AIRITEM.PM2p5) {
|
|
|
+ if (hLevel == AIRLevel.LEVEL4.PM2_5.GOOD) TXT_AIRQUALITY_STATUS_PM2p5.setText("좋음");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL4.PM2_5.NORMAL) TXT_AIRQUALITY_STATUS_PM2p5.setText("보통");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL4.PM2_5.BAD) TXT_AIRQUALITY_STATUS_PM2p5.setText("나쁨");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL4.PM2_5.WORSE) TXT_AIRQUALITY_STATUS_PM2p5.setText("매우 나쁨");
|
|
|
+ else if (hLevel == (byte) 0xFF) TXT_AIRQUALITY_STATUS_PM2p5.setText("지원안함");
|
|
|
+ }
|
|
|
+ else if (nType == AIRITEM.CO2) {
|
|
|
+ if (hLevel == AIRLevel.LEVEL4.CO2.GOOD) TXT_AIRQUALITY_STATUS_CO2.setText("좋음");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL4.CO2.NORMAL) TXT_AIRQUALITY_STATUS_CO2.setText("보통");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL4.CO2.BAD) TXT_AIRQUALITY_STATUS_CO2.setText("나쁨");
|
|
|
+ else if (hLevel == AIRLevel.LEVEL4.CO2.WORSE) TXT_AIRQUALITY_STATUS_CO2.setText("매우 나쁨");
|
|
|
+ else if (hLevel == (byte) 0xFF) TXT_AIRQUALITY_STATUS_CO2.setText("지원안함");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (RuntimeException re) {
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ }
|
|
|
+ catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] drawAirQualityText(int nType, byte hLevel)");
|
|
|
+ //e.printStackTrace();
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 공기질 항목별로 센서값을 표기한다.
|
|
|
+ *
|
|
|
+ * @param nType
|
|
|
+ * @param dFigure
|
|
|
+ */
|
|
|
+ public void drawAirQualityFigure(int nType, double dFigure) {
|
|
|
+ try {
|
|
|
+ if (nType < AIRITEM.PM10 || AIRITEM.CO2 < nType) {
|
|
|
+ Log.w(TAG, "[drawAirQualityFigure] nType is out of range!!! -> " + nType);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if ((TXT_AIRQUALITY_FIGURE_PM10 == null) || (TXT_AIRQUALITY_FIGURE_PM2p5 == null) || (TXT_AIRQUALITY_FIGURE_CO2 == null)) return;
|
|
|
+
|
|
|
+ String strFigure = "";
|
|
|
+ strFigure = String.format("%.0f", dFigure);
|
|
|
+
|
|
|
+ if (nType == AIRITEM.PM10) TXT_AIRQUALITY_FIGURE_PM10.setText(strFigure + "㎍/m³");
|
|
|
+ else if (nType == AIRITEM.PM2p5) TXT_AIRQUALITY_FIGURE_PM2p5.setText(strFigure + "㎍/m³");
|
|
|
+ else if (nType == AIRITEM.CO2) TXT_AIRQUALITY_FIGURE_CO2.setText(strFigure+"ppm");
|
|
|
+ } catch (RuntimeException re) {
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ }
|
|
|
+ catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] drawAirQualityFigure(int nType, double dFigure)");
|
|
|
+ //e.printStackTrace();
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 풍량에 따른 환기 에니메이션 효과 적용
|
|
|
+ *
|
|
|
+ * @param hWind - 변경할 풍량 (VentiAPI.WIND.LOW, VentiAPI.WIND.MID, VentiAPI.WIND.HI)
|
|
|
+ */
|
|
|
+ private void drawAirFlowAnim(byte hWind) {
|
|
|
+ try {
|
|
|
+ Log.i(TAG, "[drawAirFlowAnim] hWind [0x" + String.format("%02X", hWind) + "]");
|
|
|
+ if (!OnOff) {
|
|
|
+ hVentilAnimStatus = (byte) 0x00;
|
|
|
+ if (mVentilAnimHandler != null) mVentilAnimHandler.removeMessages(1);
|
|
|
+ if (mVentilAnimHandler != null) mVentilAnimHandler.removeMessages(2);
|
|
|
+ if (mVentilAnimHandler != null) mVentilAnimHandler.removeMessages(3);
|
|
|
+ mVentilAnim = mAnimModeNormal;
|
|
|
+ IMG_VENTIL_ANIM.setVisibility(View.INVISIBLE);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (hVentilAnimStatus == hWind) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if ((hWind == VentiAPI.WIND.LOW) || (hWind == VentiAPI.WIND.MID) || (hWind == VentiAPI.WIND.HI)) {
|
|
|
+ if (mVentilAnimHandler == null) return;
|
|
|
+ hVentilAnimStatus = hWind;
|
|
|
+ if (mVentilAnimHandler != null) mVentilAnimHandler.removeMessages(1);
|
|
|
+ if (mVentilAnimHandler != null) mVentilAnimHandler.removeMessages(2);
|
|
|
+ if (mVentilAnimHandler != null) mVentilAnimHandler.removeMessages(3);
|
|
|
+ mVentilAnimImgCnt = 0;
|
|
|
+ mVentilAnimHandler.sendEmptyMessage(hWind);
|
|
|
+ IMG_VENTIL_ANIM.setVisibility(View.VISIBLE);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ hVentilAnimStatus = (byte) 0x00;
|
|
|
+ if (mVentilAnimHandler != null) mVentilAnimHandler.removeMessages(1);
|
|
|
+ if (mVentilAnimHandler != null) mVentilAnimHandler.removeMessages(2);
|
|
|
+ if (mVentilAnimHandler != null) mVentilAnimHandler.removeMessages(3);
|
|
|
+ mVentilAnim = mAnimModeNormal;
|
|
|
+ IMG_VENTIL_ANIM.setImageResource(mVentilAnim[mVentilAnim.length - 1]);
|
|
|
+ IMG_VENTIL_ANIM.setVisibility(View.INVISIBLE);
|
|
|
+ }
|
|
|
+ } catch (RuntimeException re) {
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ }
|
|
|
+ catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] drawAirFlowAnim(byte hWind)");
|
|
|
+ //e.printStackTrace();
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 전원버튼 ON/OFF 이미지 교체
|
|
|
+ *
|
|
|
+ * @param OnOff - true : ON, false : OFF
|
|
|
+ */
|
|
|
+ private void drawPower(boolean OnOff) {
|
|
|
+ try {
|
|
|
+ if (BTN_ONOFF_POWER != null) {
|
|
|
+ if (OnOff) BTN_ONOFF_POWER.setButtonRearImage();
|
|
|
+ else BTN_ONOFF_POWER.setButtonFrontImage();
|
|
|
+ }
|
|
|
+ else Log.w(TAG, "[drawPower] BTN_ONOFF_POWER is null!!");
|
|
|
+ } catch (RuntimeException re) {
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ }
|
|
|
+ catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] drawPower(boolean OnOff)");
|
|
|
+ //e.printStackTrace();
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 자동청정 ON/OFF 이미지 교체
|
|
|
+ *
|
|
|
+ * @param OnOff - true : ON, false : OFF
|
|
|
+ */
|
|
|
+ private void drawAutoClean(boolean OnOff) {
|
|
|
+ try {
|
|
|
+ if (BTN_ONOFF_AUTOCLEAN != null) {
|
|
|
+ if (OnOff) BTN_ONOFF_AUTOCLEAN.setButtonRearImage();
|
|
|
+ else BTN_ONOFF_AUTOCLEAN.setButtonFrontImage();
|
|
|
+ }
|
|
|
+ else Log.w(TAG, "[drawAutoClean] BTN_ONOFF_AUTOCLEAN is null!!");
|
|
|
+ } catch (RuntimeException re) {
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ }
|
|
|
+ catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] drawAutoClean(boolean OnOff)");
|
|
|
+ //e.printStackTrace();
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 자동운전 ON/OFF 이미지 교체
|
|
|
+ *
|
|
|
+ * @param OnOff - true : ON, false : OFF
|
|
|
+ */
|
|
|
+ private void drawAutoDriving(boolean OnOff) {
|
|
|
+ try {
|
|
|
+ if (BTN_VENTILMODE_AUTO != null) {
|
|
|
+ if (OnOff) BTN_VENTILMODE_AUTO.setButtonRearImage();
|
|
|
+ else BTN_VENTILMODE_AUTO.setButtonFrontImage();
|
|
|
+ }
|
|
|
+ else Log.w(TAG, "[drawAutoDriving] BTN_VENTILMODE_AUTO is null!!");
|
|
|
+ } catch (RuntimeException re) {
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ }
|
|
|
+ catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] drawAutoDriving(boolean OnOff)");
|
|
|
+ //e.printStackTrace();
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 예약 ON/OFF 이미지 교체
|
|
|
+ *
|
|
|
+ * @param OnOff - true : ON, false : OFF
|
|
|
+ */
|
|
|
+ private void drawReservation(boolean OnOff) {
|
|
|
+ try {
|
|
|
+ if (BTN_ONOFF_RESERVATION != null) {
|
|
|
+ if (OnOff) BTN_ONOFF_RESERVATION.setButtonRearImage();
|
|
|
+ else BTN_ONOFF_RESERVATION.setButtonFrontImage();
|
|
|
+ }
|
|
|
+ else Log.w(TAG, "[drawReservation] BTN_ONOFF_RESERVATION is null!!");
|
|
|
+ } catch (RuntimeException re) {
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ }
|
|
|
+ catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] drawReservation(boolean OnOff)");
|
|
|
+ //e.printStackTrace();
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 예약 ON/OFF 이미지 교체
|
|
|
+ *
|
|
|
+ * @param OnOff - true : ON, false : OFF
|
|
|
+ */
|
|
|
+ private void drawHeater(boolean OnOff) {
|
|
|
+ try {
|
|
|
+ if (BTN_ONOFF_HEATER != null) {
|
|
|
+ if (OnOff) BTN_ONOFF_HEATER.setButtonRearImage();
|
|
|
+ else BTN_ONOFF_HEATER.setButtonFrontImage();
|
|
|
+ }
|
|
|
+ else Log.w(TAG, "[drawHeater] BTN_ONOFF_HEATER is null!!");
|
|
|
+ } catch (RuntimeException re) {
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ }
|
|
|
+ catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] drawHeater(boolean OnOff)");
|
|
|
+ //e.printStackTrace();
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 풍량버튼 이미지 교체
|
|
|
+ *
|
|
|
+ * @param hWind - 변경할 풍량 (VentiAPI.WIND.LOW, VentiAPI.WIND.MID, VentiAPI.WIND.HI)
|
|
|
+ */
|
|
|
+ private void drawWind(byte hWind) {
|
|
|
+ try {
|
|
|
+ Log.i(TAG, "[drawWind] hWind [" + hWind + "], OnOff [" + OnOff + "], HDCAutoAirClean [" + HDCAutoAirClean + "], AutoDriving [" + AutoDriving + "]");
|
|
|
+ if (OnOff && (HDCAutoAirClean || AutoDriving)) {
|
|
|
+ // 자동청정기능 동작중
|
|
|
+ if (hWind == VentiAPI.WIND.LOW) {
|
|
|
+ BTN_WIND_01.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_wind_01_selecteddisabled);
|
|
|
+ BTN_WIND_02.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_wind_02_disabled);
|
|
|
+ BTN_WIND_03.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_wind_03_disabled);
|
|
|
+ }
|
|
|
+ else if (hWind == VentiAPI.WIND.MID) {
|
|
|
+ BTN_WIND_01.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_wind_01_disabled);
|
|
|
+ BTN_WIND_02.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_wind_02_selecteddisabled);
|
|
|
+ BTN_WIND_03.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_wind_03_disabled);
|
|
|
+ }
|
|
|
+ else if (hWind == VentiAPI.WIND.HI) {
|
|
|
+ BTN_WIND_01.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_wind_01_disabled);
|
|
|
+ BTN_WIND_02.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_wind_02_disabled);
|
|
|
+ BTN_WIND_03.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_wind_03_selecteddisabled);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ BTN_WIND_01.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_wind_01_disabled);
|
|
|
+ BTN_WIND_02.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_wind_02_disabled);
|
|
|
+ BTN_WIND_03.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_wind_03_disabled);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ BTN_WIND_01.setButtonEventOffDisable();
|
|
|
+ BTN_WIND_02.setButtonEventOffDisable();
|
|
|
+ BTN_WIND_03.setButtonEventOffDisable();
|
|
|
+ if (hWind == VentiAPI.WIND.LOW) {
|
|
|
+ BTN_WIND_01.setButtonEventOffEnable();
|
|
|
+
|
|
|
+ BTN_WIND_01.setButtonRearImage();
|
|
|
+ BTN_WIND_02.setButtonFrontImage();
|
|
|
+ BTN_WIND_03.setButtonFrontImage();
|
|
|
+ }
|
|
|
+ else if (hWind == VentiAPI.WIND.MID) {
|
|
|
+ BTN_WIND_02.setButtonEventOffEnable();
|
|
|
+
|
|
|
+ BTN_WIND_01.setButtonFrontImage();
|
|
|
+ BTN_WIND_02.setButtonRearImage();
|
|
|
+ BTN_WIND_03.setButtonFrontImage();
|
|
|
+ }
|
|
|
+ else if (hWind == VentiAPI.WIND.HI) {
|
|
|
+ BTN_WIND_03.setButtonEventOffEnable();
|
|
|
+
|
|
|
+ BTN_WIND_01.setButtonFrontImage();
|
|
|
+ BTN_WIND_02.setButtonFrontImage();
|
|
|
+ BTN_WIND_03.setButtonRearImage();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ BTN_WIND_01.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_wind_01_disabled);
|
|
|
+ BTN_WIND_02.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_wind_02_disabled);
|
|
|
+ BTN_WIND_03.setButtonEventOffEnable(R.drawable.ctrl_ventil_btn_wind_03_disabled);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (RuntimeException re) {
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ }
|
|
|
+ catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] drawPower(boolean OnOff)");
|
|
|
+ //e.printStackTrace();
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 타이머 시간 표시 변경
|
|
|
+ *
|
|
|
+ * @param nTimer - 변경할 시간값
|
|
|
+ */
|
|
|
+ private void drawTimer(int nTimer) {
|
|
|
+ try {
|
|
|
+ Log.i(TAG, "[drawTimer] nTimer [" + nTimer + "]");
|
|
|
+ String strTimer = new String();
|
|
|
+
|
|
|
+ if (!OnOff) {
|
|
|
+ BTN_TIMER_LEFT.setButtonEventOffEnable(R.drawable.control_venti_btn_arrow_back_disabled);
|
|
|
+ BTN_TIMER_RIGHT.setButtonEventOffEnable(R.drawable.control_venti_btn_arrow_next_disabled);
|
|
|
+ strTimer = "꺼짐";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ BTN_TIMER_LEFT.setButtonEventOffDisable();
|
|
|
+ BTN_TIMER_RIGHT.setButtonEventOffDisable();
|
|
|
+
|
|
|
+ if (nTimer == 0) {
|
|
|
+ strTimer = "계속";
|
|
|
+ }
|
|
|
+ else if (nTimer == 255) {
|
|
|
+ strTimer = "4시간 초과";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ int timer = nTimer;
|
|
|
+ int Hour = timer / 60;
|
|
|
+ if (Hour == 0) {
|
|
|
+ strTimer = timer + " 분";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ int Minute = timer - (Hour * 60);
|
|
|
+ if (Minute == 0) strTimer = Hour + " 시간";
|
|
|
+ else strTimer = Hour + " 시간" + " " + Minute + " 분";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Log.i(TAG, "[drawTimer] strTimer [" + strTimer + "]");
|
|
|
+ TXT_TIMER.setText(strTimer);
|
|
|
+ } catch (RuntimeException re) {
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ }
|
|
|
+ catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] drawTimer(int nTimer)");
|
|
|
+ //e.printStackTrace();
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 타이머설정 버튼 좌우가 눌렸을 경우 타이머 값을 가져온다.
|
|
|
+ *
|
|
|
+ * @param TargetId - 눌린버튼 LEFT or RIGHT (ID.ventimain.button.TIMER_LEFT, ID.ventimain.button.TIMER_RIGHT)
|
|
|
+ * @return (int) 타이머값
|
|
|
+ */
|
|
|
+ private int getNextTimerValue(int TargetId) {
|
|
|
+ try {
|
|
|
+ if (mVentilData.TimerTable == null) return 0;
|
|
|
+
|
|
|
+ int retTimer = Timer;
|
|
|
+ if (TargetId == ID.VentilationMainScreenID.BTN.TIMER_LEFT) {
|
|
|
+ int FindIndex = mVentilData.TimerTable.length-1;
|
|
|
+ if (retTimer != mVentilData.TimerTable[0]) {
|
|
|
+ for (int i = 0; i < mVentilData.TimerTable.length; i--) {
|
|
|
+ if (retTimer > mVentilData.TimerTable[FindIndex]) break;
|
|
|
+ FindIndex--;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ retTimer = mVentilData.TimerTable[FindIndex];
|
|
|
+ }
|
|
|
+ else if (TargetId == ID.VentilationMainScreenID.BTN.TIMER_RIGHT) {
|
|
|
+ int FindIndex = 0;
|
|
|
+ if (retTimer < mVentilData.TimerTable[mVentilData.TimerTable.length-1]) {
|
|
|
+ for (int i = 0; i < mVentilData.TimerTable.length; i++) {
|
|
|
+ if (retTimer < mVentilData.TimerTable[FindIndex]) break;
|
|
|
+ FindIndex++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ retTimer = mVentilData.TimerTable[FindIndex];
|
|
|
+ }
|
|
|
+ return retTimer;
|
|
|
+ } catch (RuntimeException re) {
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] getNextTimerValue(int TargetId)");
|
|
|
+ //e.printStackTrace();
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void drawInstructionInfo() {
|
|
|
+ try {
|
|
|
+ String strPrefix = "";
|
|
|
+ String strBody = "";
|
|
|
+ String strSuffix = "";
|
|
|
+ String strInstruction = "환기 동작 상태가 표시됩니다.";
|
|
|
+
|
|
|
+ // 접두어
|
|
|
+ if (Reservation) strPrefix = "[예약운전] ";
|
|
|
+ else if (HDCAutoAirClean) strPrefix = "[자동청정] ";
|
|
|
+ else strPrefix = "";
|
|
|
+
|
|
|
+ // 바디
|
|
|
+ if (OnOff) {
|
|
|
+ if (ByPass) strBody += "자연환기 동작중";
|
|
|
+ else if (InnerCycle) strBody += "내부순환 동작중";
|
|
|
+ else if (OutAirClean) strBody += "외기청정 동작중";
|
|
|
+ else if (AutoDriving) strBody += "자동운전 동작중";
|
|
|
+ else strBody += "일반환기 동작중";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ strBody += "환기장비 꺼짐";
|
|
|
+ }
|
|
|
+
|
|
|
+ // 접미어
|
|
|
+ if (HeaterStatus == Venti.HEATER.STAND_BY) strSuffix = " (히터 예열중)";
|
|
|
+ else if (HeaterStatus == Venti.HEATER.ON) strSuffix = " (히터 동작중 - " + HeaterTimeRemaining + "분 후 히터 꺼짐)";
|
|
|
+ else strSuffix = "";
|
|
|
+
|
|
|
+ strInstruction = strPrefix + strBody + strSuffix;
|
|
|
+ Log.i(TAG, "[drawInstructionInfo] strInstruction [" + strInstruction + "]");
|
|
|
+ TXT_INSTRUCTION.setText(strInstruction);
|
|
|
+ } catch (RuntimeException re) {
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ }
|
|
|
+ catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] drawInstructionInfo()");
|
|
|
+ //e.printStackTrace();
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 제어기 상태를 가져온다.
|
|
|
+ *
|
|
|
+ * @param bReal - (boolean) true : 실시간 , false : 가장최근
|
|
|
+ * @return (int) - >=0 : 성공, <0 : 실패
|
|
|
+ */
|
|
|
+ private int updateVentilatorData(boolean bReal) {
|
|
|
+ printDebugLog("[updateVentilatorData] - Start (bReal : " + bReal + ")");
|
|
|
+
|
|
|
+
|
|
|
+ printDebugLog("[updateVentilatorData] Heater: " + Support.Heater);
|
|
|
+
|
|
|
+ printDebugLog("[updateVentilatorData] - OK");
|
|
|
+
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 디바이스 API 를 Load 한다.
|
|
|
+ *
|
|
|
+ * @param wallpadAPI - 생성시 전달받은 WallPadAPI
|
|
|
+ * @return (int) - >=0 : 성공, <0 : 실패
|
|
|
+ */
|
|
|
+ private int loadAirSensorAPI(WallPadAPI wallpadAPI) {
|
|
|
+ try {
|
|
|
+ // 1. Mode Check
|
|
|
+ if (OPERATION_MODE != Common.MODE_NOMAL) return -1;
|
|
|
+
|
|
|
+ printDebugLog("[loadAirSensorAPI] - Start");
|
|
|
+
|
|
|
+ // 2. wpapi Check
|
|
|
+ if (wallpadAPI == null) {
|
|
|
+ Log.e(TAG, "[loadAirSensorAPI] - wallpadAPI is null");
|
|
|
+ return -2;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 3. Load API
|
|
|
+ printDebugLog("[loadAirSensorAPI] - Step1 : mAirSensorAPI API Load...");
|
|
|
+ try {
|
|
|
+ mAirQualitySensorAPI = wallpadAPI.Get_SensorAp_API();
|
|
|
+ } catch (RuntimeException re) {
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ return -100;
|
|
|
+ }
|
|
|
+ catch (Exception e) {
|
|
|
+ Log.e(TAG, "[loadAirSensorAPI] - [Exception Error] wallpadAPI.Get_SensorAp_API");
|
|
|
+ Log.e(TAG, "[loadAirSensorAPI] - " + e.toString());
|
|
|
+ //e.printStackTrace();
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
+ return -100;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (mAirQualitySensorAPI == null) {
|
|
|
+ Log.e(TAG, "[loadAirSensorAPI] - mAirSensorAPI is null");
|
|
|
+ return -4;
|
|
|
+ }
|
|
|
+
|
|
|
+ printDebugLog("[loadAirSensorAPI] - OK");
|
|
|
+
|
|
|
+ return 0;
|
|
|
+ } catch (RuntimeException re) {
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ return -101;
|
|
|
+ }
|
|
|
+ catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] loadAirSensorAPI(WallPadAPI wpapi)");
|
|
|
+ //e.printStackTrace();
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
+ return -101;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 제어기 상태를 가져온다.
|
|
|
+ *
|
|
|
+ * @param bReal - (boolean) true : 실시간 , false : 가장최근
|
|
|
+ * @return (int) - >=0 : 성공, <0 : 실패
|
|
|
+ */
|
|
|
+ private int updateAirSensorData(boolean bReal) {
|
|
|
+ try {
|
|
|
+ printDebugLog("[updateAirSensorData] - Start (real : " + bReal + ")");
|
|
|
+
|
|
|
+ // 1. Api Load Check
|
|
|
+ if (mAirQualitySensorAPI == null) {
|
|
|
+ Log.e(TAG, "[updateAirSensorData] - mAirSensorAPI unload !!!");
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 2. Reflash
|
|
|
+ int ret = mAirQualitySensorAPI.Refresh(bReal);
|
|
|
+ if (ret < 0) {
|
|
|
+ Log.e(TAG, "[updateAirSensorData] getState - ret (" + ret + ") ErrorCode = " + mAirQualitySensorAPI.ErrorCode.Get_Error_Str(ret));
|
|
|
+ return -2;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 3. Range Check
|
|
|
+ if ((mAirQualitySensorAPI.mAirQualityData.device.hLevel_PM10 < AIRLevel.LEVEL6.PM10.BEST || mAirQualitySensorAPI.mAirQualityData.device.hLevel_PM10 > AIRLevel.LEVEL6.PM10.WORST) && mAirQualitySensorAPI.mAirQualityData.device.hLevel_PM10 != (byte)0xFF) {
|
|
|
+ Log.e(TAG, "[updateAirSensorData] Dust PM10 Range Error :" + mAirQualitySensorAPI.mAirQualityData.device.hLevel_PM10);
|
|
|
+ return -3;
|
|
|
+ }
|
|
|
+
|
|
|
+ if ((mAirQualitySensorAPI.mAirQualityData.device.hLevel_PM2p5 < AIRLevel.LEVEL6.PM2_5.BEST || mAirQualitySensorAPI.mAirQualityData.device.hLevel_PM2p5 > AIRLevel.LEVEL6.PM2_5.WORST) && mAirQualitySensorAPI.mAirQualityData.device.hLevel_PM2p5 != (byte)0xFF) {
|
|
|
+ Log.e(TAG, "[updateAirSensorData] Dust PM2.5 Range Error :" + mAirQualitySensorAPI.mAirQualityData.device.hLevel_PM2p5);
|
|
|
+ return -4;
|
|
|
+ }
|
|
|
+
|
|
|
+ if ((mAirQualitySensorAPI.mAirQualityData.device.hLevel_CO2 < AIRLevel.LEVEL6.CO2.BEST || mAirQualitySensorAPI.mAirQualityData.device.hLevel_CO2 > AIRLevel.LEVEL6.CO2.WORST) && mAirQualitySensorAPI.mAirQualityData.device.hLevel_CO2 != (byte)0xFF) {
|
|
|
+ Log.e(TAG, "[updateAirSensorData] CO2 Range Error :" + mAirQualitySensorAPI.mAirQualityData.device.hLevel_CO2);
|
|
|
+ return -5;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 4. Data Copy
|
|
|
+
|
|
|
+ mAirQualityData = mAirQualitySensorAPI.mAirQualityData;
|
|
|
+
|
|
|
+ /*if(HDC_TEMP_SHOW)
|
|
|
+ {
|
|
|
+ mData.Level_CO2 = AIRLevel.LEVEL6.CO2.CO2_NORMAL;
|
|
|
+ mData.Co2_Value = 501;
|
|
|
+ }*/
|
|
|
+
|
|
|
+ // 5. Debug msg
|
|
|
+ printDebugLog(mAirQualityData.device.ToDebugString());
|
|
|
+ printDebugLog("[updateAirSensorData] - OK");
|
|
|
+ return 0;
|
|
|
+ } catch (RuntimeException re) {
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ return -101;
|
|
|
+ }
|
|
|
+ catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] updateAirSensorData(boolean bReal)");
|
|
|
+ //e.printStackTrace();
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
+ return -101;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 디바이스에 알림 BR 을 등록한다.
|
|
|
+ *
|
|
|
+ * @return (int) - >=0 : 성공, <0 : 실패
|
|
|
+ */
|
|
|
+ private int registerAirSensorBR(boolean bRegi) {
|
|
|
+ try {
|
|
|
+ printDebugLog("[registerAirSensorBR] - Start (bRegi:" + bRegi + ")");
|
|
|
+
|
|
|
+ String BR_NAME = ID.AirQualityMainScreenID.BR_AIRQUALITY;
|
|
|
+
|
|
|
+ // 1. Api Load Check
|
|
|
+ if (mAirQualitySensorAPI == null) {
|
|
|
+ Log.e(TAG, "[registerAirSensorBR] - mAirSensorAPI unload !!!");
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (bRegi) {
|
|
|
+ try {
|
|
|
+ mAirQualitySensorAPI.regChangedBR(BR_NAME);
|
|
|
+ } catch (RuntimeException re) {
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ return -101;
|
|
|
+ }
|
|
|
+ catch (Exception e) {
|
|
|
+ Log.e(TAG, "[registerAirSensorBR] - [Exception Error] mAirSensorAPI.regChangedBR");
|
|
|
+ Log.e(TAG, "[registerAirSensorBR] - " + e.toString());
|
|
|
+ //e.printStackTrace();
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
+ return -101;
|
|
|
+ }
|
|
|
+ super.addBrActionFilter(BR_NAME);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ try {
|
|
|
+ mAirQualitySensorAPI.unregChangedBR(BR_NAME);
|
|
|
+ } catch (RuntimeException re) {
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ return -102;
|
|
|
+ }
|
|
|
+ catch (Exception e) {
|
|
|
+ Log.e(TAG, "[registerAirSensorBR] - [Exception Error] mAirSensorAPI.unregChangedBR");
|
|
|
+ Log.e(TAG, "[registerAirSensorBR] - " + e.toString());
|
|
|
+ //e.printStackTrace();
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
+ return -102;
|
|
|
+ }
|
|
|
+ super.removeBrActionFilter(BR_NAME);
|
|
|
+ }
|
|
|
+
|
|
|
+ return 0;
|
|
|
+ } catch (RuntimeException re) {
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ return -103;
|
|
|
+ }
|
|
|
+ catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] registerAirSensorBR(boolean bRegi)");
|
|
|
+ //e.printStackTrace();
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
+ return -103;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 환기의 취침 모드를 변경한다.
|
|
|
+ *
|
|
|
+ * @param bOnOff - (boolean) 변경할 운전모드 (true:ON , false:OFF)
|
|
|
+ *
|
|
|
+ * @return (int) - >=0 : 성공, <0 : 실패
|
|
|
+ */
|
|
|
+ private int ctrlDeviceSleepMode(boolean bOnOff) {
|
|
|
+ printDebugLog("[ctrlDeviceSleepMode] - Start (bOnOff : " + bOnOff + ")");
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 환기의 운전모드를 변경한다.
|
|
|
+ *
|
|
|
+ * @param bOnOff - (boolean) 변경할 운전모드 (true:ON , false:OFF)
|
|
|
+ *
|
|
|
+ * @return (int) - >=0 : 성공, <0 : 실패
|
|
|
+ */
|
|
|
+ private int ctrlDevicePower(boolean bOnOff) {
|
|
|
+ printDebugLog("[ctrlDevicePower] - Start (bOnOff : " + bOnOff + ")");
|
|
|
+ printDebugLog("[ctrlDevicePower] - OK");
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 환풍기 예약 운전 동작을 제어한다.
|
|
|
+ *
|
|
|
+ * @param bOnOff - 변경할 예약상태 (true : 시작, false : 정지)
|
|
|
+ * @return (int) - >=0 : 성공, <0 : 실패
|
|
|
+ */
|
|
|
+ private int ctrlDeviceReservation(boolean bOnOff) {
|
|
|
+ printDebugLog("[ctrlDeviceReservation] - Start (bOnOff : " + bOnOff + ")");
|
|
|
+ printDebugLog("[ctrlDeviceReservation] - OK");
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 환기의 풍량을 변경한다.
|
|
|
+ *
|
|
|
+ * @param hWindType - 변경할 풍량 (VentiAPI.WIND.LOW , VentiAPI.WIND.MID, VentiAPI.WIND.HI)
|
|
|
+ *
|
|
|
+ * @return (int) - >=0 : 성공, <0 : 실패
|
|
|
+ */
|
|
|
+ private int ctrlDeviceWindType(byte hWindType) {
|
|
|
+ printDebugLog("[ctrlDeviceWindType] - Start (hWindType : " + String.format("[%02x]", hWindType) + ")");
|
|
|
+ printDebugLog("[ctrlDeviceWindType] - OK");
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 환기의 타이머를 변경한다.
|
|
|
+ *
|
|
|
+ * @param nTime - 변경할 타이머값
|
|
|
+ *
|
|
|
+ * @return (int) - >=0 : 성공, <0 : 실패
|
|
|
+ */
|
|
|
+ private int ctrlDeviceTimer(int nTime) {
|
|
|
+ printDebugLog("[ctrlDeviceTimer] - Start (Timer : " + nTime + ")");
|
|
|
+ printDebugLog("[ctrlDeviceTimer] - OK");
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 환기의 자연환기 모드를 변경한다.
|
|
|
+ *
|
|
|
+ * @param bOnOff - (boolean) 변경할 운전모드 (true:ON , false:OFF)
|
|
|
+ *
|
|
|
+ * @return (int) - >=0 : 성공, <0 : 실패
|
|
|
+ */
|
|
|
+ private int ctrlDeviceNaturalVentil(boolean bOnOff) {
|
|
|
+ printDebugLog("[ctrlDeviceNaturalVentil] - Start (bOnOff : " + bOnOff + ")");
|
|
|
+ printDebugLog("[ctrlDeviceNaturalVentil] - OK");
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 환기의 히터 모드를 변경한다.
|
|
|
+ *
|
|
|
+ * @param bOnOff - (boolean) 변경할 운전모드 (true:ON , false:OFF)
|
|
|
+ *
|
|
|
+ * @return (int) - >=0 : 성공, <0 : 실패
|
|
|
+ */
|
|
|
+ private int ctrlDeviceHeater(boolean bOnOff) {
|
|
|
+ printDebugLog("[ctrlDeviceHeater] - Start (bOnOff : " + bOnOff + ")");
|
|
|
+ printDebugLog("[ctrlDeviceHeater] - OK");
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 환기의 필터교환을 리셋한다.
|
|
|
+ *
|
|
|
+ * param OnOff - (boolean) 변경할 운전모드 (true:ON , false:OFF)
|
|
|
+ *
|
|
|
+ * @return (int) - >=0 : 성공, <0 : 실패
|
|
|
+ */
|
|
|
+ private int ctrlDeviceResetFilter() {
|
|
|
+ printDebugLog("[ctrlDeviceResetFilter] - Start");
|
|
|
+ printDebugLog("[ctrlDeviceResetFilter] - OK");
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 환기의 자동환기 모드를 변경한다.
|
|
|
+ *
|
|
|
+ * @param bOnOff - (boolean) 변경할 운전모드 (true:ON , false:OFF)
|
|
|
+ *
|
|
|
+ * @return (int) - >=0 : 성공, <0 : 실패
|
|
|
+ */
|
|
|
+ private int ctrlDeviceAutoVentil(boolean bOnOff) {
|
|
|
+ printDebugLog("[ctrlDeviceAutoVentil] - Start (bOnOff : " + bOnOff + ")");
|
|
|
+ printDebugLog("[ctrlDeviceAutoVentil] - OK");
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 환기의 내부순환 모드를 변경한다.
|
|
|
+ *
|
|
|
+ * @param bOnOff - (boolean) 변경할 운전모드 (true:ON , false:OFF)
|
|
|
+ *
|
|
|
+ * @return (int) - >=0 : 성공, <0 : 실패
|
|
|
+ */
|
|
|
+ private int ctrlDeviceInternalVentil(boolean bOnOff) {
|
|
|
+ printDebugLog("[ctrlDeviceInternalVentil] - Start (bOnOff : " + bOnOff + ")");
|
|
|
+ printDebugLog("[ctrlDeviceInternalVentil] - OK");
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 환기의 외기청정 모드를 변경한다.
|
|
|
+ *
|
|
|
+ * @param bOnOff - (boolean) 변경할 운전모드 (true:ON , false:OFF)
|
|
|
+ *
|
|
|
+ * @return (int) - >=0 : 성공, <0 : 실패
|
|
|
+ */
|
|
|
+ private int ctrlDeviceOutAirClean(boolean bOnOff) {
|
|
|
+ printDebugLog("[ctrlDeviceOutAirClean] - Start (OnOff : " + bOnOff + ")");
|
|
|
+ printDebugLog("[ctrlDeviceOutAirClean] - OK");
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 환기 자동 청정 기능
|
|
|
+ *
|
|
|
+ * @param bOnOff - (boolean) 변경할 운전모드 (true:ON , false:OFF)
|
|
|
+ *
|
|
|
+ * @return (int) - >=0 : 성공, <0 : 실패
|
|
|
+ */
|
|
|
+ private int ctrlDeviceAutoAirClean(boolean bOnOff) {
|
|
|
+ printDebugLog("[ctrlDeviceAutoAirClean] - Start (OnOff : " + bOnOff + ")");
|
|
|
+ printDebugLog("[ctrlDeviceAutoAirClean] - OK");
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 환기 자동 청정 기능
|
|
|
+ *
|
|
|
+ * @param hFanMode - (boolean) 변경할 팬 동작 모드 (true:ON , false:OFF)
|
|
|
+ *
|
|
|
+ * @return (int) - >=0 : 성공, <0 : 실패
|
|
|
+ */
|
|
|
+ private int ctrlDeviceAirQualitySensorFan(byte hFanMode) {
|
|
|
+ printDebugLog("[ctrlDeviceAirQualitySensorFan] - Start (hFanMode : " + hFanMode + ")");
|
|
|
+
|
|
|
+ // 1. Param Check
|
|
|
+
|
|
|
+ // 2. Api Load Check
|
|
|
+ if (mAirQualitySensorAPI == null) {
|
|
|
+ Log.e(TAG, "[ctrlDeviceAirQualitySensorFan] - mVentilAPI unload !!!");
|
|
|
+ return -2;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 2. Control
|
|
|
+ try {
|
|
|
+ int ret = mAirQualitySensorAPI.ctrlFanMode(hFanMode);
|
|
|
+ if (ret < 0) {
|
|
|
+ Log.e(TAG, "[ctrlDeviceAirQualitySensorFan] ctrlFanMode - Error (" + ret + ") ErrorCode = " + mAirQualitySensorAPI.ErrorCode.ErrStr());
|
|
|
+ return -3;
|
|
|
+ }
|
|
|
+ } catch (RuntimeException re) {
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ return -100;
|
|
|
+ }
|
|
|
+ catch (Exception e) {
|
|
|
+ Log.e(TAG, "[ctrlDeviceAirQualitySensorFan] - [Exception Error] mAirQualitySensorAPI.ctrlFanMode(" + hFanMode + ")");
|
|
|
+ //e.printStackTrace();
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
+ return -100;
|
|
|
+ }
|
|
|
+ printDebugLog("[ctrlDeviceAirQualitySensorFan] - OK");
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ // =================================================================================================
|
|
|
+ // [[ Sample ]] region
|
|
|
+ // =================================================================================================
|
|
|
+ /**
|
|
|
+ * (영업샘플모드) 가상으로 환기의 전원을 ON/OFF 한다.
|
|
|
+ */
|
|
|
+ private void Sample_PowerOnOff() {
|
|
|
+
|
|
|
+ updateScreen();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * (영업샘플모드) 가상으로 환기의 예약운전을 ON/OFF 한다.
|
|
|
+ */
|
|
|
+ private void Sample_ReservationOnOff(boolean OnOff) {
|
|
|
+ updateScreen();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * (영업샘플모드) 가상으로 환기의 풍량을 제어한다.
|
|
|
+ *
|
|
|
+ * @param Wind - 변경할 풍량 상태
|
|
|
+ */
|
|
|
+ private void Sample_WindCont(byte Wind) {
|
|
|
+ updateScreen();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * (영업샘플모드) 가상으로 환기의 타이머를 변경한다.
|
|
|
+ *
|
|
|
+ * @param TargetId - 눌린 버튼
|
|
|
+ */
|
|
|
+ private void Sample_TimerCont(int TargetId) {
|
|
|
+ updateScreen();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * (영업샘플모드) 가상으로 환기의 내부순환을 제어한다.
|
|
|
+ *
|
|
|
+ * @param OnOff - 변경할 상태
|
|
|
+ */
|
|
|
+ private void Sample_InnerCycle(boolean OnOff) {
|
|
|
+ updateScreen();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * (영업샘플모드) 가상으로 환기의 외기청정을 제어한다.
|
|
|
+ *
|
|
|
+ * @param OnOff - 변경할 상태
|
|
|
+ */
|
|
|
+ private void Sample_OutAirClean(boolean OnOff) {
|
|
|
+ updateScreen();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * (영업샘플모드) 가상으로 환기의 외기청정을 제어한다.
|
|
|
+ *
|
|
|
+ * @param OnOff - 변경할 상태
|
|
|
+ */
|
|
|
+ private void Sample_SleepMode(boolean OnOff) {
|
|
|
+ updateScreen();
|
|
|
+ }
|
|
|
+
|
|
|
+}
|