浏览代码

[ManagerSetting]
1. 신형단지서버 사용 변경
- Switch => Spinner ( 1.0, 2.0, Blended )
2. 초기값 변경
- 1(1:신형단지서버(사용안함)) => 1(1:신형단지서버(사용함)종류(기축))

[WallPadAPI]
1. GetNewDanjiServer() 함수 변경
- 데이터 타입 boolean => int 형(1: 1.0, 2:2.0, 0:Blended)
- 기존 DB를 불러올 경우도 내부적으로 같이 처리함

[WallPadCall, WallPadconfig, WallPadMain]
- GetNewDanjiServer() 함수 코드 변경

DESKTOP-FBA840V\icontrols 4 年之前
父节点
当前提交
a55bfe963b
共有 20 个文件被更改,包括 6275 次插入5846 次删除
  1. 二进制
      AutoPicture/libs/WallPadAPI.jar
  2. 2 1
      ManagerSetting/src/main/java/com/artncore/managersetting/dao/MainDatabaseManager.java
  3. 4 0
      ManagerSetting/src/main/java/com/artncore/managersetting/domain/Const.java
  4. 138 17
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/SettingDetailFunctionFragment.java
  5. 14 0
      ManagerSetting/src/main/res/layout/setting_detail_container_gle.xml
  6. 13 0
      ManagerSetting/src/main/res/layout/setting_detail_container_sa.xml
  7. 5 0
      ManagerSetting/src/main/res/values/strings.xml
  8. 二进制
      WallPadAPI/jar/WallPadAPI.jar
  9. 4638 4587
      WallPadAPI/src/main/java/com/artncore/WallPadDataMgr/WallpadDeviceSet.java
  10. 16 1
      WallPadAPI/src/main/java/com/artncore/WallPadDataMgr/WallpadStatusData.java
  11. 475 461
      WallPadAPI/src/main/java/com/artncore/wallpadimap/WallPadiMAPClient.java
  12. 769 754
      WallPadAPI/src/main/java/com/artncore/wallpadimap/WallPadiMAPNotifyAPI.java
  13. 46 9
      WallPadCall/src/main/java/kr/co/icontrols/callengine/engine/AutoSaveStrangerPicture.java
  14. 47 9
      WallPadCall/src/main/java/kr/co/icontrols/callengine/engine/AutoSaveVisitorPicture.java
  15. 二进制
      WallPadConfig/libs/WallPadAPI.jar
  16. 15 1
      WallPadConfig/src/main/java/kr/co/icontrols/wallpadconfig/screen/ConfigSettingMainScreen.java
  17. 15 1
      WallPadConfig/src/main/java/kr/co/icontrols/wallpadconfig/screen/PopupSmartKeySvrSend.java
  18. 二进制
      WallPadMain/libs/WallPadAPI.jar
  19. 15 1
      WallPadMain/src/main/java/kr/co/icontrols/wallpadmain/MainActivity.java
  20. 63 4
      WallPadMain/src/main/java/kr/co/icontrols/wallpadmain/util/iMapServer.java

二进制
AutoPicture/libs/WallPadAPI.jar


+ 2 - 1
ManagerSetting/src/main/java/com/artncore/managersetting/dao/MainDatabaseManager.java

@@ -1781,7 +1781,8 @@ public class MainDatabaseManager {
                         break;
 
                     case SETTING_ITEM_SUB_DEVICE_NEWSERVER:
-                        devInfo = "1(1:신형단지서버(사용안함))";
+                        devInfo = "1(1:신형단지서버(사용함)종류(기축))";
+                        //devInfo = "1(1:신형단지서버(사용안함))";
                         break;
 
                     case SETTING_ITEM_SUB_DEVICE_ESCAPE_LADDER_NOTI:

+ 4 - 0
ManagerSetting/src/main/java/com/artncore/managersetting/domain/Const.java

@@ -44,6 +44,10 @@ public class Const {
     public static final String CONTROLLER_SETTING_DO_USED = "사용함";
     public static final String CONTROLLER_SETTING_DO_NOT_USED = "사용안함";
 
+    public static final String CONTROLLER_SETTING_DANJI_1 = "1.0";
+    public static final String CONTROLLER_SETTING_DANJI_2 = "2.0";
+    public static final String CONTROLLER_SETTING_DANJI_Blended = "Blended";
+
     public static final int CONTROLLER_SETTING_DO_NOT_USED_INDEX = 0;
     public static final int CONTROLLER_SETTING_DO_USED_INDEX = 1;
 

+ 138 - 17
ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/SettingDetailFunctionFragment.java

@@ -688,19 +688,66 @@ public class SettingDetailFunctionFragment extends Fragment
         int type = DETAIL_TYPE_NEWSERVER;
         String typeName = mActivity.getString(R.string.detail_function_newserver);
 
-        SwitchButton switchButton = (SwitchButton)mRootView.findViewById(R.id.btn_switch_newserver);
-        switchButton.setSwitchButtonChangedListener(this, type, typeName);
+        //SwitchButton switchButton = (SwitchButton)mRootView.findViewById(R.id.btn_switch_newserver);
+        //switchButton.setSwitchButtonChangedListener(this, type, typeName);
+
+        Spinner spinner = (Spinner)mRootView.findViewById(R.id.btn_switch_newserver);
 
         List<String> listString = new ArrayList<String>();
-        listString.add(mActivity.getString(R.string.do_used));
-        listString.add(mActivity.getString(R.string.do_not_used));
+        //기존(사용, 사용안함)- >1.0, 2.0, 기축(MIX)
+        listString.add(mActivity.getString(R.string.danji_1));
+        listString.add(mActivity.getString(R.string.danji_2));
+        listString.add(mActivity.getString(R.string.danji_3));
 
-        switchButton.setText(listString);
+        ArrayAdapter arrayAdapter = new ArrayAdapter(mActivity
+                , android.R.layout.simple_spinner_item
+                , listString);
+
+        arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+        spinner.setAdapter(arrayAdapter);
+        spinner.setPrompt("select DanjiServer Type");
+
+        //switchButton.setText(listString);
 
         boolean initValue = mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_NEWSERVER);
         Log.d(TAG, "[SettingDetail] Use New Server: " + initValue);
-        switchButton.switchEnabled(initValue);
+        spinner.setEnabled(initValue);
+
+        SpinnerItemSelectedListener itemSelectedListener = new SpinnerItemSelectedListener(type, typeName);
+        spinner.setOnItemSelectedListener(itemSelectedListener);
+
+        int DanjiInitIdx = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+        List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_NEWSERVER);
+        if ((InfoList != null) && (InfoList.size() > 4)) {
+            if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+
+                if (Const.CONTROLLER_SETTING_TYPE.equals(InfoList.get(4)))
+                {
+                    if(InfoList.get(5).equals(Const.CONTROLLER_SETTING_DANJI_1))
+                    {
+                        DanjiInitIdx = 0;
+                    }
+                    else if(InfoList.get(5).equals(Const.CONTROLLER_SETTING_DANJI_2))
+                    {
+                        DanjiInitIdx = 1;
+                    }
+                    else if(InfoList.get(5).equals(Const.CONTROLLER_SETTING_DANJI_Blended))
+                    {
+                        DanjiInitIdx = 2;
+                    }
+                }
+            }
+        }
+        else if((InfoList != null) && (InfoList.size() ==  4)) {
+            if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+                DanjiInitIdx = 1;
+            }
+            else{
+                DanjiInitIdx = 0;
+            }
+        }
 
+        spinner.setSelection(DanjiInitIdx);
     }
 
     // init manual
@@ -2757,19 +2804,93 @@ public class SettingDetailFunctionFragment extends Fragment
                 break;
 
             case DETAIL_TYPE_NEWSERVER:
-                mMainDatabaseManager.updateSetUsedToSubDeviceSwitchButtonOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_NEWSERVER, position);
-                if( itemName.equalsIgnoreCase("사용안함"))
-                {
-                    WallpadStatusData DBcc = new WallpadStatusData(mActivity.getApplicationContext());
-                    DBcc.SetServerVer("1.0");
-                    DBcc.closeDB();
-                }
-                else
+                //단지서버 방식 변경
+//                mMainDatabaseManager.updateSetUsedToSubDeviceSwitchButtonOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_NEWSERVER, position);
+//                if( itemName.equalsIgnoreCase("1.0"))
+//                {
+//                    WallpadStatusData DBcc = new WallpadStatusData(mActivity.getApplicationContext());
+//                    DBcc.SetServerVer("1.0");
+//                    DBcc.closeDB();
+//                }
+//                else if( itemName.equalsIgnoreCase("2.0"))
+//                {
+//                    WallpadStatusData DBcc = new WallpadStatusData(mActivity.getApplicationContext());
+//                    DBcc.SetServerVer("2.0");
+//                    DBcc.closeDB();
+//                }
+//                else
+//                {
+//                    WallpadStatusData DBcc = new WallpadStatusData(mActivity.getApplicationContext());
+//                    DBcc.SetServerVer("Blended");
+//                    DBcc.closeDB();
+//                }
+
+                //신형단지 서버 유무
+                //"1(1:신형단지서버(사용함)종류(기축))";
+                final String serverName = mMainDatabaseManager.getSubDevID(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_NEWSERVER);
+                if (serverName != null)
                 {
-                    WallpadStatusData DBcc = new WallpadStatusData(mActivity.getApplicationContext());
-                    DBcc.SetServerVer("2.0");
-                    DBcc.closeDB();
+                    value = serverName;
+                    //Log.i(TAG, "value = " + value + " / position = " + position);
+
+                    if (position == 0) // 1.0
+                    {
+                        value += "("
+                                + Const.CONTROLLER_SETTING_DO_USED
+                                + ")"
+                                + Const.CONTROLLER_SETTING_TYPE
+                                + "("
+                                + Const.CONTROLLER_SETTING_DANJI_1
+                                + ")"
+                        ;
+                    }
+                    else if (position == 1) // 2.0
+                    {
+
+                        value += "("
+                                + Const.CONTROLLER_SETTING_DO_USED
+                                + ")"
+                                + Const.CONTROLLER_SETTING_TYPE
+                                + "("
+                                + Const.CONTROLLER_SETTING_DANJI_2
+                                + ")"
+                        ;
+                    }
+                    else //Blended
+                    {
+                        value += "("
+                                + Const.CONTROLLER_SETTING_DO_USED
+                                + ")"
+                                + Const.CONTROLLER_SETTING_TYPE
+                                + "("
+                                + Const.CONTROLLER_SETTING_DANJI_Blended
+                                + ")"
+                        ;
+                    }
+
+                    List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_NEWSERVER);
+                    if ((InfoList != null) && (InfoList.size() > 1))
+                    {
+                        String deviceNo = InfoList.get(0);
+                        String circuitNo = InfoList.get(1);
+
+                        value = deviceNo
+                                + "("
+
+                                + circuitNo
+                                + ":"
+
+                                + value
+                        ;
+                    }
+                    value += ")"
+                    ;
+
+                    mMainDatabaseManager.setSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_NEWSERVER, 0, value);
+
                 }
+
+
                 break;
 
             case DETAIL_TYPE_MANUAL:

+ 14 - 0
ManagerSetting/src/main/res/layout/setting_detail_container_gle.xml

@@ -1006,6 +1006,7 @@ android:background="#EFEFEE"
                     android:maxLines="1"
                     />
 
+                <!--
                 <com.artncore.managersetting.ui.SwitchButton
                     android:id="@+id/btn_switch_newserver"
                     android:layout_width="wrap_content"
@@ -1016,6 +1017,19 @@ android:background="#EFEFEE"
                     android:gravity="center"
 
                 />
+                -->
+                <Spinner
+                    android:id="@+id/btn_switch_newserver"
+                    android:layout_width="200dp"
+                    android:layout_height="80dp"
+                    android:layout_alignParentRight="true"
+                    android:layout_marginTop="10dp"
+                    android:layout_marginRight="10dp"
+
+                    android:layout_gravity="center"
+                    android:gravity="center"
+                    android:textSize="24sp"
+                    />
 
             </RelativeLayout>
             

+ 13 - 0
ManagerSetting/src/main/res/layout/setting_detail_container_sa.xml

@@ -1360,6 +1360,7 @@ android:background="#EFEFEE"
                     android:maxLines="1"
                     />
 
+                <!--
                 <com.artncore.managersetting.ui.SwitchButton
                     android:id="@+id/btn_switch_newserver"
                     android:layout_width="wrap_content"
@@ -1370,7 +1371,19 @@ android:background="#EFEFEE"
                     android:gravity="center"
 
                 />
+                -->
+                <Spinner
+                    android:id="@+id/btn_switch_newserver"
+                    android:layout_width="200dp"
+                    android:layout_height="80dp"
+                    android:layout_alignParentRight="true"
+                    android:layout_marginTop="10dp"
+                    android:layout_marginRight="10dp"
 
+                    android:layout_gravity="center"
+                    android:gravity="center"
+                    android:textSize="24sp"
+                    />
             </RelativeLayout>
             
             <ImageView

+ 5 - 0
ManagerSetting/src/main/res/values/strings.xml

@@ -36,6 +36,11 @@
     
     <string name="do_not_used">사용안함</string>
     <string name="do_used">사용</string>
+
+    <string name="danji_1">1.0</string>
+    <string name="danji_2">2.0</string>
+    <string name="danji_3">기축</string>
+
     
     <string name="reset">사용자 초기화</string>
     <string name="webctr_reset">웹제어 초기화</string>

二进制
WallPadAPI/jar/WallPadAPI.jar


+ 4638 - 4587
WallPadAPI/src/main/java/com/artncore/WallPadDataMgr/WallpadDeviceSet.java

@@ -1,4587 +1,4638 @@
-package com.artncore.WallPadDataMgr;
-
-import android.content.ContentValues;
-import android.content.Context;
-import android.database.Cursor;
-import android.util.Log;
-
-import com.artncore.commons.define;
-import com.util.LogUtil;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.regex.Pattern;
-
-import kr.co.icontrols.wallpadsupport.Version;
-
-
-public class WallpadDeviceSet extends wallpaddbmgr {
-
-	private final String TAG = "WallpadDeviceSet";
-
-	public WallpadDeviceSet(Context ctx) {
-		super(ctx);
-		if (!CheckTableExist(SettingTBL)) {
-			try {
-				if(wdb!=null)  wdb.execSQL(CreateSetSettingDB);
-			} catch (RuntimeException re) {
-				LogUtil.errorLogInfo("", TAG, re);
-			} catch (Exception e) {
-				//e.printStackTrace();
-				LogUtil.errorLogInfo("", TAG, e);
-			}
-		}
-
-		if (!CheckTableExist(SubDeviceTBL)) {
-			try {
-				if(wdb!=null) wdb.execSQL(CreateSubDeviceDB);
-				initSubDeviceTBL();
-			} catch (RuntimeException re) {
-				LogUtil.errorLogInfo("", TAG, re);
-			} catch (Exception e) {
-				//e.printStackTrace();
-				LogUtil.errorLogInfo("", TAG, e);
-			}
-		}
-	}
-
-	/* - ANC 이전 자료 - */
-	public static final String DEV_ID_THERMO     = "thermostat";
-	public static final String DEV_ID_LIGHT      = "light";
-	public static final String DEV_ID_GAS        = "gas";
-	public static final String DEV_ID_BATCHLIGHT = "batchlight";
-	public static final String DEV_ID_CURTAIN    = "curtain";
-	public static final String DEV_ID_VENTIL     = "ventil";
-	public static final String DEV_ID_DOORLOCK   = "doorlock";
-	public static final String DEV_ID_AIRCON     = "aircon";
-	public static final String DEV_ID_REMOTEMETER= "RemoteMeter";
-	public static final String DEV_ID_RFDOORCAM  = "RfDoorCam";
-	public static final String DEV_ID_REMOTECON  = "Remotecon";
-	public static final String DEV_ID_SUBPHONE   = "subphone";
-	public static final String DEV_ID_SMARTSW    = "SmartSwitch";
-
-	public static final String DEV_ENABLE  = "enable";
-	public static final String DEV_DISABLE = "disable";
-
-	//       id text unique, name  text, devcnt text, cnt text, loc text, enable text, lononoff text
-	private static String[][] SubDevInitData = null;
-
-	private static void Init_SubDevInitData()
-	{
-		String[][] temp_SubDevInitData = new String[][] {
-			{DEV_ID_THERMO,      "온도조절기",  "1", "0", "각방",    DEV_ENABLE,   DEV_ENABLE},
-			{DEV_ID_LIGHT,       "조명제어기",  "1", "0", "거실",   DEV_ENABLE,   DEV_ENABLE},
-			{DEV_ID_GAS,         "가스밸브",   "1", "0", "주방",    DEV_ENABLE,   DEV_ENABLE},
-			{DEV_ID_BATCHLIGHT,  "일괄소등",   "1", "0", "none",   DEV_ENABLE,   DEV_ENABLE},
-			{DEV_ID_CURTAIN,     "전동커튼",   "1", "0",  "none",   DEV_DISABLE,  DEV_ENABLE},
-			{DEV_ID_VENTIL,      "환기시스템",  "1", "0",  "none",   DEV_ENABLE,   DEV_ENABLE},
-			{DEV_ID_DOORLOCK,    "디지털도어락","1", "0",  "none",   DEV_DISABLE,  DEV_ENABLE},
-			{DEV_ID_AIRCON,      "시스템에어컨","1", "0",  "none",   DEV_DISABLE,  DEV_ENABLE},
-			{DEV_ID_REMOTEMETER, "원격검침",   "1", "0",  "none",   DEV_DISABLE,  DEV_ENABLE},
-			{DEV_ID_RFDOORCAM,   "RF도어캠",  "1", "0",  "none",   DEV_DISABLE,  DEV_ENABLE},
-			{DEV_ID_REMOTECON,   "리모콘",    "1", "0",  "none",   DEV_DISABLE,  DEV_ENABLE},
-			{DEV_ID_SUBPHONE,    "서브폰",    "1", "0",  "none",   DEV_ENABLE,  DEV_ENABLE},
-			{DEV_ID_SMARTSW,     "스마트스위치", "1", "0",  "none",   DEV_DISABLE,  DEV_ENABLE}
-		};
-
-		SubDevInitData = new String[temp_SubDevInitData.length][temp_SubDevInitData[0].length];
-		for(int i=0; i<temp_SubDevInitData.length; i++) {
-			for(int j=0; j<temp_SubDevInitData[i].length; j++) {
-				SubDevInitData[i][j] = temp_SubDevInitData[i][j];
-			}
-		}
-	}
-
-
-	/* - ANC 이전 자료 - */
-
-	public static final int DO_NOT_USE = 0;
-	public static final int DO_USE = 1;
-
-
-	public static final int LIGHT_TYPE_LIVING = 11;
-	public static final int LIGHT_TYPE_ROOM   = 12;
-	public static final int LIGHT_TYPE_HDC_INTLIGHT_NORMAL         = 15;
-	public static final int LIGHT_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT = 16;
-	public static final int LIGHT_TYPE_ZEROENERGY_ENERGYMETER = 17;
-	public static final int LIGHT_TYPE_SMART_DISTRIBUTION = 18;
-	public static final int LIGHT_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT_MULTISWITCH = 19;
-	public static final String LIGHT_CONTROLLER_TYPE_LIVING_ROOM = "대외기본형";
-	public static final String LIGHT_CONTROLLER_TYPE_ROOMS = "대외각실형";
-	public static final String LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_NORMAL = "현산향일체형조명기본형";
-	public static final String LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT = "현산향일체형조명일괄소등병합형";
-	public static final String LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT_MULTISWITCH = "현산향일체형조명일괄소등병합형_멀티스위치";
-	public static final String LIGHT_CONTROLLER_TYPE_SMART_DISTRIBUTION = "스마트분전반조명";
-
-	public int mModelType = Version.getModelType();
-
-	public int[] Get_Light_info() {
-		String[] GetData = GetSettingData("조명제어기");
-		int[] returnData = {1,LIGHT_TYPE_LIVING, 6};
-		if (mModelType == Version.MODEL_TYPE.IHN_1020GL) {
-			returnData[1] = LIGHT_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT;
-			returnData[2] = 5;
-		}
-
-		try {
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) {
-				returnData[0] = 1;
-			}
-			else {
-				returnData[0] =0;
-				return returnData;
-			}
-
-			if (mModelType == Version.MODEL_TYPE.IHN_1020GL) {
-				if (GetData[1].indexOf("현산향일체형조명기본형") > 0) returnData[1] = LIGHT_TYPE_HDC_INTLIGHT_NORMAL;
-				else if(GetData[1].indexOf("스마트분전반조명") > 0)  returnData[1] = LIGHT_TYPE_SMART_DISTRIBUTION;
-				else returnData[1] = LIGHT_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT;
-			}
-			else if (mModelType == Version.MODEL_TYPE.IHN_D101 || mModelType == Version.MODEL_TYPE.IHN_D101_I
-					|| mModelType == Version.MODEL_TYPE.IHN_D101K || mModelType == Version.MODEL_TYPE.IHN_D101K_I
-					|| mModelType == Version.MODEL_TYPE.IHN_1010GL || mModelType == Version.MODEL_TYPE.IHN_1010GL_I)
-			{
-				if (GetData[1].indexOf("현산향일체형조명기본형") > 0) returnData[1] = LIGHT_TYPE_HDC_INTLIGHT_NORMAL;
-				else if (GetData[1].indexOf("현산향일체형조명일괄소등병합형_멀티스위치") > 0) returnData[1] = LIGHT_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT_MULTISWITCH;
-				else if (GetData[1].indexOf("현산향일체형조명일괄소등병합형") > 0) returnData[1] = LIGHT_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT;
-				else if (GetData[1].indexOf("대외각실형") > 0) returnData[1] = LIGHT_TYPE_ROOM;
-				else if (GetData[1].indexOf("대외기본형") > 0) returnData[1] = LIGHT_TYPE_LIVING;
-				//else returnData[1] = LIGHT_TYPE_LIVING;
-			}
-			else {
-				if (GetData[1].indexOf("대외각실형") > 0) returnData[1] = LIGHT_TYPE_ROOM;
-				else returnData[1] = LIGHT_TYPE_LIVING;
-			}
-			String GetCount = (GetData[1].split("[(]")[1]).split("[:]")[0];
-			GetCount = GetCount.trim();
-
-			returnData[2] = Integer.parseInt(GetCount);
-			return returnData;
-		} catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			return  returnData;
-        } catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			//returnData = new int[]{1,LIGHT_TYPE_LIVING, 6};
-			return  returnData;
-		}
-	}
-
-	/**
-	 * 조명제어기 설정 함수
-	 * @param nValue 조명제어기 종류 (현산향일체형조명기본형 , 스마트분전반조명, 현산향일체형조명일괄소등병합형, 현산향일체형조명일괄소등병합형_멀티스위치, 대외각실형, 대외기본형)
-	 * @return true: 성공, false: 실패
-	 */
-	public boolean Set_LightingControllerType(int nValue) {
-		try {
-			Log.i(TAG, "[Set_LightingControllerType] nValue: " + nValue);
-			String strLightingControllerType = BLE_SMARTKEY_TYPE_NONUSE;
-			String strSettingValue = "1(1:" + define.DEVICE_ID_BLE_SMARTKEY + "(" + define.DEVICE_DISABLE + ")";
-
-			if (nValue == DO_NOT_USE) {
-				strLightingControllerType = define.DEVICE_DISABLE;
-			}
-			else if (nValue == LIGHT_TYPE_LIVING) {
-				strLightingControllerType = LIGHT_CONTROLLER_TYPE_LIVING_ROOM;
-			}
-			else if (nValue == LIGHT_TYPE_ROOM) {
-				strLightingControllerType = LIGHT_CONTROLLER_TYPE_ROOMS;
-			}
-			else if (nValue == LIGHT_TYPE_HDC_INTLIGHT_NORMAL) {
-				strLightingControllerType = LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_NORMAL;
-			}
-			else if (nValue == LIGHT_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT) {
-				strLightingControllerType = LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT;
-			}
-			else if (nValue == LIGHT_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT_MULTISWITCH) {
-				strLightingControllerType = LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT_MULTISWITCH;
-			}
-			else if (nValue == LIGHT_TYPE_SMART_DISTRIBUTION) {
-				strLightingControllerType = LIGHT_CONTROLLER_TYPE_SMART_DISTRIBUTION;
-			}
-			else {
-				Log.w(TAG, "[Set_LightingControllerType] Unsupported LightingController tyep: " + nValue);
-				return false;
-			}
-
-			if (strLightingControllerType.equalsIgnoreCase(define.DEVICE_DISABLE)) {
-				strSettingValue = "1(1:" + define.DEVICE_ID_LIGHT + "(" + define.DEVICE_DISABLE + ")";
-			}
-			else {
-				if (Version.getModelType() == Version.MODEL_TYPE.IHN_1010GL || Version.getModelType() == Version.MODEL_TYPE.IHN_1010GL_I)
-					strSettingValue = "1(3:" + define.DEVICE_ID_LIGHT + "(" + define.DEVICE_ENABLE + ")종류(" + strLightingControllerType + ")";
-				else strSettingValue = "1(1:" + define.DEVICE_ID_LIGHT + "(" + define.DEVICE_ENABLE + ")종류(" + strLightingControllerType + ")";
-			}
-
-
-			Log.i(TAG, "[Set_LightingControllerType] strSettingValue: " + strSettingValue);
-
-			UpdateSettingData("subdev_list", define.DEVICE_ID_LIGHT, 0, strSettingValue);
-
-			return true;
-		} catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			return false;
-        } catch (Exception e) {
-			Log.e(TAG, "[Exception] Set_LightingControllerType(int nValue)");
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			return false;
-		}
-	}
-
-
-
-	public static final int BATCH_TYPE_GENERAL       = 21; //대외향일괄소등제어기 + 3로조명확장스위치 (id 검색하여 해당 드라이버 로딩)
-	public static final int BATCH_TYPE_SMART         = 22; //대외향스마트스위치 - iSS-201
-	public static final int BATCH_TYPE_HDC_OLD_SMART = 25; //현산향스마트스위치 - iSS-101
-	public static final int BATCH_TYPE_HDC_LCD_SMART = 26; //현산향스마트스위치 - iSS-430
-
-	/**
-	 * @description
-	 * 일괄소등스위치 or 스마트스위치 설정정보 가져오기
-	 * @return int[0] - 0: 사용안함, 1:사용함<br>
-	 * int[1] - 제품 종류<br>
-	 * BATCH_TYPE_GENERAL:        대외향일괄소등제어기 <br>
-	 * BATCH_TYPE_SMART:          대외향스마트스위치(iSS-201)<br>
-	 * BATCH_TYPE_HDC_OLD_SMART:  현산향스마트스위치(iSS-101)<br>
-	 *  BATCH_TYPE_HDC_LCD_SMART: 현산향스마트스위치(iSS-430)<br>
-	 * int[2] - L1설정 <br>
-	 * int[3] - L2설정
-	 */
-	public int[] Get_BatchSW_Info() {
-		String[] GetData = GetSettingData("스마트스위치&일괄소등");
-
-		int[] returnData = {1, BATCH_TYPE_SMART, 3, 4};
-
-		if (mModelType == Version.MODEL_TYPE.IHN_D101 || mModelType == Version.MODEL_TYPE.IHN_D101_I
-				|| mModelType == Version.MODEL_TYPE.IHN_D101K || mModelType == Version.MODEL_TYPE.IHN_D101K_I
-				|| mModelType == Version.MODEL_TYPE.IHN_1010GL || mModelType == Version.MODEL_TYPE.IHN_1010GL_I
-				|| mModelType == Version.MODEL_TYPE.IHN_1020GL)
-		{
-			returnData[0] = 1;
-			returnData[1] = BATCH_TYPE_HDC_LCD_SMART;
-			returnData[2] = 3;
-			returnData[3] = 4;
-		}
-		else {
-			returnData[0] = 1;
-			returnData[1] = BATCH_TYPE_SMART;
-			returnData[2] = 3;
-			returnData[3] = 4;
-		}
-
-		try {
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) {
-				returnData[0] = 1;
-			}
-			else {
-				returnData[0] = 0;
-				return returnData;
-			}
-
-			if (mModelType == Version.MODEL_TYPE.IHN_D101 || mModelType == Version.MODEL_TYPE.IHN_D101_I
-					|| mModelType == Version.MODEL_TYPE.IHN_D101K || mModelType == Version.MODEL_TYPE.IHN_D101K_I
-					|| mModelType == Version.MODEL_TYPE.IHN_1010GL || mModelType == Version.MODEL_TYPE.IHN_1010GL_I
-					|| mModelType == Version.MODEL_TYPE.IHN_1020GL)
-			{
-				if (GetData[1].indexOf("현산향스마트스위치") > 0) returnData[1] = BATCH_TYPE_HDC_OLD_SMART;
-				else if (GetData[1].indexOf("현산향LCD스마트스위치") > 0) returnData[1] = BATCH_TYPE_HDC_LCD_SMART;
-				else {
-					returnData[0] = 0;
-					return returnData;
-				}
-			}
-			else {
-				if (GetData[1].indexOf("대외향스마트스위치") > 0) returnData[1] = BATCH_TYPE_SMART;
-				else if (GetData[1].indexOf("대외향일괄소등제어기") > 0) returnData[1] = BATCH_TYPE_GENERAL;
-				else if (GetData[1].indexOf("현산향스마트스위치") > 0) returnData[1] = BATCH_TYPE_HDC_OLD_SMART;
-				else {
-					returnData[0] = 0;
-					return returnData;
-				}
-			}
-
-			String L1 = (GetData[1].split("L1설정")[1]).split("L2설정")[0];
-			L1 = L1.replace("("," ");
-			L1 = L1.replace(")"," ");
-			L1 = L1.trim();
-			String L2 = (GetData[1].split("L1설정")[1]).split("L2설정")[1];
-			L2 = L2.replace("("," ");
-			L2 = L2.replace(")"," ");
-			L2 = L2.trim();
-
-
-			returnData[2] = Integer.parseInt(L1);
-			returnData[3] = Integer.parseInt(L2);
-			return returnData;
-		} catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = new int[]{0,BATCH_TYPE_SMART, 1,2};
-			return  returnData;
-        } catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = new int[]{0,BATCH_TYPE_SMART, 1,2};
-			return  returnData;
-		}
-	}
-
-	public static final int DOORLOCK_TYPE_NORMAL = 31;
-	public static final int DOORLOCK_TYPE_RF     = 32;
-	public static final int DOORLOCK_TYPE_FINGERPRINT = 33;
-	public int[] Get_DoorLock_Info()
-	{
-		String[] GetData = GetSettingData("디지털도어락");
-
-		int[] returnData = {1,DOORLOCK_TYPE_RF};
-		try
-		{
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData[0] = 1;
-			else
-			{
-				returnData[0] = 0;
-				return returnData;
-			}
-			if (GetData[1].indexOf("유선") > 0) returnData[1] = DOORLOCK_TYPE_NORMAL;
-			else if (GetData[1].indexOf("무선") >0) returnData[1] = DOORLOCK_TYPE_RF;
-			else if (GetData[1].indexOf("지문인식") >0) returnData[1] = DOORLOCK_TYPE_FINGERPRINT;
-			else
-			{
-				returnData[0] = 1;
-				returnData[1] = DOORLOCK_TYPE_RF;
-				return returnData;
-			}
-
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = new int[] {1,DOORLOCK_TYPE_RF};
-			return  returnData;
-        } catch (Exception e)
-		{
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = new int[] {1,DOORLOCK_TYPE_RF};
-			return  returnData;
-		}
-	}
-
-	public int Get_Temper_Info()
-	{
-		String[] GetData = GetSettingData("온도조절기");
-
-		int returnData = 1;
-		try
-		{
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = 1;
-			else
-			{
-				returnData = 0;
-				return returnData;
-			}
-
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = 0;
-			return  returnData;
-        } catch (Exception e)
-		{
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = 0;
-			return  returnData;
-		}
-	}
-
-	/**
-	 * [광주 무등산 임대세대 전용 기능]<br>
-	 * 임대세대는 에너지미터가 3개인데 벨브가 2개인 현장임<br>
-	 * 문제점:난방 제어화면에서 방이 3개로 나옴<br>
-	 * 해결:방개수 3개로 알려주면 강제로 2개로 설정함<br>
-	 * 필요사항:단지서버에서 '난방방개수고정' 기능 사용함 + 회로수를 2개로 설정하면 됨<br>
-	 *
-	 * param none
-	 * @return [(int) 난방 방 개수 고정기능 사용여부 (1:사용함 , 0:사용하지 않음),<br>  (int) 방 개수 회로수]
-	 */
-	public int[] Get_Temper_FixRoomNumber()
-	{
-		String[] GetData = GetSettingData("난방방개수고정");
-
-		int returnData[] = {0, 0};
-		try
-		{
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0)
-			{
-				returnData[0] = 1;
-				String GetCount = (GetData[1].split("[(]")[1]).split("[:]")[0];
-				GetCount = GetCount.trim();
-
-				returnData[1]  = Integer.parseInt(GetCount);
-			}
-			else
-			{
-				returnData[0] = 0;
-				return returnData;
-			}
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData[0] = 0;
-			return  returnData;
-        } catch (Exception e)
-		{
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData[0] = 0;
-			return  returnData;
-		}
-	}
-	public static final int VENTIL_TYPE_NORMAL = 31;
-	public static final int VENTIL_TYPE_LH     = 32;
-	public static final int VENTIL_TYPE_HOOD   = 33;
-	public int[] Get_Ventil_Info()
-	{
-		String[] GetData = GetSettingData("환기시스템");
-
-		int returnData[] = {1,VENTIL_TYPE_NORMAL};
-		try
-		{
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData[0] = 1;
-			else
-			{
-				returnData[0] = 0;
-				return returnData;
-			}
-
-			if (GetData[1].indexOf("기본") > 0) returnData[1] = VENTIL_TYPE_NORMAL;
-			else if (GetData[1].indexOf("LH향") >0) returnData[1] = VENTIL_TYPE_LH;
-			else if (GetData[1].indexOf("후드") >0) returnData[1] = VENTIL_TYPE_HOOD;
-			else
-			{
-				returnData[0] = 1;
-				returnData[1] = VENTIL_TYPE_NORMAL;
-				return returnData;
-			}
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData[0] = 0;
-			returnData[1] = VENTIL_TYPE_NORMAL;
-			return  returnData;
-        } catch (Exception e)
-		{
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData[0] = 0;
-			returnData[1] = VENTIL_TYPE_NORMAL;
-			return  returnData;
-		}
-	}
-
-	public static final int SYSTEMAIRCON_NONE = 131; // 사용안함
-	public static final int SYSTEMAIRCON_SAMSUNG_AIR = 132; // 삼성냉방
-	public static final int SYSTEMAIRCON_SAMSUNG_AIR_HEAT = 133; // 삼성냉난방
-	public static final int SYSTEMAIRCON_LG_AIR = 134; // LG냉방
-	public static final int SYSTEMAIRCON_LG_AIR_HEAT = 135; // LG냉난방
-	public static final int SYSTEMAIRCON_ETC = 136; // 기타APU
-
-	public static final String SYSTEM_AIRCON_SAMSUNG_AIR = "삼성냉방";
-	public static final String SYSTEM_AIRCON_SAMSUNG_AIR_HEAT = "삼성냉난방";
-	public static final String SYSTEM_AIRCON_LG_AIR = "LG냉방";
-	public static final String SYSTEM_AIRCON_LG_AIR_HEAT = "LG냉난방";
-	public static final String SYSTEM_AIRCON_ETC = "기타APU";
-
-	public int Get_AirCON_Info()
-	{
-		String[] GetData = GetSettingData("시스템에어컨");
-
-		try
-		{
-			if (GetData == null) return SYSTEMAIRCON_NONE;
-
-			if (GetData[1].indexOf("사용함") > 0)
-			{
-				if (GetData[1].indexOf(SYSTEM_AIRCON_SAMSUNG_AIR) > 0)
-					return SYSTEMAIRCON_SAMSUNG_AIR;
-				else if (GetData[1].indexOf(SYSTEM_AIRCON_SAMSUNG_AIR_HEAT) > 0)
-					return SYSTEMAIRCON_SAMSUNG_AIR_HEAT;
-				if (GetData[1].indexOf(SYSTEM_AIRCON_LG_AIR) > 0)
-					return SYSTEMAIRCON_LG_AIR;
-				else if (GetData[1].indexOf(SYSTEM_AIRCON_LG_AIR_HEAT) > 0)
-					return SYSTEMAIRCON_LG_AIR_HEAT;
-				else if (GetData[1].indexOf(SYSTEM_AIRCON_ETC) > 0)
-					return SYSTEMAIRCON_ETC;
-				else
-					Log.w(TAG, "[Get_AirCON_Info] 시스템에어컨 종류 미정의");
-			}
-			else
-			{
-				return SYSTEMAIRCON_NONE;
-			}
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			return SYSTEMAIRCON_NONE;
-        } catch (Exception e)
-		{
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			return SYSTEMAIRCON_NONE;
-		}
-		return SYSTEMAIRCON_NONE;
-	}
-
-	public int Get_Purity_Info()
-	{
-		String[] GetData = GetSettingData("청정환기");
-
-		int returnData = 0;
-		try
-		{
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = 1;
-			else
-			{
-				returnData = 0;
-				return returnData;
-			}
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = 0;
-			return  returnData;
-        } catch (Exception e)
-		{
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = 0;
-			return  returnData;
-		}
-	}
-
-	public int Get_Louver_Info()
-	{
-		String[] GetData = GetSettingData("전동루버");
-
-		int returnData = 0;
-		try
-		{
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = 1;
-			else
-			{
-				returnData = 0;
-				return returnData;
-			}
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = 0;
-			return  returnData;
-        } catch (Exception e)
-		{
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = 0;
-			return  returnData;
-		}
-	}
-
-	public int Get_Biometics_Info()
-	{
-		String[] GetData = GetSettingData("생체인식");
-
-		int returnData = 0;
-		try
-		{
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = 1;
-			else
-			{
-				returnData = 0;
-				return returnData;
-			}
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = 0;
-			return  returnData;
-        } catch (Exception e)
-		{
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = 0;
-			return  returnData;
-		}
-	}
-
-	public static final int ELEVATOR_NONE      = 51;
-	public static final int ELEVATOR_SIMPLE    = 52;
-	public static final int ELEVATOR_FLOOR     = 53;
-
-	public int Get_Elevator_Info()
-	{
-		String[] GetData = GetSettingData("엘리베이터");
-
-
-		try
-		{
-			if (GetData == null) return ELEVATOR_FLOOR;
-
-			if (GetData[1].indexOf("사용함") > 0)
-			{
-				if (GetData[1].indexOf("층표시") > 0)
-					return ELEVATOR_FLOOR;
-				else if (GetData[1].indexOf("기본") > 0)
-					return ELEVATOR_SIMPLE;
-				else
-					return ELEVATOR_FLOOR;
-			}
-			else
-			{
-				return ELEVATOR_NONE;
-			}
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			return  ELEVATOR_FLOOR;
-        } catch (Exception e)
-		{
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			return  ELEVATOR_FLOOR;
-		}
-	}
-
-	public int Get_RemoteCon_Info()
-	{
-		String[] GetData = GetSettingData("무선리모컨");
-
-		int returnData = 0;
-		try
-		{
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = 1;
-			else
-			{
-				returnData = 0;
-				return returnData;
-			}
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = 0;
-			return  returnData;
-        } catch (Exception e)
-		{
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = 0;
-			return  returnData;
-		}
-	}
-
-	public static final String MAIN_GUI_TYPE_DEFAULT = "기본";
-	public static final String MAIN_GUI_TYPE_METRO = "메트로";
-	public static final String MAIN_GUI_TYPE_HYOSUNG = "효성";
-	public static final String MAIN_GUI_TYPE_HIMCHAN = "힘찬";
-
-	public String GetMainGUISelect()
-	{
-		String retStr = "";
-		try
-		{
-			String[] GetData = GetSettingData(define.DEVICE_ID_MAIN_GUI_SELECT);
-
-			if (GetData[1].indexOf(MAIN_GUI_TYPE_DEFAULT) > 0)
-			{
-				retStr = "기본";
-			}
-			else if (GetData[1].indexOf(MAIN_GUI_TYPE_METRO) > 0)
-			{
-				retStr = "메트로";
-			}
-			else if (GetData[1].indexOf(MAIN_GUI_TYPE_HYOSUNG) > 0)
-			{
-				retStr = "효성";
-			}
-			else if (GetData[1].indexOf(MAIN_GUI_TYPE_HIMCHAN) > 0)
-			{
-				retStr = "힘찬";
-			}
-			else // 값이 일치하지 않는 경우, 기본으로 리턴
-			{
-				retStr = "기본";
-			}
-
-			return retStr;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			return "기본";
-        }
-		catch (Exception e ) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			Log.w(TAG, "[GetMainGUISelect] Exception - Default");
-			return "기본";
-		}
-	}
-
-	public static final int DOORTYPE_NONE    = 50;
-	public static final int DOORTYPE_BASIC    = 51;
-	public static final int DOORTYPE_RFCAM    = 52;
-	public static final int DOORTYPE_SMARTKEY = 53;
-	public static final int DOORTYPE_UKS      = 54;
-	public static final int DOORTYPE_ETC      = 55;
-	public static final int DOORTYPE_IOT_SMART = 56;
-	public static final int DOORTYPE_HYOSUNG_SMART = 57;
-	public static final int DOORTYPE_DAEWOO_SMART = 58;
-	public static final int DOORTYPE_SMARTKEY_EXTERNAL = 59;
-
-	public static final String DOOR_CAMERA_TYPE_DEFAULT = "기본";
-	public static final String DOOR_CAMERA_TYPE_RF_DOOR_CAMERA = "RF현관카메라";
-	public static final String DOOR_CAMERA_TYPE_SMART_KEY = "스마트키";
-	public static final String DOOR_CAMERA_TYPE_UKS = "UKS";
-	public static final String DOOR_CAMERA_TYPE_ETC = "ETC";
-	public static final String DOOR_CAMERA_TYPE_IOT_SMART = "스마트IOT현관카메라";
-	public static final String DOOR_CAMERA_TYPE_HYOSUNG_SMART = "스마트현관카메라-효성";
-	public static final String DOOR_CAMERA_TYPE_DAEWOO_SMART = "스마트현관카메라-대우";
-	public static final String DOOR_CAMERA_TYPE_SMART_KEY_EXTERNAL = "대외스마트키현관카메라";
-
-	/**
-	 * 현관카메라 종류 가져오는 함수
-	 *
-	 * param none
-	 * @return [(int) 현관카메라 사용여부 (1:사용함 , 0:사용하지 않음),<br>  (int)카메라 종류 (0:기본 , 1:RF현관카메라, 2:스마트키, 3:UKS, 4:ETC)]
-	 */
-	public int[] Get_RFDoorCAM_Info()
-	{
-		String[] GetData = GetSettingData("현관카메라");
-
-		int returnData[] = {1,DOORTYPE_BASIC};
-		try
-		{
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData[0] = 1;
-			else
-			{
-				returnData[0] = 0;
-				return returnData;
-			}
-
-			if (GetData[1].indexOf("기본") > 0) returnData[1] = DOORTYPE_BASIC;
-			else if (GetData[1].indexOf("RF현관카메라") >0) returnData[1] = DOORTYPE_RFCAM;
-			else if (GetData[1].indexOf("대외스마트키") >0) returnData[1] = DOORTYPE_SMARTKEY_EXTERNAL;
-			else if (GetData[1].indexOf("스마트키") >0) returnData[1] = DOORTYPE_SMARTKEY;
-			else if (GetData[1].indexOf("UKS") >0) returnData[1] = DOORTYPE_UKS;
-			else if (GetData[1].indexOf("ETC") >0) returnData[1] = DOORTYPE_ETC;
-			else if (GetData[1].indexOf("스마트IOT현관카메라") >0) returnData[1] = DOORTYPE_IOT_SMART;
-			else if (GetData[1].indexOf("스마트현관카메라-효성") >0) returnData[1] = DOORTYPE_HYOSUNG_SMART;
-			else if (GetData[1].indexOf("스마트현관카메라-대우") >0) returnData[1] = DOORTYPE_DAEWOO_SMART;
-			else
-			{
-				returnData[0] = 1;
-				returnData[1] = DOORTYPE_BASIC;
-				return returnData;
-			}
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData[0] = 1;
-			returnData[1] = DOORTYPE_BASIC;
-			return  returnData;
-        } catch (Exception e)
-		{
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData[0] = 1;
-			returnData[1] = DOORTYPE_BASIC;
-			return  returnData;
-		}
-	}
-
-	/**
-	 * 현관카메라 설정 함수
-	 * @param nValue 현관카메라 종류 (기본, RF, 스마트키, UKS, ETC, 스마트IoT현관카메라, 스마트현관카메라(효성), 스마트현관카메라(대우)
-	 * @return true: 성공, false: 실패
-	 */
-	public boolean Set_DoorCameraType(int nValue) {
-		try {
-			Log.i(TAG, "[Set_DoorCameraType] nValue: " + nValue);
-			String strCameraType = DOOR_CAMERA_TYPE_DEFAULT;
-			String strSettingValue = "1(1:" + define.DEVICE_ID_DOORCAM + "(" + define.DEVICE_ENABLE + ")종류(" + strCameraType + ")";
-
-			if (nValue == DOORTYPE_NONE) {
-				strCameraType = define.DEVICE_DISABLE;
-			}
-			else if (nValue == DOORTYPE_BASIC) {
-				strCameraType = DOOR_CAMERA_TYPE_DEFAULT;
-			}
-			else if (nValue == DOORTYPE_RFCAM) {
-				strCameraType = DOOR_CAMERA_TYPE_RF_DOOR_CAMERA;
-			}
-			else if (nValue == DOORTYPE_SMARTKEY) {
-				strCameraType = DOOR_CAMERA_TYPE_SMART_KEY;
-			}
-			else if (nValue == DOORTYPE_SMARTKEY_EXTERNAL) {
-				strCameraType = DOOR_CAMERA_TYPE_SMART_KEY_EXTERNAL;
-			}
-			else if (nValue == DOORTYPE_UKS) {
-				strCameraType = DOOR_CAMERA_TYPE_UKS;
-			}
-			else if (nValue == DOORTYPE_ETC) {
-				strCameraType = DOOR_CAMERA_TYPE_ETC;
-			}
-			else if (nValue == DOORTYPE_IOT_SMART) {
-				strCameraType = DOOR_CAMERA_TYPE_IOT_SMART;
-			}
-			else if (nValue == DOORTYPE_HYOSUNG_SMART) {
-				strCameraType = DOOR_CAMERA_TYPE_HYOSUNG_SMART;
-			}
-			else if (nValue == DOORTYPE_DAEWOO_SMART) {
-				strCameraType = DOOR_CAMERA_TYPE_DAEWOO_SMART;
-			}
-			else {
-				Log.w(TAG, "[Set_DoorCameraType] Unsupported door camera tyep: " + nValue);
-				return false;
-			}
-
-			if (strCameraType.equalsIgnoreCase(define.DEVICE_DISABLE)) {
-				strSettingValue = "1(1:" + define.DEVICE_ID_DOORCAM + "(" + define.DEVICE_DISABLE + ")";
-			}
-			else {
-				strSettingValue = "1(1:" + define.DEVICE_ID_DOORCAM + "(" + define.DEVICE_ENABLE + ")종류(" + strCameraType + ")";
-			}
-
-			Log.i(TAG, "[Set_DoorCameraType] strSettingValue: " + strSettingValue);
-
-			UpdateSettingData("subdev_list", define.DEVICE_ID_DOORCAM, 0, strSettingValue);
-
-			return true;
-		} catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			return false;
-        } catch (Exception e) {
-			Log.e(TAG, "[Exception] Set_DoorCamera(int nValue)");
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			return false;
-		}
-	}
-
-	public static final int CURTAIN_TYPE_ROOM   = 41;
-	public static final int CURTAIN_TYPE_LIVING = 42;
-	public static final int CURTAIN_TYPE_ALL    = 43;
-
-	public int[] Get_CURTAIN_Info()
-	{
-		String[] GetData = GetSettingData("전동커튼");
-
-		int returnData[] = {0,CURTAIN_TYPE_ROOM};
-		try
-		{
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData[0] = 1;
-			else
-			{
-				returnData[0] = 0;
-				return returnData;
-			}
-
-			if (GetData[1].indexOf("안방커튼") > 0) returnData[1] = CURTAIN_TYPE_ROOM;
-			else if (GetData[1].indexOf("거실커튼") >0) returnData[1] = CURTAIN_TYPE_LIVING;
-			else if (GetData[1].indexOf("안방거실커튼") >0) returnData[1] = CURTAIN_TYPE_ALL;
-			else
-			{
-				returnData[0] = 0;
-				returnData[1] = CURTAIN_TYPE_ROOM;
-				return returnData;
-			}
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData[0] = 0;
-			returnData[1] = CURTAIN_TYPE_ROOM;
-			return  returnData;
-        } catch (Exception e)
-		{
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData[0] = 0;
-			returnData[1] = CURTAIN_TYPE_ROOM;
-			return  returnData;
-		}
-	}
-	public int[] Get_RealTimeMetor_Info()
-	{
-		String[] GetData = GetSettingData("실시간검침기");
-
-		int returnData[] = {0, 0};
-		try
-		{
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0)
-			{
-				returnData[0] = 1;
-				String GetCount = (GetData[1].split("[(]")[1]).split("[:]")[0];
-				GetCount = GetCount.trim();
-
-				returnData[1]  = Integer.parseInt(GetCount);
-			}
-			else
-			{
-				returnData[0] = 0;
-				return returnData;
-			}
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData[0] = 0;
-			return  returnData;
-        } catch (Exception e)
-		{
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData[0] = 0;
-			return  returnData;
-		}
-	}
-
-	/**
-	 * 에너지제품군 사용여부
-	 *
-	 * param none
-	 * @return (int) 에너지제품군 사용여부 (1:사용함 , 0:사용하지 않음)
-	 */
-	public int Get_Energy_Devices_Info()
-	{
-		String[] GetData = GetSettingData("에너지제품군");
-
-		int returnData = 0;
-		try
-		{
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = 1;
-			else
-			{
-				returnData = 0;
-				return returnData;
-			}
-
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = 0;
-			return  returnData;
-        } catch (Exception e)
-		{
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = 0;
-			return  returnData;
-		}
-	}
-
-//	public int Get_SmartDistribution_Info()
-//	{
-//		String[] GetData = GetSettingData("스마트분전반");
-//
-//		int returnData = 0;
-//		try
-//		{
-//			if (GetData == null) return returnData;
-//
-//			if (GetData[1].indexOf("사용함") > 0) returnData = 1;
-//			else
-//			{
-//				returnData = 0;
-//				return returnData;
-//			}
-//
-//			return returnData;
-//		}
-//		catch (RuntimeException re) {
-//            LogUtil.errorLogInfo("", TAG, re);
-//        } catch (Exception e)
-//		{
-//			e.printStackTrace();
-//			returnData = 0;
-//			return  returnData;
-//		}
-//	}
-
-	/**
-	 * 분전반 종류를 가져온다.<br>
-	 * @return int 타입 - 0(사용안함), 1(스마트분전반(), 2(KNX분전반)
-	 */
-	public int Get_DistributionPannelType_Info() {
-		String[] GetData = GetSettingData("분전반");
-
-		int returnData = 0;
-		try {
-			Log.d(TAG, "Get_DistributionPannelType_Info");
-			String[] DataInfo = GetSettingData("분전반");
-			if (DataInfo == null) {
-				Log.w(TAG, "GetSettingData(분전반) is null");
-
-				if (mModelType == Version.MODEL_TYPE.IHN_1020GL
-						|| mModelType == Version.MODEL_TYPE.IHN_1010GL || mModelType == Version.MODEL_TYPE.IHN_1010GL_I) {
-					UpdateSettingData("subdev_list", "분전반", 0, "1(1:"+"분전반" + "(" + "사용안함" + ")종류(" + "사용안함" + ")");
-				}
-				else if (mModelType == Version.MODEL_TYPE.IHN_D101 || mModelType == Version.MODEL_TYPE.IHN_D101_I
-						|| mModelType == Version.MODEL_TYPE.IHN_D101K || mModelType == Version.MODEL_TYPE.IHN_D101K_I) {
-					UpdateSettingData("subdev_list", "분전반", 0, "1(1:" + "분전반" + "(" + "사용함" + ")종류(" + "스마트분전반" + ")");
-				}
-				else {
-					return -2;
-				}
-
-				DataInfo = GetSettingData("분전반");
-				if (DataInfo != null) {
-					for (int i = 0; i < DataInfo.length; i++) {
-						Log.i(TAG, "[Get_DistributionPannelType_Info] null -> default : " + DataInfo[i]);
-					}
-				}
-				else {
-					return -3;
-				}
-			}
-
-			String devInfo = DataInfo[1];
-
-			devInfo = devInfo.replace('(', '_');
-			devInfo = devInfo.replace(':', '_');
-			devInfo = devInfo.replace(')', '_');
-
-			String[] parseData = devInfo.split("_");
-			if (parseData[3].equals("사용함") == true) {
-				String TempData = parseData[5];
-
-				if (TempData == null) {
-					Log.e(TAG, "TempData is null");
-					return -3;
-				}
-
-				if (TempData.equals("스마트분전반")) {
-					Log.d(TAG, "분전반 종류 : 스마트 분전반");
-					return Version.DISTRIBUTION_MODEL.SMART_DIST;
-				}
-				else if (TempData.equals("KNX분전반")) {
-					Log.d(TAG, "분전반 종류 : KNX 분전반");
-					return Version.DISTRIBUTION_MODEL.KNX_DIST;
-				}
-				else {
-					Log.d(TAG, "분전반 종류 : 미정의");
-					return Version.DISTRIBUTION_MODEL.OTHER;
-				}
-			}
-			else {
-				Log.d(TAG, "분전반 종류 : 사용안함");
-				return Version.DISTRIBUTION_MODEL.NON_USE;
-			}
-		} catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = 0;
-			return  returnData;
-        } catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = 0;
-			return  returnData;
-		}
-	}
-
-//	/**
-//	 * KNX 분전반 사용여부 가져오기
-//	 * @return (boolean) true = KNX 분전반 사용함, false = 사용안함(기본값)
-//	 */
-//	public boolean Get_KnxDistribution_Info()
-//	{
-//		String[] GetData = GetSettingData("KNX분전반");
-//
-//		boolean returnData = false;// DB에 값 없는 경우 사용함으로 리턴
-//		try
-//		{
-//			if (GetData == null) { return returnData; }
-//
-//			if (GetData[1].indexOf("사용함") > 0) 	{ returnData = true; }
-//			else 									{ returnData = false; }
-//
-//			return returnData;
-//		}
-//		catch (RuntimeException re) {
-//            LogUtil.errorLogInfo("", TAG, re);
-//        } catch (Exception e)
-//		{
-//			e.printStackTrace();
-//			return false;
-//		}
-//	}
-
-	/**
-	 * 에너지미터 사용여부
-	 *
-	 * param none
-	 * @return (int) 에너미미터 사용여부 (1:사용함 , 0:사용하지 않음)
-	 */
-	public int Get_IPark_Energy_Info()
-	{
-		String[] GetData = GetSettingData("아이파크에너지");
-
-		int returnData = 0;
-		try
-		{
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = 1;
-			else
-			{
-				returnData = 0;
-				return returnData;
-			}
-
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = 0;
-			return  returnData;
-        }
-		catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = 0;
-			return  returnData;
-		}
-	}
-
-	/**
-	 * 대기전력 차단스위치 사용여부
-	 *
-	 * param none
-	 * @return (int) 대기전력 차단스위치 사용여부 (1:사용함 , 0:사용하지 않음)
-	 */
-	public int Get_Idle_Power_Saving_Switch_Info()
-	{
-		String[] GetData = GetSettingData("대기전력차단스위치");
-
-		int returnData = 0;
-		try
-		{
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = 1;
-			else
-			{
-				returnData = 0;
-				return returnData;
-			}
-
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = 0;
-			return  returnData;
-        }
-		catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = 0;
-			return  returnData;
-		}
-	}
-
-	//에너지모듈 사용여부
-	/**
-	 * 에너지모듈 사용여부
-	 *
-	 * param none
-	 * @return (int) 에너지모듈 사용여부 (1:사용함 , 0:사용하지 않음)
-	 */
-	public int Get_Energy_Module_Info()
-	{
-		String[] GetData = GetSettingData("에너지모듈");
-
-		int returnData = 0;
-		try
-		{
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = 1;
-			else
-			{
-				returnData = 0;
-				return returnData;
-			}
-
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = 0;
-			return  returnData;
-        }
-		catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = 0;
-			return  returnData;
-		}
-	}
-	public int Get_GAS_Info()
-	{
-		String[] GetData = GetSettingData("가스밸브");
-
-		int returnData = 1;
-		try
-		{
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = 1;
-			else
-			{
-				returnData = 0;
-				return returnData;
-			}
-
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = 1;
-			return  returnData;
-        }
-		catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = 1;
-			return  returnData;
-		}
-	}
-
-	public static final int SET_IN_MOTION        = 0x01;
-	public static final int SET_OUT_MOTION       = 0x02;
-	public static final int SET_OUT_TO_IN_MOTION = 0x04;
-
-	public int Get_Sensor_Set()
-	{
-		String[] GetData = GetSettingData("동체설정");
-
-		int returnData = 0;
-		try
-		{
-			if (GetData == null)
-			{
-				returnData|=SET_OUT_MOTION;
-				returnData|=SET_IN_MOTION;
-				return returnData;
-			}
-
-			if (GetData[1].indexOf("동체설정") > 0)
-			{
-				String[] setted = GetData[1].split("동체설정");
-				if (setted[1].split("[)]")[0].indexOf("사용함") > 0)
-				{
-					String[] outsetted = GetData[1].split("외부동체사용");
-					if (outsetted[1].split("[)]")[0].indexOf("사용함") > 0) returnData|=SET_OUT_MOTION;
-					outsetted = GetData[1].split("내부동체사용");
-					if (outsetted[1].split("[)]")[0].indexOf("사용함") > 0) returnData|=SET_IN_MOTION;
-					outsetted = GetData[1].split("외부동체를내부동체로사용");
-					if (outsetted[1].split("[)]")[0].indexOf("사용함") > 0) returnData|=SET_OUT_TO_IN_MOTION;
-				}
-				else
-					return 0;
-			}
-
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = 0;
-			return  returnData;
-        }
-		catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = 0;
-			return  returnData;
-		}
-	}
-
-	/**
-	 * BLE스마트키 설정 함수
-	 * @param bUsage 동체설정
-	 * @param bOut 외부동체 사용 여부
-	 * @param bIn 내부동체 사용 여부
-	 * @param bOutAsIn 외부동체를 내부동체로 사용
-	 * @return true: 성공, false: 실패
-	 */
-	public static final String MOTION_SETTING_TYPE_USE_OUTER_MOTION_DETECTOR = "외부동체사용";
-	public static final String MOTION_SETTING_TYPE_USE_INNER_MOTION_DETECTOR = "내부동체사용";
-	public static final String MOTION_SETTING_TYPE_USE_OUTER_MOTION_DETECTOR_TO_INNER_MOTION = "외부동체를내부동체로사용";
-	public boolean Set_MotionSensorType(boolean bUsage, boolean bOut, boolean bIn, boolean bOutAsIn) {
-		try {
-			Log.i(TAG, "[Set_MotionSensorType] bUsage: " + bUsage + ", bOut: " + bOut + ", bIn: " + bIn + ", bOutAsIn: " + bOutAsIn);
-			String strSettingValue = "1(1:동체설정(사용함)외부동체사용(사용함)내부동체사용(사용안함)외부동체를내부동체로사용(사용안함))";
-			String strSettingValue_Motion = "동체설정(사용함)";
-			String strSettingValue_Out = "외부동체사용(사용함)";
-			String strSettingValue_In = "내부동체사용(사용안함)";
-			String strSettingValue_OutAsIn = "외부동체를내부동체로사용(사용안함)";
-
-			if (bUsage) strSettingValue_Motion = define.DEVICE_ID_SENSOR + "(" + define.DEVICE_ENABLE + ")";
-			else strSettingValue_Motion = define.DEVICE_ID_SENSOR + "(" + define.DEVICE_DISABLE + ")";
-
-			if (bOut) strSettingValue_Out = MOTION_SETTING_TYPE_USE_OUTER_MOTION_DETECTOR + "(" + define.DEVICE_ENABLE + ")";
-			else strSettingValue_Out = MOTION_SETTING_TYPE_USE_OUTER_MOTION_DETECTOR + "(" + define.DEVICE_DISABLE + ")";
-
-			if (bIn) strSettingValue_In = MOTION_SETTING_TYPE_USE_INNER_MOTION_DETECTOR + "(" + define.DEVICE_ENABLE + ")";
-			else strSettingValue_In = MOTION_SETTING_TYPE_USE_INNER_MOTION_DETECTOR + "(" + define.DEVICE_DISABLE + ")";
-
-			if (bOutAsIn) strSettingValue_OutAsIn = MOTION_SETTING_TYPE_USE_OUTER_MOTION_DETECTOR_TO_INNER_MOTION + "(" + define.DEVICE_ENABLE + ")";
-			else strSettingValue_OutAsIn = MOTION_SETTING_TYPE_USE_OUTER_MOTION_DETECTOR_TO_INNER_MOTION + "(" + define.DEVICE_DISABLE + ")";
-
-			strSettingValue = "1(1:" + strSettingValue_Motion + strSettingValue_Out + strSettingValue_In + strSettingValue_OutAsIn + ")";
-
-			Log.i(TAG, "[Set_BLESmartKeyType] strSettingValue: " + strSettingValue);
-
-			UpdateSettingData("subdev_list", define.DEVICE_ID_SENSOR, 0, strSettingValue);
-
-			return true;
-		} catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			return false;
-        }
-		catch (Exception e) {
-			Log.e(TAG, "[Exception] Set_MotionSensorType(boolean bUsage, boolean bOut, boolean bIn, boolean bOutAsIn)");
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			return false;
-		}
-	}
-
-	int[] volindextbl = { -1, 0x13, 0x1A, 0x1F, 0x23, 0x28, 0x2B, 0x2E, 0x30, 0x34, 0x38 };
-
-	public int GetDoorSoundLevel()
-	{
-		String[] GetData = GetSettingData("현관폰사운드출력음량");
-
-		try
-		{
-			if (GetData == null)
-			{
-				return -1;
-			}
-
-			if (GetData[1].indexOf("사용함") > 0)
-			{
-				String[] volsetted = GetData[1].split("볼륨");
-				volsetted[1] = volsetted[1].replace("("," ");
-				volsetted[1] = volsetted[1].replace(")"," ");
-				volsetted[1] = volsetted[1].trim();
-				int idx = 0;
-				try {
-					idx = Integer.parseInt(volsetted[1]);
-					if (idx > volindextbl.length-1) idx = 0;
-
-					return volindextbl[idx];
-				}
-				catch (RuntimeException re) {
-					LogUtil.errorLogInfo("", TAG, re);
-					return -1;
-				}
-				catch (Exception e) {
-					//e.printStackTrace();
-					LogUtil.errorLogInfo("", TAG, e);
-					return -1;
-				}
-			}
-			else
-				return -1;
-
-
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			return  -1;
-        }
-		catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			return  -1;
-		}
-	}
-
-
-	//재택모드 시 동체센서 사용여부
-	/**
-	 * 재택모드 시 동체센서 사용여부
-	 *
-	 * param none
-	 * @return (int) 재택모드 시 동체센서 (1:사용함 , 0:사용하지 않음)
-	 */
-	public int Get_Security_IndoorMode_Sensor_Use()
-	{
-		String[] GetData = GetSettingData("재택모드시동체센서사용");
-
-		int returnData = 1;//DB에 값 없는 경우 사용함으로 리턴
-		try
-		{
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = 1;
-			else
-			{
-				returnData = 0;
-				return returnData;
-			}
-
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = 1;
-			return  returnData;
-        }
-		catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = 1;
-			return  returnData;
-		}
-	}
-
-
-	public static final int HANDICAPPED_MODE_NORMAL = 0; //일반모드
-	public static final int HANDICAPPED_MODE_HEARING = 1; //청각장애인 모드
-	public static final int HANDICAPPED_MODE_BLIND = 2; //시각장애인 모드
-
-	public static final int HANDICAPPED_DO_NOT_USE = 0;
-	public static final int HANDICAPPED_USE = 1;
-
-	/**
-	 * 장애인 모드 사용 유무 정보 가져오기
-	 *
-	 * param none
-	 * @return int[2]<br> int data[0] = 0(사용안함) or 1(사용함),<br> int data[1] = 0(일반모드) or 1(청각장애인모드) or 2(시각장애인모드)
-	 */
-	public int[] Get_Handicapped_Mode()
-	{
-		String[] GetData = GetSettingData("장애인모드");
-
-		int returnData[] = {HANDICAPPED_DO_NOT_USE, HANDICAPPED_MODE_NORMAL};
-
-		try
-		{
-			if (GetData == null)
-			{
-				Log.e(TAG, "GetSettingData(장애인모드) is null");
-				return returnData;
-			}
-
-			String devInfo = GetData[1];
-
-			devInfo = devInfo.replace('(', '_');
-			devInfo = devInfo.replace(':', '_');
-			devInfo = devInfo.replace(')', '_');
-
-			String[] DataInfo = devInfo.split("_");
-
-			// DataInfo[3] -> 장애인모드 사용함 or 사용안함
-			// DataInfo[5] -> 일반모드 or 청각장애인 or 시각장애인
-
-			if(DataInfo[3].equals("사용함") == true)
-			{
-				returnData[0] = HANDICAPPED_USE;
-			}
-			if(DataInfo[5].equals("일반모드") == true)
-			{
-				returnData[1] = HANDICAPPED_MODE_NORMAL;
-			}
-			else if(DataInfo[5].equals("청각장애인") == true)
-			{
-				returnData[1] = HANDICAPPED_MODE_HEARING;
-			}
-			else if(DataInfo[5].equals("시각장애인") == true)
-			{
-				returnData[1] = HANDICAPPED_MODE_BLIND;
-			}
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			return returnData;
-        }
-		catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			return returnData;
-		}
-	}
-
-	/**
-	 * 장애인 모드 종류 설정
-	 *
-	 * param int[2]<br> int data[0] = 0(사용안함) or 1(사용함),<br> int data[1] = 0(일반모드) or 1(청각장애인모드) or 2(시각장애인모드)
-	 * @return boolean 설정성공여부 true=설정성공, false=설정실패
-	 */
-	public boolean Set_Handicapped_Mode(int[] SetValue)
-	{
-		String sHandicapped = "장애인모드";
-		String sUseOrNot = "사용안함";
-		String sMode = "일반모드";
-		if(SetValue == null)
-		{
-			Log.e(TAG, "intput[] is null");
-			return false;
-		}
-		if(SetValue.length != 2)
-		{
-			Log.e(TAG, "intput[]'s length is not 2");
-			Log.e(TAG, "intput[]'s length is "+ SetValue.length);
-			return false;
-		}
-
-		switch(SetValue[0])
-		{
-			case HANDICAPPED_DO_NOT_USE:
-				sUseOrNot = "사용안함";
-				break;
-
-			case HANDICAPPED_USE:
-				sUseOrNot = "사용함";
-				break;
-
-			default:
-				Log.e(TAG, "intput[0] is Error.  SetValue[0]: "+SetValue[0]);
-				return false;
-		}
-
-		switch(SetValue[1])
-		{
-			case HANDICAPPED_MODE_NORMAL:
-				sMode = "일반모드";
-				break;
-
-			case HANDICAPPED_MODE_HEARING:
-				sMode = "청각장애인";
-				break;
-
-			case HANDICAPPED_MODE_BLIND:
-				sMode = "시각장애인";
-				break;
-
-			default:
-				Log.e(TAG, "intput[1] is Error.  SetValue[1]: "+SetValue[1]);
-				return false;
-		}
-
-		try
-		{
-			UpdateSettingData("subdev_list"
-					, sHandicapped
-					, 0
-					, "1(1:"+sHandicapped+"("+sUseOrNot+")모드("+sMode+")"
-			);
-			return true;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			return false;
-        }
-		catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			return false;
-		}
-	}
-
-	/**
-	 * 엘리베이터 핫키 사용 유무 (메인화면 오른쪽 하단에 엘리베이터 버튼 사용 유무)
-	 *
-	 * param none
-	 * @return (int) 엘리베이터 핫키 사용 유무 (1:사용함 , 0:사용하지 않음)
-	 */
-	public int Elevator_Button_inMainScreen_Use()
-	{
-		String[] GetData = GetSettingData("엘리베이터핫키");
-
-		int returnData = 0;//DB에 값 없는 경우 사용안함으로 리턴
-		try
-		{
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = 1;
-			else
-			{
-				returnData = 0;
-				return returnData;
-			}
-
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = 0;
-			return  returnData;
-        }
-		catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = 0;
-			return  returnData;
-		}
-	}
-
-
-
-	public static final int BLACK_TYPE = 0; //블랙타입 - 기존
-	public static final int COLOR_TYPE = 1; //컬러타입 - 신규
-	/**
-	 * 즐겨찾기 아이콘 종류 가져오기
-	 *
-	 * param none
-	 * @return int[2]<br> int data[0] = 1(사용함)<br> int data[1] = 0(흑백타입(기존)) or 1(컬러타입(신규))
-	 **/
-	public int[] Get_BookMark_Type()
-	{
-		String[] GetData = GetSettingData("즐겨찾기아이콘종류");
-
-		int returnData[] = {DO_USE, BLACK_TYPE};
-
-		try
-		{
-			if (GetData == null)
-			{
-				Log.e(TAG, "GetSettingData(즐겨찾기아이콘종류) is null");
-				return returnData;
-			}
-
-			String devInfo = GetData[1];
-
-			devInfo = devInfo.replace('(', '_');
-			devInfo = devInfo.replace(':', '_');
-			devInfo = devInfo.replace(')', '_');
-
-			String[] DataInfo = devInfo.split("_");
-
-			// DataInfo[5] -> 흑백 or 컬러
-
-			if(DataInfo[5].equals("흑백") == true)
-			{
-				returnData[1] = BLACK_TYPE;
-			}
-			else if(DataInfo[5].equals("컬러") == true)
-			{
-				returnData[1] = COLOR_TYPE;
-			}
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			return returnData;
-        }
-		catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			return returnData;
-		}
-	}
-
-	/**
-	 * 가스감지5회알람 사용유무
-	 *
-	 * @return boolean 타입 - true:사용, false:미사용
-	 */
-	public boolean GetGasDetect5Time()
-	{
-		Log.d(TAG, "GetGasDetect5Time");
-		int result = GetDeviceSetted(define.DEVICE_ID_GAS_DETECT_5TIME);
-		if(result == DEV_DATA_ENABLE)
-		{
-			return true;
-		}
-		else
-		{
-			return false;
-		}
-	}
-
-	/**
-	 * 인터넷미지원 사용유무
-	 *
-	 * @return boolean 타입 - true:사용, false:미사용
-	 */
-	public boolean Get_NonInternetSupportUse()
-	{
-		Log.d(TAG, "Get_NonInternetSupportUse");
-		int result = GetDeviceSetted(define.DEVICE_ID_NON_INTERNET_SUPPORT);
-		if(result == DEV_DATA_ENABLE)
-		{
-			return true;
-		}
-		else
-		{
-			return false;
-		}
-	}
-
-	/**
-	 * 거실EM주방등 사용유무
-	 *
-	 * @return boolean 타입 - true:사용, false:미사용
-	 */
-	public boolean Get_LivingEm_KitchenLight_Use()
-	{
-		//Log.d(TAG, "Get_LivingEm_KitchenLight_Use");
-		int result = GetDeviceSetted(define.DEVICE_ID_LIVINGEM_KITCHEN_LIGHT);
-		if(result == DEV_DATA_ENABLE)
-		{
-			return true;
-		}
-		else
-		{
-			return false;
-		}
-	}
-
-	/**
-	 * 스마트우편함 사용유무
-	 *
-	 * @return boolean 타입 - true:사용, false:미사용
-	 */
-	public boolean Get_SmartPostUse()
-	{
-		Log.d(TAG, "Get_SmartPostUse");
-		int result = GetDeviceSetted(define.DEVICE_ID_SMART_POST);
-		if(result == DEV_DATA_ENABLE)
-		{
-			return true;
-		}
-		else
-		{
-			return false;
-		}
-	}
-
-	/**
-	 * 쿡탑콘센트 사용유무
-	 *
-	 * @return boolean 타입 - true:사용, false:미사용
-	 */
-	public boolean Get_CookTopConcent_Use()
-	{
-		Log.d(TAG, "Get_CookTopConcent_Use");
-		int result = GetDeviceSetted(define.DEVICE_ID_ELECTRIC_CUTOFF);
-		if(result == DEV_DATA_ENABLE)
-		{
-			return true;
-		}
-		else
-		{
-			return false;
-		}
-	}
-
-	/**
-	 * 에너지 모듈 명칭 가져오기 - 제로에너지하우스 현장때문에 생긴 기능 <br>
-	 * return값에 대하여 먼저 null인지 체크하고 null 아닐 경우에만 사용! <br>
-	 * return값의 길이 (Length)를 확인하고 해당 개수에 맞게 설정해야 함.
-	 * param none
-	 * @return String[] 타입이며 회로 명칭 정보가 들어있음
-	 */
-	public String[] Get_EnergyModule_Name()
-	{
-		String[] ReturnData = null;
-		String[] GetData = GetSettingData("에너지모듈명칭");
-
-		try
-		{
-			if(GetData == null)
-			{
-				Log.e(TAG, "GetSettingData(에너지모듈명칭) is null");
-				return null;
-			}
-
-			String devInfo = GetData[1];
-
-			devInfo = devInfo.replace('(', '_');
-			devInfo = devInfo.replace(':', '_');
-			devInfo = devInfo.replace(')', '_');
-
-			String[] DataInfo = devInfo.split("_");
-
-			//[0] - 기기번호
-			//[1] - 회로수
-			//[2] - 기기이름
-			//[3] - 사용유무 (사용함 or 사용안함)------------> 사용할 정보
-			//[4] - 명칭
-			//[5] - 명칭에 대한 정보 ----------------------> 사용할 정보, ','로 구분됨
-
-			if(DataInfo[3].equals("사용함") == true)
-			{
-				String[] TempData = DataInfo[5].split(",");
-
-				if(TempData == null)
-				{
-					Log.e(TAG, "TempData is null");
-					return null;
-				}
-				if(TempData.length < 1)
-				{
-					Log.e(TAG, "TempData.length is 0");
-					return null;
-				}
-
-				ReturnData = new String[TempData.length];
-				ReturnData = TempData;
-				return ReturnData;
-			}
-			else
-			{
-				Log.e(TAG, "에너지모듈명칭 사용 안함");
-				Log.e(TAG, "DataInfo[3] :" + DataInfo[3]);
-				return null;
-			}
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			return null;
-        }
-		catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			return null;
-		}
-	}
-
-	/**
-	 * 제로에너지하우스 사용여부를 가져온다
-	 *
-	 * @return boolean 타입 - true:사용, false:미사용
-	 */
-	public boolean GetZeroEnergyHouseInfo()
-	{
-		Log.d(TAG, "GetZeroEnergyHouseInfo");
-
-		String[] GetData = GetSettingData("제로에너지하우스");
-
-		boolean returnData = false;//DB에 값 없는 경우 사용안함으로 리턴
-		try
-		{
-			if (GetData == null) return false;
-
-			if (GetData[1].indexOf("사용함") > 0)
-			{
-				returnData = true;
-			}
-			else
-			{
-				returnData = false;
-			}
-
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			return  false;
-        }
-		catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			return  false;
-		}
-	}
-
-	/**
-	 * 통화어플의 통화 타임아웃 기능 사용여부를 확인한다. (개발자용)
-	 * @return (boolean) true = 타임아웃 사용함(기본 사용함), false = 타임아웃 사용안함
-	 */
-	public boolean Get_CallAppCallTimeout()
-	{
-		String[] GetData = GetSettingData("통화타임아웃");
-
-		boolean returnData = true;// DB에 값 없는 경우 사용함으로 리턴
-		try
-		{
-			if (GetData == null)
-			{
-				return returnData;
-			}
-
-			if (GetData[1].indexOf("사용안함") > 0)
-			{
-				returnData = false;
-			}
-
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			return returnData;
-        }
-		catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			return returnData;
-		}
-	}
-
-	/**
-	 * 통화어플의 통화 타임아웃 기능 사용여부를 설정한다. (개발자용)
-	 * @param input boolean타입 true = 타임아웃 사용함, false = 타임아웃 사용안함
-	 * @return (boolean) true = 타임아웃 사용함(기본 사용함), false = 타임아웃 사용안함
-	 */
-	public boolean Set_CallAppCallTimeout(boolean input)
-	{
-		String SettingValue = "사용함";
-
-		if(input == false)
-		{
-			SettingValue = "사용안함";
-		}
-		else
-		{
-			SettingValue = "사용함";
-		}
-
-		try
-		{
-			UpdateSettingData("subdev_list"
-					, "통화타임아웃"
-					, 0
-					, "1(1:"+"통화타임아웃"+"("+SettingValue+")"
-			);
-			return true;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			return false;
-        }
-		catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			return false;
-		}
-	}
-
-	/**
-	 * IP대역 확장기능 사용여부 가져오기
-	 * @return (boolean) true = IP대역확장기능 사용함, false = 사용안함(기본값)
-	 */
-	public boolean Get_IP_Expansion()
-	{
-		String[] GetData = GetSettingData("IP대역확장");
-
-		boolean returnData = false;// DB에 값 없는 경우 사용함으로 리턴
-		try
-		{
-			if (GetData == null)
-			{
-				return returnData;
-			}
-
-			if (GetData[1].indexOf("사용함") > 0)
-			{
-				returnData = true;
-			}
-			else
-			{
-				returnData = false;
-			}
-
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			return returnData;
-        }
-		catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			return returnData;
-		}
-	}
-
-	/**
-	 * IP대역 확장기능  사용여부를 설정한다. (개발자용)
-	 * @param input boolean타입 true = 사용함, false = 사용안함
-	 * @return (boolean) true = 사용함, false = 사용안함(기본 사용안함)
-	 */
-	public boolean Set_IP_Expansion(boolean input)
-	{
-		String SettingValue = "사용안함";
-
-		if(input == false)
-		{
-			SettingValue = "사용안함";
-		}
-		else
-		{
-			SettingValue = "사용함";
-		}
-
-		try
-		{
-			UpdateSettingData("subdev_list"
-					, "IP대역확장"
-					, 0
-					, "1(1:"+"IP대역확장"+"("+SettingValue+")"
-			);
-			return true;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			return false;
-        } catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			return false;
-		}
-	}
-
-	/**
-	 * 난방조명방명칭설정 사용여부를 가져온다
-	 *
-	 * @return boolean 타입 - true:사용, false:미사용
-	 */
-	public boolean GetEachRoomNameInfo()
-	{
-		Log.d(TAG, "GetEachRoomNameInfo");
-
-		String[] GetData = GetSettingData("난방조명방명칭설정");
-
-		boolean returnData = false;//DB에 값 없는 경우 사용안함으로 리턴
-		try
-		{
-			if (GetData == null) return false;
-
-			if (GetData[1].indexOf("사용함") > 0)
-			{
-				returnData = true;
-			}
-			else
-			{
-				returnData = false;
-			}
-
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			return  false;
-        }
-		catch (Exception e) {
-			LogUtil.errorLogInfo("", TAG, e);
-			//e.printStackTrace();
-			return  false;
-		}
-	}
-
-	/**
-	 * 현산향 스마트스위치 422타입을 485라인으로 변경 시 사용여부 가져오는 기능(한남 아이파크 전용)
-	 *
-	 * @return boolean 타입 - true:사용, false:미사용
-	 */
-	public boolean GetHDCSmartSwitch485Connection()
-	{
-		Log.d(TAG, "GetHDCSmartSwitch485Connection");
-
-		String[] GetData = GetSettingData("스마트스위치485설정");
-
-		boolean returnData = false;//DB에 값 없는 경우 사용안함으로 리턴
-		try
-		{
-			if (GetData == null) return false;
-
-			if (GetData[1].indexOf("사용함") > 0)
-			{
-				returnData = true;
-			}
-			else
-			{
-				returnData = false;
-			}
-
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			return  false;
-        }
-		catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			return  false;
-		}
-	}
-
-
-	/**
-	 * 현산향 BLE스마트키 사용유무 확인(스마트키 카메라 암호화 모듈 구분 사용)
-	 *
-	 * @return boolean 타입 - true:사용, false:미사용
-	 */
-	public boolean GetBLESmartKeyUSE()
-	{
-		Log.d(TAG, "GetBLESmartKeyUSE");
-		int result = GetDeviceSetted(define.DEVICE_ID_BLE_SMARTKEY);
-		if(result == DEV_DATA_ENABLE)
-		{
-			return true;
-		}
-		else
-		{
-			return false;
-		}
-	}
-
-	/**
-	 * 신형 단지서버 사용유무 확인
-	 *
-	 * @return boolean 타입 - true:사용, false:미사용
-	 */
-	public boolean GetNewDanjiServer()
-	{
-		Log.d(TAG, "GetNewDanjiServer");
-		int result = GetDeviceSetted(define.DEVICE_ID_NEW_DANJI_SERVER);
-		if(result == DEV_DATA_ENABLE)
-		{
-			Log.d(TAG, "GetNewDanjiServer TRUE");
-			return true;
-		}
-		else
-		{
-			Log.d(TAG, "GetNewDanjiServer FALSE");
-			return false;
-		}
-	}
-
-
-    public static final int BLESMARTKEY_NONUSE  = 61;
-    public static final int BLESMARTKEY_KEY    	= 62;
-    public static final int BLESMARTKEY_BAND 	= 63;
-	public static final String BLE_SMARTKEY_TYPE_NONUSE    = "사용안함";
-	public static final String BLE_SMARTKEY_TYPE_SMARTKEY  = "스마트키";
-	public static final String BLE_SMARTKEY_TYPE_SMARTBAND = "스마트밴드";
-
-    /**
-     * BLE스마트키 종류 가져오는 함수
-     *
-     * @return [(int) BLE스마트키 사용여부 (1:사용함 , 0:사용하지 않음),<br>
-     * (int)BLE스마트키 종류 (0:사용안함 , 1:스마트키, 2:스마트밴드)]
-     */
-    public int[] Get_BLESmartKey_Info()
-    {
-        String[] GetData = GetSettingData("BLE스마트키");
-
-        int returnData[] = {0, BLESMARTKEY_NONUSE};
-        try
-        {
-            if (GetData == null) return returnData;
-
-            if (GetData[1].indexOf("사용함") > 0) returnData[0] = 1;
-            else
-            {
-                returnData[0] = 0;
-                return returnData;
-            }
-
-            //if (GetData[1].indexOf("사용안함") > 0) returnData[1] = BLESMARTKEY_NONUSE;
-            if (GetData[1].indexOf("(스마트키)") >0)
-            {
-                returnData[1] = BLESMARTKEY_KEY;
-            }
-            else if (GetData[1].indexOf("(스마트밴드)") >0)
-            {
-                returnData[1] = BLESMARTKEY_BAND;
-            }
-            else
-            {
-                returnData[0] = 1;
-                returnData[1] = BLESMARTKEY_KEY;
-                return returnData;
-            }
-
-            return returnData;
-        }
-        catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData[0] = 1;
-			returnData[1] = BLESMARTKEY_KEY;
-			return  returnData;
-        }
-        catch (Exception e) {
-            //e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData[0] = 1;
-            returnData[1] = BLESMARTKEY_KEY;
-            return  returnData;
-        }
-    }
-
-	/**
-	 * BLE스마트키 설정 함수
-	 * @param nValue BLE스마트키 종류 (사용안함 , 스마트키, 스마트밴드)
-	 * @return true: 성공, false: 실패
-	 */
-	public boolean Set_BLESmartKeyType(int nValue) {
-		try {
-			Log.i(TAG, "[Set_BLESmartKeyType] nValue: " + nValue);
-			String strBLESmartKeyType = BLE_SMARTKEY_TYPE_NONUSE;
-			String strSettingValue = "1(1:" + define.DEVICE_ID_BLE_SMARTKEY + "(" + define.DEVICE_DISABLE + ")";
-
-			if (nValue == BLESMARTKEY_NONUSE) {
-				strBLESmartKeyType = BLE_SMARTKEY_TYPE_NONUSE;
-			}
-			else if (nValue == BLESMARTKEY_KEY) {
-				strBLESmartKeyType = BLE_SMARTKEY_TYPE_SMARTKEY;
-			}
-			else if (nValue == BLESMARTKEY_BAND) {
-				strBLESmartKeyType = BLE_SMARTKEY_TYPE_SMARTBAND;
-			}
-			else {
-				Log.w(TAG, "[Set_BLESmartKeyType] Unsupported BLEsmartkey tyep: " + nValue);
-				return false;
-			}
-
-			if (strBLESmartKeyType.equalsIgnoreCase(BLE_SMARTKEY_TYPE_NONUSE)) {
-				strSettingValue = "1(1:" + define.DEVICE_ID_BLE_SMARTKEY + "(" + define.DEVICE_DISABLE + ")";
-			}
-			else {
-				strSettingValue = "1(1:" + define.DEVICE_ID_BLE_SMARTKEY + "(" + define.DEVICE_ENABLE + ")종류(" + strBLESmartKeyType + ")";
-			}
-
-
-			Log.i(TAG, "[Set_BLESmartKeyType] strSettingValue: " + strSettingValue);
-
-			UpdateSettingData("subdev_list", define.DEVICE_ID_BLE_SMARTKEY, 0, strSettingValue);
-
-			return true;
-		} catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			return false;
-        } catch (Exception e) {
-			Log.e(TAG, "[Exception] Set_BLESmartKeyType(int nValue)");
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			return false;
-		}
-	}
-
-
-	/**
-	 * 제어시퀀스 제한 사용유무
-	 *
-	 * @return boolean 타입 - true:사용, false:미사용
-	 */
-	public boolean GetCtrSequenceLimit()
-	{
-		Log.d(TAG, "GetCtrSequenceLimit");
-		int result = GetDeviceSetted(define.DEVICE_ID_CTR_SEQUENCE_LIMIT);
-		if(result == DEV_DATA_ENABLE)
-		{
-			return true;
-		}
-		else
-		{
-			return false;
-		}
-	}
-
-	/**
-	 * 통합스위치 사용유무
-	 *
-	 * @return boolean 타입 - true:사용, false:미사용
-	 */
-	public boolean Get_Integrated_Switch_Info() {
-		Log.d(TAG, "Get_Integrated_Switch_Info");
-		int result = GetDeviceSetted(define.DEVICE_ID_INTEGRADED_SWITCH);
-		if (result == DEV_DATA_ENABLE) return true;
-		else return false;
-	}
-
-	/**
-	 * 통합스위치 설정 함수
-	 * @param bUsage 통합스위치 사용여부 (true: 사용함, false: 사용안함)
-	 * @return true: 성공, false: 실패
-	 */
-	public boolean Set_IntegratedSwitchUsage(boolean bUsage) {
-		try {
-			Log.i(TAG, "[Set_IntegratedSwitchUsage] bUsage: " + bUsage);
-			String strSettingValue = "1(1:" + define.DEVICE_ID_INTEGRADED_SWITCH + "(" + define.DEVICE_DISABLE + ")";
-
-			if (bUsage) strSettingValue = "1(1:" + define.DEVICE_ID_INTEGRADED_SWITCH + "(" + define.DEVICE_ENABLE + ")";
-			else strSettingValue = "1(1:" + define.DEVICE_ID_INTEGRADED_SWITCH + "(" + define.DEVICE_DISABLE + ")";
-
-			Log.i(TAG, "[Set_IntegratedSwitchUsage] strSettingValue: " + strSettingValue);
-
-			UpdateSettingData("subdev_list", define.DEVICE_ID_INTEGRADED_SWITCH, 0, strSettingValue);
-
-			return true;
-		} catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			return false;
-        } catch (Exception e) {
-			Log.e(TAG, "[Exception] Set_IntegratedSwitchUsage(boolean bUsage)");
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			return false;
-		}
-	}
-
-	public int Get_NoiseSensor_Use()
-	{
-		String[] GetData = GetSettingData("층간소음센서");
-
-		int returnData = 0;
-		try
-		{
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = 1;
-			else
-			{
-				returnData = 0;
-				return returnData;
-			}
-
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = 0;
-			return  returnData;
-        }
-		catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = 0;
-			return  returnData;
-		}
-	}
-
-	public int Get_InnerRoomDetectSensor_Use()
-	{
-		String[] GetData = GetSettingData("재실센서");
-
-		int returnData = 0;
-		try
-		{
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = 1;
-			else
-			{
-				returnData = 0;
-				return returnData;
-			}
-
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = 0;
-			return  returnData;
-        } catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = 0;
-			return  returnData;
-		 }
-	}
-
-	public int Get_ReliefCall_Use()
-	{
-		String[] GetData = GetSettingData("안심통화");
-
-		int returnData = 0;
-		try
-		{
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = 1;
-			else
-			{
-				returnData = 0;
-				return returnData;
-			}
-
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = 0;
-			return  returnData;
-        } catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = 0;
-			return  returnData;
-		}
-	}
-
-	public int Get_RemoteCall_Use()
-	{
-		String[] GetData = GetSettingData("방문객원격통화");
-
-		int returnData = 0;
-		try
-		{
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = 1;
-			else
-			{
-				returnData = 0;
-				return returnData;
-			}
-
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = 0;
-			return  returnData;
-        } catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = 0;
-			return  returnData;
-		}
-	}
-
-	public int Get_MobileAppAuth_Use()
-	{
-		String[] GetData = GetSettingData("모바일앱사용자인증");
-
-		int returnData = 0;
-		try
-		{
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = 1;
-			else
-			{
-				returnData = 0;
-				return returnData;
-			}
-
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = 0;
-			return  returnData;
-        } catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = 0;
-			return  returnData;
-		}
-	}
-
-	public boolean Get_ElectricRange_Use()
-	{
-		String[] GetData = GetSettingData("전기레인지");
-
-		boolean returnData = false;
-		try
-		{
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = true;
-			else returnData = false;
-
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = false;
-			return  returnData;
-        } catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = false;
-			return  returnData;
-		}
-	}
-
-	public boolean getVisitedVehicleRegiUsage() {
-		String[] GetData = GetSettingData("방문객차량등록");
-
-		boolean returnData = false;
-		try {
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = true;
-			else returnData = false;
-
-			return returnData;
-		} catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = false;
-			return  returnData;
-        } catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = false;
-			return  returnData;
-		}
-	}
-
-	public boolean getBandLocationUsage() {
-		String[] GetData = GetSettingData("밴드위치확인");
-
-		boolean returnData = false;
-		try {
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = true;
-			else returnData = false;
-
-			return returnData;
-		} catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = false;
-			return  returnData;
-        } catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = false;
-			return  returnData;
-		}
-	}
-
-
-	/**
-	 * 피난사다리입하수신 사용유무 가져오기<br>
-	 *
-	 * @return boolean 타입 - true:사용, false:미사용
-	 */
-	public boolean GetEscapeLadderDownRecv()
-	{
-		int result = GetDeviceSetted(define.DEVICE_ID_ESCAPELADDER_DOWN_RECV);
-		if(result == DEV_DATA_ENABLE)
-		{
-			return true;
-		}
-		else
-		{
-			return false;
-		}
-	}
-
-	/**
-	 * 피난사다리 사용여부 설정
-	 * @param bUsage true: 사용함, false: 사용안함
-	 * @return true: 성공, false: 실패
-	 */
-	public boolean Set_RefugeLadderUsage(boolean bUsage) {
-		try {
-			Log.i(TAG, "[Set_RefugeLadderUsage] bUsage: " + bUsage);
-			String strSettingValue = "1(1:" + define.DEVICE_ID_EMERGENGY_LEDDER + "(" + define.DEVICE_DISABLE + ")";
-
-			if (bUsage) strSettingValue = "1(1:" + define.DEVICE_ID_EMERGENGY_LEDDER + "(" + define.DEVICE_ENABLE + ")";
-			else strSettingValue = "1(1:" + define.DEVICE_ID_EMERGENGY_LEDDER + "(" + define.DEVICE_DISABLE + ")";
-
-			Log.i(TAG, "[Set_RefugeLadderUsage] strSettingValue: " + strSettingValue);
-
-			UpdateSettingData("subdev_list", define.DEVICE_ID_EMERGENGY_LEDDER, 0, strSettingValue);
-
-			return true;
-		} catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			return false;
-        } catch (Exception e) {
-			Log.e(TAG, "[Exception] Set_RefugeLadderUsage(boolean bUsage)");
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			return false;
-		}
-	}
-
-    /**
-	 * SubDevListItem 사용유무 설정
-	 * param input boolean타입 true = 사용함, false = 사용안함
-	 * param Define_ID String타입 ID(예시: define.DEVICE_ID_BLE_SMARTKEY)
-	 * @return (boolean) true = 설정 성공, false = 설정 실패
-	 */
-	public boolean SetSubDevListItem(boolean input, String Define_ID)
-	{
-		String SettingValue = "사용안함";
-
-		if(Define_ID == null)
-		{
-			return false;
-		}
-
-		if(input == false)
-		{
-			SettingValue = "사용안함";
-		}
-		else
-		{
-			SettingValue = "사용함";
-		}
-
-		try
-		{
-			UpdateSettingData("subdev_list"
-					, Define_ID
-					, 0
-					, "1(1:"+Define_ID+"("+SettingValue+")"
-			);
-			return true;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			return false;
-        }
-		catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			return false;
-		}
-	}
-
-	public final static int DEV_DATA_NONE    = 0;
-	public final static int DEV_DATA_DISABLE = 1;
-	public final static int DEV_DATA_ENABLE  = 2;
-	public final static int DEV_DATA_ERROR   = 3;
-
-	public int GetDeviceSetted(String item)
-	{
-		String[] GetData = GetSettingData(item);
-		if (GetData == null) return DEV_DATA_NONE;
-
-		try
-		{
-			if (GetData[1].indexOf("사용함") > 0)
-				return DEV_DATA_ENABLE;
-			else
-				return DEV_DATA_DISABLE;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			return DEV_DATA_ERROR;
-        }
-		catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			return DEV_DATA_ERROR;
-		}
-	}
-
-	public void SetDeviceEnable(String DevName, boolean onoff)
-	{
-		ContentValues values = new ContentValues();
-		values.put("enable", onoff?"enable":"disable");
-		String condi = "id = "+DevName;
-		if(wdb!=null) wdb.update(SubDeviceTBL, values, condi, null);
-
-	}
-
-	public String[] GetDeviceinfo(String DevName)
-	{
-		String query = "select id, name, cnt,  enable, lononoff from "+SubDeviceTBL+" where id = \""+DevName+"\";";
-		if(wdb!=null)
-		{
-			Cursor cursor = wdb.rawQuery(query, null);
-			if (cursor.moveToNext() == true)
-			{
-				String[] getdata = new String[]{cursor.getString(0),cursor.getString(1),cursor.getString(2),cursor.getString(3),cursor.getString(4)};
-				return getdata;
-			}
-			cursor.close();
-		}
-
-		return null;
-	}
-
-	public boolean GetDeviceEnable(String DevName)
-	{
-		String query = "select enable from "+SubDeviceTBL+" where id = \""+DevName+"\";";
-		if(wdb!=null)
-		{
-			Cursor cursor = wdb.rawQuery(query, null);
-			if (cursor.moveToNext()==true)
-			{
-				if (cursor.getString(0).equals(DEV_ENABLE))
-				{
-					cursor.close();
-					return true;
-				}
-			}
-			cursor.close();
-		}
-
-		return false;
-	}
-
-	public void SetDeviceCount(String DevName, int  count)
-	{
-		ContentValues values = new ContentValues();
-		values.put("cnt", String.valueOf(count));
-		String condi = "id = "+DevName;
-		wdb.update(SubDeviceTBL, values, condi, null);
-
-	}
-
-
-	/**
-	 * 서브월패드 사용유무 가져오기<br>
-	 *
-	 * @return boolean 타입 - true:사용, false:미사용
-	 */
-	public boolean GetSubWpdUse() {
-		Log.d(TAG, "GetSubWpdUse");
-		int result = GetDeviceSetted(define.DEVICE_ID_SUBWALLPAD);
-		if (result == DEV_DATA_ENABLE) {
-			return true;
-		} else {
-			return false;
-		}
-	}
-
-	public static final int SUBWPD_CTR_NONUSE  		= 71;
-	public static final int SUBWPD_CTR_MAINREQ    	= 72;
-	public static final int SUBWPD_CTR_DIRECT	 	= 73;
-
-	/**
-	 * 서브월패드 조명연동 설정 종류 가져오기<br>
-	 *
-	 * @return int[] 타입
-	 */
-	public int[] GetSubWpdDirect_Light()
-	{
-		Log.d(TAG, "[GetSubWpdDirect_Light]");
-		String[] GetData = GetSettingData(define.DEVICE_ID_SUBWPD_DIRECT_LIGHT);
-
-		int returnData[] = {0, SUBWPD_CTR_NONUSE};
-		try
-		{
-			if (GetData == null) return returnData;
-
-			for (int i = 0; i < GetData.length; i++)
-				Log.e(TAG, "[GetSubWpdDirect_Light] GetData[" + i + "] = " + GetData[i]);
-
-			if (GetData[1].indexOf("사용함") > 0) {
-				returnData[0] = 1;
-				if (GetData[1].indexOf("(직접연동)") > 0)
-				{
-					returnData[1] = SUBWPD_CTR_DIRECT;
-				}
-				else if (GetData[1].indexOf("(메인요청)") > 0)
-				{
-					returnData[1] = SUBWPD_CTR_MAINREQ;
-				}
-				else
-				{
-					returnData[1] = SUBWPD_CTR_NONUSE;
-				}
-			}
-			else
-			{
-				returnData[0] = 0;
-			}
-
-			for (int i = 0; i < returnData.length; i++)
-				Log.e(TAG, "[GetSubWpdDirect_Light] returnData[" + i + "] = " + returnData[i]);
-
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData[0] = 0;
-			returnData[1] = SUBWPD_CTR_NONUSE;
-			return  returnData;
-        }
-		catch (Exception e) {
-			Log.e(TAG, "[Exception] GetSubWpdDirect_Light()");
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData[0] = 0;
-			returnData[1] = SUBWPD_CTR_NONUSE;
-			return  returnData;
-		}
-	}
-
-	/**
-	 * 서브월패드 난방연동 설정 종류 가져오기<br>
-	 *
-	 * @return int[] 타입
-	 */
-	public int[] GetSubWpdDirect_Heater()
-	{
-		Log.d(TAG, "[GetSubWpdDirect_Heater]");
-		String[] GetData = GetSettingData(define.DEVICE_ID_SUBWPD_DIRECT_HEATER);
-
-		int returnData[] = {0, SUBWPD_CTR_NONUSE};
-		try
-		{
-			if (GetData == null) return returnData;
-
-			for (int i = 0; i < GetData.length; i++)
-				Log.e(TAG, "[GetSubWpdDirect_Heater] GetData[" + i + "] = " + GetData[i]);
-
-			if (GetData[1].indexOf("사용함") > 0) {
-				returnData[0] = 1;
-				if (GetData[1].indexOf("(직접연동)") > 0)
-				{
-					returnData[1] = SUBWPD_CTR_DIRECT;
-				}
-				else if (GetData[1].indexOf("(메인요청)") > 0)
-				{
-					returnData[1] = SUBWPD_CTR_MAINREQ;
-				}
-				else
-				{
-					returnData[1] = SUBWPD_CTR_NONUSE;
-				}
-			}
-			else
-			{
-				returnData[0] = 0;
-			}
-
-			for (int i = 0; i < returnData.length; i++)
-				Log.e(TAG, "[GetSubWpdDirect_Heater] returnData[" + i + "] = " + returnData[i]);
-
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData[0] = 0;
-			returnData[1] = SUBWPD_CTR_NONUSE;
-			return  returnData;
-        }
-		catch (Exception e) {
-			Log.e(TAG, "[Exception] GetSubWpdDirect_Heater()");
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData[0] = 0;
-			returnData[1] = SUBWPD_CTR_NONUSE;
-			return  returnData;
-		}
-	}
-
-	/**
-	 * 서브월패드 가스연동 설정 종류 가져오기<br>
-	 *
-	 * @return int[] 타입
-	 */
-	public int[] GetSubWpdDirect_Gas()
-	{
-		Log.d(TAG, "[GetSubWpdDirect_Gas]");
-		String[] GetData = GetSettingData(define.DEVICE_ID_SUBWPD_DIRECT_GAS);
-
-		int returnData[] = {0, SUBWPD_CTR_NONUSE};
-		try
-		{
-			if (GetData == null) return returnData;
-
-			for (int i = 0; i < GetData.length; i++)
-				Log.e(TAG, "[GetSubWpdDirect_Gas] GetData[" + i + "] = " + GetData[i]);
-
-			if (GetData[1].indexOf("사용함") > 0) {
-				returnData[0] = 1;
-				if (GetData[1].indexOf("(직접연동)") > 0)
-				{
-					returnData[1] = SUBWPD_CTR_DIRECT;
-				}
-				else if (GetData[1].indexOf("(메인요청)") > 0)
-				{
-					returnData[1] = SUBWPD_CTR_MAINREQ;
-				}
-				else
-				{
-					returnData[1] = SUBWPD_CTR_NONUSE;
-				}
-			}
-			else
-			{
-				returnData[0] = 0;
-			}
-
-			for (int i = 0; i < returnData.length; i++)
-				Log.e(TAG, "[GetSubWpdDirect_Gas] returnData[" + i + "] = " + returnData[i]);
-
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData[0] = 0;
-			returnData[1] = SUBWPD_CTR_NONUSE;
-			return  returnData;
-        }
-		catch (Exception e) {
-			Log.e(TAG, "[Exception] GetSubWpdDirect_Gas()");
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData[0] = 0;
-			returnData[1] = SUBWPD_CTR_NONUSE;
-			return  returnData;
-		}
-	}
-
-	/**
-	 * 서브월패드 도어락연동 설정 종류 가져오기<br>
-	 *
-	 * @return int[] 타입
-	 */
-	public int[] GetSubWpdDirect_Dlock()
-	{
-		Log.d(TAG, "[GetSubWpdDirect_Dlock]");
-		String[] GetData = GetSettingData(define.DEVICE_ID_SUBWPD_DIRECT_DLOCK);
-
-		int returnData[] = {0, SUBWPD_CTR_NONUSE};
-		try
-		{
-			if (GetData == null) return returnData;
-
-			for (int i = 0; i < GetData.length; i++)
-				Log.e(TAG, "[GetSubWpdDirect_Dlock] GetData[" + i + "] = " + GetData[i]);
-
-			if (GetData[1].indexOf("사용함") > 0) {
-				returnData[0] = 1;
-				if (GetData[1].indexOf("(직접연동)") > 0)
-				{
-					returnData[1] = SUBWPD_CTR_DIRECT;
-				}
-				else if (GetData[1].indexOf("(메인요청)") > 0)
-				{
-					returnData[1] = SUBWPD_CTR_MAINREQ;
-				}
-				else
-				{
-					returnData[1] = SUBWPD_CTR_NONUSE;
-				}
-			}
-			else
-			{
-				returnData[0] = 0;
-			}
-
-			for (int i = 0; i < returnData.length; i++)
-				Log.e(TAG, "[GetSubWpdDirect_Dlock] returnData[" + i + "] = " + returnData[i]);
-
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData[0] = 0;
-			returnData[1] = SUBWPD_CTR_NONUSE;
-			return  returnData;
-        } catch (Exception e) {
-			Log.e(TAG, "[Exception] GetSubWpdDirect_Dlock()");
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData[0] = 0;
-			returnData[1] = SUBWPD_CTR_NONUSE;
-			return  returnData;
-		}
-	}
-
-	/**
-	 * 서브월패드 환기연동 설정 종류 가져오기<br>
-	 *
-	 * @return int[] 타입
-	 */
-	public int[] GetSubWpdDirect_Venti()
-	{
-		Log.d(TAG, "[GetSubWpdDirect_Venti]");
-		String[] GetData = GetSettingData(define.DEVICE_ID_SUBWPD_DIRECT_VENTI);
-
-		int returnData[] = {0, SUBWPD_CTR_NONUSE};
-		try
-		{
-			if (GetData == null) return returnData;
-
-			for (int i = 0; i < GetData.length; i++)
-				Log.e(TAG, "[GetSubWpdDirect_Venti] GetData[" + i + "] = " + GetData[i]);
-
-			if (GetData[1].indexOf("사용함") > 0) {
-				returnData[0] = 1;
-				if (GetData[1].indexOf("(직접연동)") > 0)
-				{
-					returnData[1] = SUBWPD_CTR_DIRECT;
-				}
-				else if (GetData[1].indexOf("(메인요청)") > 0)
-				{
-					returnData[1] = SUBWPD_CTR_MAINREQ;
-				}
-				else
-				{
-					returnData[1] = SUBWPD_CTR_NONUSE;
-				}
-			}
-			else
-			{
-				returnData[0] = 0;
-			}
-
-			for (int i = 0; i < returnData.length; i++)
-				Log.e(TAG, "[GetSubWpdDirect_Venti] returnData[" + i + "] = " + returnData[i]);
-
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData[0] = 0;
-			returnData[1] = SUBWPD_CTR_NONUSE;
-			return  returnData;
-        } catch (Exception e) {
-			Log.e(TAG, "[Exception] GetSubWpdDirect_Venti()");
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData[0] = 0;
-			returnData[1] = SUBWPD_CTR_NONUSE;
-			return  returnData;
-		}
-	}
-
-	/**
-	 * 서브월패드 국선전화연동 설정 종류 가져오기<br>
-	 *
-	 * @return int[] 타입
-	 */
-	public int[] GetSubWpdDirect_PSTN()
-	{
-		Log.d(TAG, "[GetSubWpdDirect_PSTN]");
-		String[] GetData = GetSettingData(define.DEVICE_ID_SUBWPD_DIRECT_PSTN);
-
-		int returnData[] = {0, SUBWPD_CTR_NONUSE};
-		try
-		{
-			if (GetData == null) return returnData;
-
-			for (int i = 0; i < GetData.length; i++)
-				Log.e(TAG, "[GetSubWpdDirect_PSTN] GetData[" + i + "] = " + GetData[i]);
-
-			if (GetData[1].indexOf("사용함") > 0) {
-				returnData[0] = 1;
-				if (GetData[1].indexOf("(직접연동)") > 0)
-				{
-					returnData[1] = SUBWPD_CTR_DIRECT;
-				}
-				else if (GetData[1].indexOf("(메인요청)") > 0)
-				{
-					returnData[1] = SUBWPD_CTR_MAINREQ;
-				}
-				else
-				{
-					returnData[1] = SUBWPD_CTR_NONUSE;
-				}
-			}
-			else
-			{
-				returnData[0] = 0;
-			}
-
-			for (int i = 0; i < returnData.length; i++)
-				Log.e(TAG, "[GetSubWpdDirect_PSTN] returnData[" + i + "] = " + returnData[i]);
-
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData[0] = 0;
-			returnData[1] = SUBWPD_CTR_NONUSE;
-			return  returnData;
-        } catch (Exception e) {
-			Log.e(TAG, "[Exception] GetSubWpdDirect_PSTN()");
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData[0] = 0;
-			returnData[1] = SUBWPD_CTR_NONUSE;
-			return  returnData;
-		}
-	}
-
-	/**
-	 * 게이트웨이 모델 종류를 가져온다.<br>
-	 * 1020GL의 게이트웨이 종류 : IGW_200, IGW_300<br>
-	 * 리턴 값 : define 정의<br>
-	 * * DB에 값이 없음, 미정의 모델, exception인 경우 : 음수 리턴<br>
-	 *
-	 * @return int 타입 - 100(사용안함), 200(IGW200), 300(IGW300)
-	 */
-	public int GetGatewayModelKindInfo() {
-		Log.d(TAG, "GetGatewayModelKindInfo");
-
-		String[] DataInfo = GetSettingData("게이트웨이모델");
-		try {
-			if (DataInfo == null) {
-				Log.w(TAG, "GetSettingData(게이트웨이모델) is null");
-
-				// 모델마다 기본설정 부여
-				// 1020GL : IGW200
-				// D101   : IGW300
-				if (mModelType == Version.MODEL_TYPE.IHN_1020GL) {
-					// IGW200 설정
-					UpdateSettingData("subdev_list"
-							, "게이트웨이모델"
-							, 0
-							, "1(1:"+"게이트웨이모델"+"("+"사용함"+")종류("+"IGW200"+")"
-					);
-
-					//return Version.GATEWAY_MODEL.IGW_200;
-				}
-				else if (mModelType == Version.MODEL_TYPE.IHN_D101 || mModelType == Version.MODEL_TYPE.IHN_D101_I
-						|| mModelType == Version.MODEL_TYPE.IHN_D101K || mModelType == Version.MODEL_TYPE.IHN_D101K_I
-						|| mModelType == Version.MODEL_TYPE.IHN_1010GL || mModelType == Version.MODEL_TYPE.IHN_1010GL_I)
-				{
-					// IGW300 설정
-					UpdateSettingData("subdev_list"
-							, "게이트웨이모델"
-							, 0
-							, "1(1:"+"게이트웨이모델"+"("+"사용함"+")종류("+"IGW300"+")"
-					);
-
-					//return Version.GATEWAY_MODEL.IGW_300;
-				}
-				else {
-					return -2;
-				}
-
-				DataInfo = GetSettingData("게이트웨이모델");
-				if (DataInfo != null) {
-					for (int i = 0; i < DataInfo.length; i++) {
-						Log.i(TAG, "[GetGatewayModelKindInfo] null -> default : " + DataInfo[i]);
-					}
-				}
-				else {
-					return -3;
-				}
-			}
-
-			String devInfo = DataInfo[1];
-
-			devInfo = devInfo.replace('(', '_');
-			devInfo = devInfo.replace(':', '_');
-			devInfo = devInfo.replace(')', '_');
-
-			String[] parseData = devInfo.split("_");
-
-			//[0] - 기기번호
-			//[1] - 회로수
-			//[2] - 기기이름
-			//[3] - 사용유무 (사용함 or 사용안함)------------> 사용할 정보
-			//[4] - 명칭 (종류)
-			//[5] - 명칭에 대한 정보 ----------------------> 사용할 정보, ','로 구분됨
-
-			if (parseData[3].equals("사용함") == true) {
-				String TempData = parseData[5];
-
-				if (TempData == null) {
-					Log.e(TAG, "TempData is null");
-					return -3;
-				}
-
-				if (TempData.equals("IGW200")) {
-					Log.d(TAG, "게이트웨이 모델 종류 : IGW200");
-					return Version.GATEWAY_MODEL.IGW_200;
-				}
-				else if (TempData.equals("IGW300")) {
-					Log.d(TAG, "게이트웨이 모델 종류 : IGW300");
-					return Version.GATEWAY_MODEL.IGW_300;
-				}
-				else {
-					Log.d(TAG, "게이트웨이 모델 종류 : 미정의");
-					return Version.GATEWAY_MODEL.OTHER;
-				}
-			}
-			else {
-				Log.d(TAG, "게이트웨이모델 종류 : 사용안함");
-				return Version.GATEWAY_MODEL.NON_USE;
-			}
-		} catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			return  -4;
-        } catch (Exception e) {
-			Log.e(TAG, "[Exception] GetGatewayModelKindInfo()");
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			return  -4;
-		}
-	}
-
-	public boolean Get_RemoteMeter_Use()
-	{
-		boolean ret = false;
-		String[] DataInfo = GetSettingData("원격검침");
-
-		if(DataInfo != null)
-		{
-			for(int i = 0; i < DataInfo.length; i++)
-			{
-				Log.i(TAG, "[Get_RemoteMeter_Use] data : " + DataInfo[i]);
-			}
-		}
-		else
-		{
-			Log.w(TAG, "[Get_RemoteMeter_Use] - data null --> false");
-			return false;
-		}
-
-		String devInfo = DataInfo[1];
-
-		devInfo = devInfo.replace('(', '_');
-		devInfo = devInfo.replace(':', '_');
-		devInfo = devInfo.replace(')', '_');
-
-		String[] parseData = devInfo.split("_");
-
-		if(parseData[3].equals("사용함") == true)
-		{
-			Log.i(TAG, "[Get_RemoteMeter_Use] - RemoteMeter USE : true");
-			ret = true;
-		}
-		else
-		{
-			Log.i(TAG, "[Get_RemoteMeter_Use] - RemoteMeter USE : false");
-			ret = false;
-		}
-
-		return ret;
-	}
-
-
-
-	public boolean StartTransaction()
-	{
-		try
-		{
-			if(wdb!=null) wdb.beginTransaction();
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			return false;
-        } catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			return false;
-		}
-		return true;
-	}
-	public boolean EndTransaction(boolean success)
-	{
-		try
-		{
-			if (success) {
-				if(wdb!=null) wdb.setTransactionSuccessful();
-			}
-			if(wdb!=null) wdb.endTransaction();
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			return false;
-        } catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			return false;
-		}
-
-		return true;
-	}
-
-
-	public void initSubDeviceTBL()
-	{
-		if(SubDevInitData == null)
-			Init_SubDevInitData();
-		for (int i=0;i<SubDevInitData.length;i++)
-		{
-			ContentValues values = new ContentValues();
-			//protected static final String CreateSubDeviceDB     = "create table " + SubDeviceTBL  + " (id text unique, name  text, devcnt text, cnt text, loc text, enable text, lononoff text);";
-			values.put("id", SubDevInitData[i][0]);
-			values.put("name", SubDevInitData[i][1]);
-			values.put("devcnt", SubDevInitData[i][2]);
-			values.put("cnt", SubDevInitData[i][3]);
-			values.put("loc", SubDevInitData[i][4]);
-			values.put("enable", SubDevInitData[i][5]);
-			values.put("logonoff", SubDevInitData[i][6]);
-			if(wdb!=null) wdb.insert(SubDeviceTBL, null, values);
-		}
-	}
-
-	public void InsertSettingData(String Type, String Name, int cnt, String value)
-	{
-		ContentValues values = new ContentValues();
-		//create table " + SettingTBL  + " (type  text, name text unique, cnt INTEGER, value text);";
-		values.put("type", Type);
-		values.put("name", Name);
-		values.put("cnt", cnt);
-		values.put("value", value);
-		if(wdb!=null) wdb.insert(SettingTBL, null, values);
-	}
-
-	public void UpdateSettingData(String Type, String Name, int cnt, String value)
-	{
-		String sqlStr = "DELETE FROM "+SettingTBL+" where name=\""+Name+"\";";
-		if(wdb!=null) wdb.execSQL(sqlStr);
-		InsertSettingData(Type, Name, cnt, value );
-	}
-
-	public String[] GetSettingData(String Name)
-	{
-		String query = "select name, value from "+SettingTBL+" where name = \""+Name+"\";";
-		if(wdb!=null)
-		{
-			Cursor cursor = wdb.rawQuery(query, null);
-			while (cursor.moveToNext())
-			{
-				String[] getdata = new String[]{cursor.getString(0).trim(),cursor.getString(1).trim()};
-
-				return getdata;
-			}
-			cursor.close();
-		}
-
-		return null;
-	}
-
-	public List<String[]> GetGuardList()
-	{
-		List<String[]> GuardList = new ArrayList<String[]>();
-		//create table " + SettingTBL  + " (type  text, name text unique, cnt INTEGER, value text);";
-		String query = "select name, value from "+SettingTBL+" where type = \"guard_list\";";
-		Cursor cursor = wdb.rawQuery(query, null);
-		while (cursor.moveToNext())
-		{
-			String[] getdata = new String[]{cursor.getString(0),cursor.getString(1)};
-
-			GuardList.add(getdata);
-		}
-		cursor.close();
-		return GuardList;
-	}
-
-	public String[] GetSettingGroup()
-	{
-		//create table " + SettingTBL  + " (type  text, name text unique, cnt INTEGER, value text);";
-		String query = "select name, value from "+SettingTBL+" group by type;";
-		Cursor cursor = wdb.rawQuery(query, null);
-		String retval = "";
-		int count = 0;
-		while (cursor.moveToNext())
-		{
-			if (count == 0)
-				retval = cursor.getString(0);
-			else
-				retval += (define.DEVCTR_CMD_SPLITER+cursor.getString(0));
-			count++;
-		}
-
-		cursor.close();
-		if (count == 0) return null;
-		return retval.split(define.DEVCTR_CMD_SPLITER);
-	}
-
-	public List<String[]> GetSettingGroupData(String groupname)
-	{
-		//create table " + SettingTBL  + " (type  text, name text unique, cnt INTEGER, value text);";
-		String query = "select name, value from "+SettingTBL+" where type = \""+groupname+"\";";
-		Cursor cursor = wdb.rawQuery(query, null);
-		List<String[]> retVal = new ArrayList<String[]>();
-
-		while (cursor.moveToNext())
-		{
-			String retdata[] = new String[2];
-			retdata[0] = cursor.getString(0);
-			retdata[1] = cursor.getString(1);
-			retVal.add(retdata);
-		}
-		cursor.close();
-		return retVal;
-	}
-	public int GetGroupCount(String groupname)
-	{
-		String query = "select count() from "+SettingTBL+" where type = \""+groupname+"\";";
-		Cursor cursor = wdb.rawQuery(query, null);
-		int count = 0;
-		while (cursor.moveToNext())
-		{
-			count = cursor.getInt(0);
-		}
-		cursor.close();
-		return count;
-	}
-
-	public void DeleteGuardData()
-	{
-		try
-		{
-			String sqlStr = "DELETE FROM "+SettingTBL+" where type = \"guard_list\";";
-			wdb.execSQL(sqlStr);
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-        } catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-		}
-	}
-
-	public void DeleteGroupData(String groupName)
-	{
-		try
-		{
-			String sqlStr = "DELETE FROM "+SettingTBL+" where type = \""+groupName+"\";";
-			wdb.execSQL(sqlStr);
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-        } catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-		}
-	}
-
-	public long insertWallPADDB(String name, String Data)
-	{
-		ContentValues values = new ContentValues();
-		//private static final String CreateSubDeviceDB = "create table " + SubDeviceTBL  + " (id text unique, name  text, count text, enable text, lononoff text);";
-		values.put("id", name);
-		values.put("data", Data);
-		long ret = wdb.insert(SubDeviceTBL, null, values);
-
-		return ret;
-	}
-
-	private static Pattern mPattern = Pattern.compile("^(([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.){3}([01]?\\d\\d?|2[0-4]\\d|25[0-5])$");
-
-	/**
-	 * IP유효성 검사
-	 * @return boolean true = 이상없음, false = 문제있음
-	 * **/
-	public boolean Validate_IPAddress(String IPAddress)
-	{
-		try
-		{
-			Log.d(TAG, "[Validate_IPAddress] IPAddress [" + IPAddress + "]");
-			if (IPAddress == null) return false;
-			return mPattern.matcher(IPAddress).matches();
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			return false;
-        } catch (Exception e) {
-			Log.e(TAG, "[Exception] Validate_IPAddress(String IPAddress)");
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			return false;
-		}
-	}
-
-	//스마트키친 사용여부
-	public boolean Get_SmartKitchen_Use()
-	{
-		String[] GetData = GetSettingData("스마트키친");
-
-		boolean returnData = false;//DB에 값 없는 경우 사용안함으로 리턴
-		try
-		{
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = true;
-			else
-			{
-				returnData = false;
-				return returnData;
-			}
-
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = false;
-			return  returnData;
-        } catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = false;
-			return  returnData;
-		}
-	}
-
-	/**
-	 * 간편모드UX 지원 여부 (관리자용)
-	 * @return True일 경우 환결설정에 간편모드 UX 설정 추가
-	 */
-	public boolean Get_EasyModeUX_Support() {
-		String[] GetData = GetSettingData("간편모드UX지원");
-
-		boolean returnData = false;//DB에 값 없는 경우 사용안함으로 리턴
-		try
-		{
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = true;
-			else
-			{
-				returnData = false;
-				return returnData;
-			}
-
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = false;
-			return returnData;
-        } catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = false;
-			return returnData;
-		}
-	}
-
-	/**
-	 * 방문객원격통화 현관 문열림 기능 사용 여부
-	 * @return True일 경우 방문객원격통화 사용자 설정 팝업에 항목 추가
-	 */
-	public boolean Get_RemoteCall_DoorOpenUse() {
-		String[] GetData = GetSettingData("방문객원격통화-현관문열림");
-
-		boolean returnData = false;//DB에 값 없는 경우 사용안함으로 리턴
-		try
-		{
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = true;
-			else
-			{
-				returnData = false;
-				return returnData;
-			}
-
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = false;
-			return returnData;
-        } catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = false;
-			return returnData;
-		}
-	}
-
-	/**
-	 * 방문객원격통화 홈뷰어 기능 사용 여부
-	 * @return True일 경우 방문객원격통화 사용자 설정 팝업에 항목 추가
-	 */
-	public boolean Get_RemoteCall_HomeViewerUse() {
-		String[] GetData = GetSettingData("방문객원격통화-홈뷰어");
-
-		boolean returnData = false;//DB에 값 없는 경우 사용안함으로 리턴
-		try
-		{
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = true;
-			else
-			{
-				returnData = false;
-				return returnData;
-			}
-
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = false;
-			return returnData;
-        }
-		catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = false;
-			return returnData;
-		}
-	}
-
-	/**
-	 * 거동수상자녹화 사용 여부
-	 * @return True일 경우 거동수상자 발생시 거동수상자 녹화 시작
-	 */
-	public boolean Get_Stranger_RecordUse() {
-		String[] GetData = GetSettingData("거동수상자녹화");
-
-		boolean returnData = false;//DB에 값 없는 경우 사용안함으로 리턴
-		try
-		{
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = true;
-			else
-			{
-				returnData = false;
-				return returnData;
-			}
-
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = false;
-			return returnData;
-        } catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = false;
-			return returnData;
-		}
-	}
-
-	/**
-	 * 비상접점스위치 사용 여부
-	 */
-	public boolean Get_EmergencyContact_SwitchUse() {
-		String[] GetData = GetSettingData("비상접점스위치");
-
-		boolean returnData = false;//DB에 값 없는 경우 사용안함으로 리턴
-		try
-		{
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = true;
-			else
-			{
-				returnData = false;
-				return returnData;
-			}
-
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = false;
-			return returnData;
-        } catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = false;
-			return returnData;
-		}
-	}
-
-	/**
-	 * 서브폰 날씨정보 역순 전송 사용 여부
-	 */
-	public boolean Get_SendWeather_ReverseUse() {
-		String[] GetData = GetSettingData("서브폰날씨정보역순전송");
-
-		boolean returnData = false;//DB에 값 없는 경우 사용안함으로 리턴
-		try
-		{
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = true;
-			else
-			{
-				returnData = false;
-				return returnData;
-			}
-
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = false;
-			return returnData;
-        } catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = false;
-			return returnData;
-		}
-	}
-
-	/**
-	 * 안전가로등 사용유무 판별
-	 *
-	 * @return boolean 타입 - true:사용, false:미사용
-	 */
-	public boolean Get_SafeStreetLightUse() {
-		String[] GetData = GetSettingData(define.DEVICE_ID_SAFESTREETLIGHT);
-
-		boolean returnData = false;
-		try {
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = true;
-			else returnData = false;
-
-			return returnData;
-		} catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = false;
-			return  returnData;
-        } catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = false;
-			return  returnData;
-		}
-	}
-
-	/**
-	 * 욕실센서등 사용 여부
-	 */
-	public boolean Get_BathSensorUse() {
-		String[] GetData = GetSettingData("욕실센서등");
-
-		boolean returnData = false;//DB에 값 없는 경우 사용안함으로 리턴
-		try
-		{
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = true;
-			else
-			{
-				returnData = false;
-				return returnData;
-			}
-
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = false;
-			return returnData;
-        } catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = false;
-			return returnData;
-		}
-	}
-
-
-	/**=================================================================
-	 * 통화기능 설정
-	 * =================================================================*/
-	public boolean Get_FrontCallUse() {
-		String[] GetData = GetSettingData(define.DEVICE_ID_FRONT_CALL);
-
-		boolean returnData = true; // DB에 값 없는 경우 사용함으로 반환(초기값)
-		try {
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = true;
-			else returnData = false;
-
-			return returnData;
-		} catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = false;
-			return  returnData;
-        } catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = false;
-			return  returnData;
-		}
-	}
-
-	public boolean Get_LobbyCallUse() {
-		String[] GetData = GetSettingData(define.DEVICE_ID_LOBBY_CALL);
-
-		boolean returnData = true; // DB에 값 없는 경우 사용함으로 반환(초기값)
-		try {
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = true;
-			else returnData = false;
-
-			return returnData;
-		} catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = false;
-			return  returnData;
-        } catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = false;
-			return  returnData;
-		}
-	}
-
-	public boolean Get_GuardCallUse() {
-		String[] GetData = GetSettingData(define.DEVICE_ID_GUARD_CALL);
-
-		boolean returnData = true; // DB에 값 없는 경우 사용함으로 반환(초기값)
-		try {
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = true;
-			else returnData = false;
-
-			return returnData;
-		} catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = false;
-			return  returnData;
-        } catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = false;
-			return  returnData;
-		}
-	}
-
-	public boolean Get_ResidenceCallUse() {
-		String[] GetData = GetSettingData(define.DEVICE_ID_RESIDENCE_CALL);
-
-		boolean returnData = true; // DB에 값 없는 경우 사용함으로 반환(초기값)
-		try {
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = true;
-			else returnData = false;
-
-			return returnData;
-		} catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = false;
-			return  returnData;
-        } catch (Exception e) {
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = false;
-			return  returnData;
-		}
-	}
-
-	public boolean Get_PSTNCallUse() {
-		String[] GetData = GetSettingData(define.DEVICE_ID_PSTN_CALL);
-
-		boolean returnData = true; // DB에 값 없는 경우 사용함으로 반환(초기값)
-		try {
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = true;
-			else returnData = false;
-
-			return returnData;
-		} catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = false;
-			return  returnData;
-        } catch (Exception e) {
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = false;
-			return  returnData;
-		}
-	}
-
-	public boolean Get_CallHistoryUse() {
-		String[] GetData = GetSettingData(define.DEVICE_ID_CALLHISTOTY);
-
-		boolean returnData = true; // DB에 값 없는 경우 사용함으로 반환(초기값)
-		try {
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = true;
-			else returnData = false;
-
-			return returnData;
-		} catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = false;
-			return  returnData;
-        } catch (Exception e) {
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = false;
-			return  returnData;
-		}
-	}
-
-	public boolean Get_VisitorPicUse() {
-		String[] GetData = GetSettingData(define.DEVICE_ID_VISITORPIC);
-
-		boolean returnData = true; // DB에 값 없는 경우 사용함으로 반환(초기값)
-		try {
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = true;
-			else returnData = false;
-
-			return returnData;
-		} catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = false;
-			return  returnData;
-        } catch (Exception e) {
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = false;
-			return  returnData;
-		}
-	}
-
-	/**
-	 * 방문객원격통화 스트림 서버 WEB 포트 가져오는 함수
-	 *
-	 * @return 8089 or 8089
-	 */
-	public String Get_RemoteCallSvr_WebPort()
-	{
-		String[] GetData = GetSettingData(define.DEVICE_ID_REMOTECALLSVR_WEBPORT);
-
-		String returnData = "8089";
-		try
-		{
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0)
-			{
-				if (GetData[1].indexOf("(8088)") >0)
-				{
-					returnData = "8088";
-				}
-				else
-				{
-					returnData = "8089";
-				}
-			}
-			Log.d(TAG, "[Get_RemoteCallSvr_WebPort] returnData [" + returnData + "]");
-
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			return  returnData;
-        } catch (Exception e) {
-			LogUtil.errorLogInfo("", TAG, e);
-			return  returnData;
-		}
-	}
-
-	/**
-	 * 환기케어서비스QR 사용 유무
-	 * @author 신범식
-	 * @since
-	 **/
-	public boolean Get_VentiServiceQRUse() {
-		String[] GetData = GetSettingData(define.DEVICE_ID_VENTISERVICE_QR);
-
-		boolean returnData = false; // DB에 값 없는 경우 사용안함으로 반환(초기값)
-		try {
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = true;
-			else returnData = false;
-
-			return returnData;
-		} catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = false;
-			return  returnData;
-        } catch (Exception e) {
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = false;
-			return  returnData;
-		}
-	}
-
-	/**
-	 * 장애인세대 설정 유무
-	 **/
-	public boolean Get_TheDisabledHomeSet() {
-		String[] GetData = GetSettingData(define.DEVICE_ID_THEDISABLED_HOME);
-
-		boolean returnData = false; // DB에 값 없는 경우 사용함으로 반환(초기값)
-		try {
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = true;
-			else returnData = false;
-
-			return returnData;
-		} catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = false;
-			return  returnData;
-        } catch (Exception e) {
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = false;
-			return  returnData;
-		}
-	}
-
-	/**
-	 * 이산화탄소절감률 설정 유무
-	 **/
-	public boolean Get_CO2ReductionSet() {
-		String[] GetData = GetSettingData(define.DEVICE_ID_CO2_REDUCTION);
-
-		boolean returnData = false; // DB에 값 없는 경우 사용함으로 반환(초기값)
-		try {
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = true;
-			else returnData = false;
-
-			return returnData;
-		} catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = false;
-			return  returnData;
-        } catch (Exception e) {
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = false;
-			return  returnData;
-		}
-	}
-
-	public static final int HEATONEDEVICE_NONE  			= 80;
-	public static final int HEATONEDEVICE_VENTI  			= 81;
-	public static final int HEATONEDEVICE_LIGHT  			= 82;
-	public static final int HEATONEDEVICE_VENTILIGHT  		= 83;
-
-	/**
-	 * 난방일체형 설정정보 가져오기
-	 * @return int 타입 - 80(사용안함), 81(난방환기), 82(난방조명), 83(난방환기조명)
-	 */
-	public int Get_HeatOneDevice_Use() {
-		String[] GetData = GetSettingData("난방일체형");
-		try {
-			if (GetData != null) {
-				String devInfo = GetData[1];
-				devInfo = devInfo.replace('(', '_');
-				devInfo = devInfo.replace(':', '_');
-				devInfo = devInfo.replace(')', '_');
-
-				String[] parseData = devInfo.split("_");
-
-				//[0] - 기기번호
-				//[1] - 회로수
-				//[2] - 기기이름
-				//[3] - 사용유무 (사용함 or 사용안함)------------> 사용할 정보
-				//[4] - 명칭 (종류)
-				//[5] - 명칭에 대한 정보 ----------------------> 사용할 정보, ','로 구분됨
-				if (parseData[3].equals("사용함") == true) {
-					String TempData = parseData[5];
-					if (TempData != null) {
-						if (TempData.equals("난방환기")) {
-							Log.d(TAG, "난방일체형: 난방환기");
-							return HEATONEDEVICE_VENTI;
-						} else if (TempData.equals("난방조명")) {
-							Log.d(TAG, "난방일체형: 난방조명");
-							return HEATONEDEVICE_LIGHT;
-						} else if (TempData.equals("난방환기조명")) {
-							Log.d(TAG, "난방일체형: 난방환기조명");
-							return HEATONEDEVICE_VENTILIGHT;
-						} else {
-							Log.d(TAG, "난방일체형: 미정의");
-						}
-					}
-				}
-			}
-		} catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-        } catch (Exception e) {
-			Log.e(TAG, "[Exception] Get_HeatOneDevice_Use()");
-			LogUtil.errorLogInfo("", TAG, e);
-		}
-		return HEATONEDEVICE_NONE;
-	}
-
-	public static final int SMARTSWITCH_ENERGY_NONE  			= 90;
-	public static final int SMARTSWITCH_ENERGY_REALTIME  		= 91;
-	public static final int SMARTSWITCH_ENERGY_REMOTE			= 92;
-
-	/**
-	 * 스마트스위치 에너지정보 설정정보 가져오기
-	 * @return int 타입 - 90(사용안함), 91(실시간검침기), 92(원격검침기)
-	 */
-	public int Get_SmartSwitchEnergy_Kind() {
-		String[] GetData = GetSettingData("스마트스위치에너지종류");
-		try {
-			if (GetData != null) {
-				String devInfo = GetData[1];
-				devInfo = devInfo.replace('(', '_');
-				devInfo = devInfo.replace(':', '_');
-				devInfo = devInfo.replace(')', '_');
-
-				String[] parseData = devInfo.split("_");
-
-				//[0] - 기기번호
-				//[1] - 회로수
-				//[2] - 기기이름
-				//[3] - 사용유무 (사용함 or 사용안함)------------> 사용할 정보
-				//[4] - 명칭 (종류)
-				//[5] - 명칭에 대한 정보 ----------------------> 사용할 정보, ','로 구분됨
-				if (parseData[3].equals("사용함") == true) {
-					String TempData = parseData[5];
-					if (TempData != null) {
-						if (TempData.equals("실시간검침기")) {
-							Log.d(TAG, "[Get_SmartSwitchEnergy_Kind] 스마트스위치 에너지 종류: 실시간검침기");
-							return SMARTSWITCH_ENERGY_REALTIME;
-						} else if (TempData.equals("원격검침기")) {
-							Log.d(TAG, "[Get_SmartSwitchEnergy_Kind] 스마트스위치 에너지 종류: 원격검침기");
-							return SMARTSWITCH_ENERGY_REMOTE;
-						} else {
-							Log.d(TAG, "[Get_SmartSwitchEnergy_Kind] 스마트스위치 에너지 종류: 미정의");
-						}
-					}
-				}
-			}
-		} catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-        } catch (Exception e) {
-			Log.e(TAG, "[Exception] Get_SmartSwitchEnergy_Kind()");
-			LogUtil.errorLogInfo("", TAG, e);
-		}
-		return SMARTSWITCH_ENERGY_NONE;
-	}
-
-	public static final int LCDKEEPER_NONE = 100;
-	public static final int LCDKEEPER_PROTECT = 101;
-	public static final int LCDKEEPER_RECOVER = 102;
-	public static final int LCDKEEPER_PROTECT_RECOVER = 103;
-
-	/**
-	 * LCD Keeper 사용여부 확인
-	 * @return LCDKEEPER_NONE - 사용안함(100), LCDKEEPER_PROTECT - 보호모드(101), LCDKEEPER_RECOVER - 복구모드(102), LCDKEEPER_PROTECT_RECOVER - 보호/복구모드 (103)
-	 */
-	public int getLCDKeeperUsage() {
-		int returnData = LCDKEEPER_NONE;
-		try {
-			String[] GetData = GetSettingData(define.DEVICE_ID_LCDKEEPER);
-			if (GetData == null) return returnData;
-			if (GetData[1].indexOf("사용함") > 0) {
-				if (GetData[1].indexOf("(보호모드)") > 0) {
-					returnData = LCDKEEPER_PROTECT;
-				} else if (GetData[1].indexOf("(복구모드)") > 0) {
-					returnData = LCDKEEPER_RECOVER;
-				} else if (GetData[1].indexOf("(보호/복구모드)") > 0) {
-					returnData = LCDKEEPER_PROTECT_RECOVER;
-				}
-			}
-			Log.d(TAG, "[getLCDKeeperUsage] LCDKeeperUsage [" + returnData + "]");
-		} catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-        } catch (Exception e) {
-			LogUtil.errorLogInfo("", TAG, e);
-		}
-		return returnData;
-	}
-
-	public static final int POWERCONTROLLER_TYPE_NONE 		= 110;
-	public static final int POWERCONTROLLER_TYPE_DEFAULT    = 111;
-	public static final int POWERCONTROLLER_TYPE_DIRECT     = 112;
-	public static final int POWERCONTROLLER_TYPE_MEASURE    = 113;
-
-	public static final String POWER_CONTROLLER_TYPE_DEFAULT = "기본";
-	public static final String POWER_CONTROLLER_TYPE_DIRECT = "직결보드";
-	public static final String POWER_CONTROLLER_TYPE_MEASURE = "전력측정직결보드";
-
-	/**
-	 * 통합전력제어기 종류를 가져온다.<br>
-	 * @return int 타입
-	 *  - POWERCONTROLLER_TYPE_NONE : 사용안함(110),
-	 *  - POWERCONTROLLER_TYPE_DEFAULT : 기본(111),
-	 *  - POWERCONTROLLER_TYPE_DIRECT : 직결보드(112)
-	 *  - POWERCONTROLLER_TYPE_MEASURE : 전력측정직결보드(113)
-	 */
-	public int Get_PowerControllerType_Info() {
-		String[] GetData = GetSettingData("통합전력제어기");
-
-		int returnData = 0;
-		try {
-			Log.d(TAG, "Get_PowerControllerType_Info");
-			String[] DataInfo = GetSettingData("통합전력제어기");
-			if (DataInfo == null) {
-				Log.w(TAG, "GetSettingData(통합전력제어기) is null");
-
-				DataInfo = GetSettingData("통합전력제어기");
-				if (DataInfo != null) {
-					for (int i = 0; i < DataInfo.length; i++) {
-						Log.i(TAG, "[Get_PowerControllerType_Info] null -> default : " + DataInfo[i]);
-					}
-				}
-				else {
-					return -3;
-				}
-			}
-
-			String devInfo = DataInfo[1];
-
-			devInfo = devInfo.replace('(', '_');
-			devInfo = devInfo.replace(':', '_');
-			devInfo = devInfo.replace(')', '_');
-
-			String[] parseData = devInfo.split("_");
-			if (parseData[3].equals("사용함") == true) {
-				String TempData = parseData[5];
-
-				if (TempData == null) {
-					Log.e(TAG, "TempData is null");
-					return -3;
-				}
-
-				if (TempData.equals(POWER_CONTROLLER_TYPE_DIRECT)) {
-					Log.d(TAG, "통합전력제어기 종류 : 직결보드");
-					return POWERCONTROLLER_TYPE_DIRECT;
-				}
-				else if (TempData.equals(POWER_CONTROLLER_TYPE_MEASURE)) {
-					Log.d(TAG, "통합전력제어기 종류 : 전력측정 직결보드");
-					return POWERCONTROLLER_TYPE_MEASURE;
-				}
-				else {
-					Log.d(TAG, "통합전력제어기 종류 : 기본");
-					return POWERCONTROLLER_TYPE_DEFAULT;
-				}
-			}
-			else {
-				Log.d(TAG, "통합전력제어기 종류 : 사용안함");
-				return POWERCONTROLLER_TYPE_NONE;
-			}
-		} catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			return POWERCONTROLLER_TYPE_NONE;
-        } catch (Exception e) {
-			LogUtil.errorLogInfo("", TAG, e);
-			return POWERCONTROLLER_TYPE_NONE;
-		}
-	}
-
-	/**
-	 * LH게이트웨이 사용 여부 확인
-	 **/
-	public boolean Get_LH_Gateway_Use() {
-		String[] GetData = GetSettingData(define.DEVICE_ID_LH_GATEWAY);
-
-		boolean returnData = false; // DB에 값 없는 경우 사용안함으로 반환(초기값)
-		try {
-			if (GetData == null) {
-				Log.w(TAG, "[Get_LH_Gateway_Use] GetData is null!!!");
-				return returnData;
-			}
-
-//			Log.w(TAG, "[Get_LH_Gateway_Use] GetData[1] [" + GetData[1] + "]");
-			if (GetData[1].indexOf("사용함") > 0) returnData = true;
-			else returnData = false;
-
-			return returnData;
-		} catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = false;
-			return  returnData;
-        } catch (Exception e) {
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = false;
-			return  returnData;
-		}
-	}
-
-	public static final int ESCAPELADDER_DOWN_SEND_NONE = 120;
-	public static final int ESCAPELADDER_DOWN_SEND_UPPER = 121; // 윗집
-	public static final int ESCAPELADDER_DOWN_SEND_BELOW = 122; // 아랫집
-
-	/**
-	 * 피난사다리 전송 방향 확인
-	 * @return ESCAPELADDER_DOWN_SEND_NONE - 사용안함(120), ESCAPELADDER_DOWN_SEND_UPPER - 윗집(121), ESCAPELADDER_DOWN_BELOW - 아랫집(122)
-	 */
-	public int getEscapeLadderDownSend() {
-		int returnData = ESCAPELADDER_DOWN_SEND_NONE;
-		try {
-			String[] GetData = GetSettingData(define.DEVICE_ID_ESCAPELADDER_DOWN_SEND);
-			if (GetData == null) return returnData;
-			if (GetData[1].indexOf("사용함") > 0) {
-				if (GetData[1].indexOf(define.DEVICE_ID_UPPER) > 0) {
-					returnData = ESCAPELADDER_DOWN_SEND_UPPER;
-				} else if (GetData[1].indexOf(define.DEVICE_ID_BELOW) > 0) {
-					returnData = ESCAPELADDER_DOWN_SEND_BELOW;
-				}
-			}
-			Log.d(TAG, "[getEscapeLadderDownSend] returnData [" + returnData + "]");
-		} catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-        } catch (Exception e) {
-			LogUtil.errorLogInfo("", TAG, e);
-		}
-		return returnData;
-	}
-
-	/**
-	 * 피난사다리 전송 방향 설정
-	 * @param nValue 전송 방향
-	 * @return 성공여부
-	 */
-	public boolean setEscapeLadderDownSend(int nValue) {
-		try {
-			Log.i(TAG, "[setEscapeLadderDownSend] nValue: " + nValue);
-			String strEscapeLadderSend = "사용안함";
-			String strSettingValue = "1(1:" + define.DEVICE_ID_ESCAPELADDER_DOWN_SEND + "(" + define.DEVICE_DISABLE + ")";
-
-			if (nValue == ESCAPELADDER_DOWN_SEND_NONE) {
-				strEscapeLadderSend = define.DEVICE_DISABLE;
-			}
-			else if (nValue == ESCAPELADDER_DOWN_SEND_UPPER) {
-				strEscapeLadderSend = define.DEVICE_ID_UPPER;
-			}
-			else if (nValue == ESCAPELADDER_DOWN_SEND_BELOW) {
-				strEscapeLadderSend = define.DEVICE_ID_BELOW;
-			}
-			else {
-				Log.w(TAG, "[setEscapeLadderDownSend] Unsupported EscapeLadderSend type: " + nValue);
-				return false;
-			}
-
-			if (strEscapeLadderSend.equalsIgnoreCase(define.DEVICE_DISABLE)) {
-				strSettingValue = "1(1:" + define.DEVICE_ID_ESCAPELADDER_DOWN_SEND + "(" + define.DEVICE_DISABLE + ")";
-			}
-			else {
-				strSettingValue = "1(1:" + define.DEVICE_ID_ESCAPELADDER_DOWN_SEND + "(" + define.DEVICE_ENABLE + ")종류(" + strEscapeLadderSend + ")";
-			}
-
-			Log.i(TAG, "[setEscapeLadderDownSend] strSettingValue: " + strSettingValue);
-
-			UpdateSettingData("subdev_list", define.DEVICE_ID_ESCAPELADDER_DOWN_SEND, 0, strSettingValue);
-
-			return true;
-		} catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			return false;
-        } catch (Exception e) {
-			Log.e(TAG, "[Exception] setEscapeLadderDownSend(int nValue)");
-			LogUtil.errorLogInfo("", TAG, e);
-			return false;
-		}
-	}
-
-
-	/**
-	 * 카카오 사용 여부 가져오기
-	 * @return
-	 */
-	public boolean Get_KakaoUse()
-	{
-		String[] GetData = GetSettingData(define.DEVICE_ID_KAKAO);
-		//기본값이 false이기 때문에 이렇게 설정
-		boolean returnData = false;
-		try
-		{
-			if (GetData == null) return returnData;
-			if (GetData[1].indexOf("사용함") > 0) returnData = true;
-			else
-			{
-				returnData = false;
-				return returnData;
-			}
-
-			return returnData;
-		}
-		catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = false;
-			return  returnData;
-        } catch (Exception e)
-		{
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = false;
-			return  returnData;
-		}
-	}
-
-
-	/**
-	 * 카카오 옵션을 사용하는 경우, 카카오 UI를 Show/Hide 설정
-	 * @return
-	 */
-	public boolean Get_KakaoShow()
-	{
-		boolean returnData = false;
-		try
-		{
-			if(Get_KakaoUse())
-			{
-				//화면에 볼지 안볼지를 설정
-				String[] GetData = GetSettingData(define.DEVICE_ID_KAKAO_SHOW);
-				//초기값이 true임
-				if (GetData == null) returnData = true;
-				else
-				{
-					if (GetData[1].indexOf("사용함") > 0) returnData = true;
-				}
-			}
-		}
-		catch (NullPointerException e)
-		{
-			LogUtil.errorLogInfo("", TAG, e);
-		}
-
-		return returnData;
-	}
-
-
-	/**
-	 * 카카오 홈 Show/Hide 설정
-	 * @param value Show/Hide 값
-	 * @return 성공 시 true 값 반환, 실패 시 false값 반환
-	 */
-	public boolean Set_KakaoShow(boolean value)
-	{
-		try {
-			Log.i(TAG, "[Set_KakaoShow] nValue: " + value);
-			String strKakaoshow = "사용";
-			String strSettingValue = "1(1:" + define.DEVICE_ID_KAKAO_SHOW + "(" + define.DEVICE_ENABLE + ")";
-
-			if (value) {
-				strSettingValue = "1(1:" + define.DEVICE_ID_KAKAO_SHOW + "(" + define.DEVICE_ENABLE + ")";
-			}
-			else {
-				strSettingValue = "1(1:" + define.DEVICE_ID_KAKAO_SHOW + "(" + define.DEVICE_DISABLE + ")";
-			}
-
-			Log.i(TAG, "[Set_KakaoShow] strSettingValue: " + strSettingValue);
-
-			UpdateSettingData("subdev_list", define.DEVICE_ID_KAKAO_SHOW, 0, strSettingValue);
-
-			return true;
-		} catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			return false;
-        } catch (Exception e) {
-			Log.e(TAG, "[Exception] setEscapeLadderDownSend(int nValue)");
-			LogUtil.errorLogInfo("", TAG, e);
-			return false;
-		}
-	}
-
-	/**
-	 * 스마트현관카메라 좌우반전 사용 유무
-	 **/
-	public boolean Get_SmartIOTCamFlipUse() {
-		String[] GetData = GetSettingData(define.DEVICE_ID_SMARTIOTCAM_FLIP);
-
-		boolean returnData = false; // DB에 값 없는 경우 사용안함으로 반환(초기값)
-		try {
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = true;
-			else returnData = false;
-
-			return returnData;
-		} catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-			returnData = false;
-			return  returnData;
-        } catch (Exception e) {
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = false;
-			return  returnData;
-		}
-	}
-
-	public static final int CONSTRUCTION_SPECIAL_FUNCTION_NONE = 130;
-	public static final int CONSTRUCTION_SPECIAL_FUNCTION_SK = 131; // SK건설
-	public static final int CONSTRUCTION_SPECIAL_FUNCTION_DW = 132; // 대우건설
-
-	/**
-	 * 건설사 특화기능 종류 확인
-	 * @return CONSTRUCTION_SPECIAL_FUNCTION_NONE - 사용안함(130), CONSTRUCTION_SPECIAL_FUNCTION_SK - SK건설(131), CONSTRUCTION_SPECIAL_FUNCTION_DW - 대우건설(132)
-	 */
-	public int Get_Construction_SpecialFunc()
-	{
-		String[] GetData = GetSettingData(define.DEVICE_ID_CONSTRUCTION_SPECIAL_FUNC);
-
-		int returnData = CONSTRUCTION_SPECIAL_FUNCTION_NONE;
-		try
-		{
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0)
-			{
-				if (GetData[1].indexOf("SK건설") > 0)
-				{
-					returnData = CONSTRUCTION_SPECIAL_FUNCTION_SK;
-				}
-				else if (GetData[1].indexOf("대우건설") > 0)
-				{
-					returnData = CONSTRUCTION_SPECIAL_FUNCTION_DW;
-				}
-			}
-			Log.d(TAG, "[Get_Construction_SpecialFunc] returnData [" + returnData + "]");
-
-			return returnData;
-		}
-		catch (RuntimeException re) {
-			LogUtil.errorLogInfo("", TAG, re);
-			return  returnData;
-		} catch (Exception e) {
-			LogUtil.errorLogInfo("", TAG, e);
-			return  returnData;
-		}
-	}
-
-	/**
-	 * 제어기능 사용 유무
-	 **/
-	public boolean Get_MainGUICtrlUse() {
-		String[] GetData = GetSettingData(define.DEVICE_ID_MAIN_GUI_CTRL_USE);
-
-		boolean returnData = true; // DB에 값 없는 경우 사용함으로 반환(초기값)
-		try {
-			if (GetData == null) return returnData;
-
-			if (GetData[1].indexOf("사용함") > 0) returnData = true;
-			else returnData = false;
-
-			return returnData;
-		} catch (RuntimeException re) {
-			LogUtil.errorLogInfo("", TAG, re);
-			returnData = false;
-			return  returnData;
-		} catch (Exception e) {
-			LogUtil.errorLogInfo("", TAG, e);
-			returnData = false;
-			return  returnData;
-		}
-	}
-
-}
+package com.artncore.WallPadDataMgr;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.Cursor;
+import android.util.Log;
+
+import com.artncore.commons.define;
+import com.util.LogUtil;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Pattern;
+
+import kr.co.icontrols.wallpadsupport.Version;
+
+
+public class WallpadDeviceSet extends wallpaddbmgr {
+
+	private final String TAG = "WallpadDeviceSet";
+
+	public WallpadDeviceSet(Context ctx) {
+		super(ctx);
+		if (!CheckTableExist(SettingTBL)) {
+			try {
+				if(wdb!=null)  wdb.execSQL(CreateSetSettingDB);
+			} catch (RuntimeException re) {
+				LogUtil.errorLogInfo("", TAG, re);
+			} catch (Exception e) {
+				//e.printStackTrace();
+				LogUtil.errorLogInfo("", TAG, e);
+			}
+		}
+
+		if (!CheckTableExist(SubDeviceTBL)) {
+			try {
+				if(wdb!=null) wdb.execSQL(CreateSubDeviceDB);
+				initSubDeviceTBL();
+			} catch (RuntimeException re) {
+				LogUtil.errorLogInfo("", TAG, re);
+			} catch (Exception e) {
+				//e.printStackTrace();
+				LogUtil.errorLogInfo("", TAG, e);
+			}
+		}
+	}
+
+	/* - ANC 이전 자료 - */
+	public static final String DEV_ID_THERMO     = "thermostat";
+	public static final String DEV_ID_LIGHT      = "light";
+	public static final String DEV_ID_GAS        = "gas";
+	public static final String DEV_ID_BATCHLIGHT = "batchlight";
+	public static final String DEV_ID_CURTAIN    = "curtain";
+	public static final String DEV_ID_VENTIL     = "ventil";
+	public static final String DEV_ID_DOORLOCK   = "doorlock";
+	public static final String DEV_ID_AIRCON     = "aircon";
+	public static final String DEV_ID_REMOTEMETER= "RemoteMeter";
+	public static final String DEV_ID_RFDOORCAM  = "RfDoorCam";
+	public static final String DEV_ID_REMOTECON  = "Remotecon";
+	public static final String DEV_ID_SUBPHONE   = "subphone";
+	public static final String DEV_ID_SMARTSW    = "SmartSwitch";
+
+	public static final String DEV_ENABLE  = "enable";
+	public static final String DEV_DISABLE = "disable";
+
+	//       id text unique, name  text, devcnt text, cnt text, loc text, enable text, lononoff text
+	private static String[][] SubDevInitData = null;
+
+	private static void Init_SubDevInitData()
+	{
+		String[][] temp_SubDevInitData = new String[][] {
+			{DEV_ID_THERMO,      "온도조절기",  "1", "0", "각방",    DEV_ENABLE,   DEV_ENABLE},
+			{DEV_ID_LIGHT,       "조명제어기",  "1", "0", "거실",   DEV_ENABLE,   DEV_ENABLE},
+			{DEV_ID_GAS,         "가스밸브",   "1", "0", "주방",    DEV_ENABLE,   DEV_ENABLE},
+			{DEV_ID_BATCHLIGHT,  "일괄소등",   "1", "0", "none",   DEV_ENABLE,   DEV_ENABLE},
+			{DEV_ID_CURTAIN,     "전동커튼",   "1", "0",  "none",   DEV_DISABLE,  DEV_ENABLE},
+			{DEV_ID_VENTIL,      "환기시스템",  "1", "0",  "none",   DEV_ENABLE,   DEV_ENABLE},
+			{DEV_ID_DOORLOCK,    "디지털도어락","1", "0",  "none",   DEV_DISABLE,  DEV_ENABLE},
+			{DEV_ID_AIRCON,      "시스템에어컨","1", "0",  "none",   DEV_DISABLE,  DEV_ENABLE},
+			{DEV_ID_REMOTEMETER, "원격검침",   "1", "0",  "none",   DEV_DISABLE,  DEV_ENABLE},
+			{DEV_ID_RFDOORCAM,   "RF도어캠",  "1", "0",  "none",   DEV_DISABLE,  DEV_ENABLE},
+			{DEV_ID_REMOTECON,   "리모콘",    "1", "0",  "none",   DEV_DISABLE,  DEV_ENABLE},
+			{DEV_ID_SUBPHONE,    "서브폰",    "1", "0",  "none",   DEV_ENABLE,  DEV_ENABLE},
+			{DEV_ID_SMARTSW,     "스마트스위치", "1", "0",  "none",   DEV_DISABLE,  DEV_ENABLE}
+		};
+
+		SubDevInitData = new String[temp_SubDevInitData.length][temp_SubDevInitData[0].length];
+		for(int i=0; i<temp_SubDevInitData.length; i++) {
+			for(int j=0; j<temp_SubDevInitData[i].length; j++) {
+				SubDevInitData[i][j] = temp_SubDevInitData[i][j];
+			}
+		}
+	}
+
+
+	/* - ANC 이전 자료 - */
+
+	public static final int DO_NOT_USE = 0;
+	public static final int DO_USE = 1;
+
+
+	public static final int LIGHT_TYPE_LIVING = 11;
+	public static final int LIGHT_TYPE_ROOM   = 12;
+	public static final int LIGHT_TYPE_HDC_INTLIGHT_NORMAL         = 15;
+	public static final int LIGHT_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT = 16;
+	public static final int LIGHT_TYPE_ZEROENERGY_ENERGYMETER = 17;
+	public static final int LIGHT_TYPE_SMART_DISTRIBUTION = 18;
+	public static final int LIGHT_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT_MULTISWITCH = 19;
+	public static final String LIGHT_CONTROLLER_TYPE_LIVING_ROOM = "대외기본형";
+	public static final String LIGHT_CONTROLLER_TYPE_ROOMS = "대외각실형";
+	public static final String LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_NORMAL = "현산향일체형조명기본형";
+	public static final String LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT = "현산향일체형조명일괄소등병합형";
+	public static final String LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT_MULTISWITCH = "현산향일체형조명일괄소등병합형_멀티스위치";
+	public static final String LIGHT_CONTROLLER_TYPE_SMART_DISTRIBUTION = "스마트분전반조명";
+
+	public int mModelType = Version.getModelType();
+
+	public int[] Get_Light_info() {
+		String[] GetData = GetSettingData("조명제어기");
+		int[] returnData = {1,LIGHT_TYPE_LIVING, 6};
+		if (mModelType == Version.MODEL_TYPE.IHN_1020GL) {
+			returnData[1] = LIGHT_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT;
+			returnData[2] = 5;
+		}
+
+		try {
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) {
+				returnData[0] = 1;
+			}
+			else {
+				returnData[0] =0;
+				return returnData;
+			}
+
+			if (mModelType == Version.MODEL_TYPE.IHN_1020GL) {
+				if (GetData[1].indexOf("현산향일체형조명기본형") > 0) returnData[1] = LIGHT_TYPE_HDC_INTLIGHT_NORMAL;
+				else if(GetData[1].indexOf("스마트분전반조명") > 0)  returnData[1] = LIGHT_TYPE_SMART_DISTRIBUTION;
+				else returnData[1] = LIGHT_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT;
+			}
+			else if (mModelType == Version.MODEL_TYPE.IHN_D101 || mModelType == Version.MODEL_TYPE.IHN_D101_I
+					|| mModelType == Version.MODEL_TYPE.IHN_D101K || mModelType == Version.MODEL_TYPE.IHN_D101K_I
+					|| mModelType == Version.MODEL_TYPE.IHN_1010GL || mModelType == Version.MODEL_TYPE.IHN_1010GL_I)
+			{
+				if (GetData[1].indexOf("현산향일체형조명기본형") > 0) returnData[1] = LIGHT_TYPE_HDC_INTLIGHT_NORMAL;
+				else if (GetData[1].indexOf("현산향일체형조명일괄소등병합형_멀티스위치") > 0) returnData[1] = LIGHT_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT_MULTISWITCH;
+				else if (GetData[1].indexOf("현산향일체형조명일괄소등병합형") > 0) returnData[1] = LIGHT_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT;
+				else if (GetData[1].indexOf("대외각실형") > 0) returnData[1] = LIGHT_TYPE_ROOM;
+				else if (GetData[1].indexOf("대외기본형") > 0) returnData[1] = LIGHT_TYPE_LIVING;
+				//else returnData[1] = LIGHT_TYPE_LIVING;
+			}
+			else {
+				if (GetData[1].indexOf("대외각실형") > 0) returnData[1] = LIGHT_TYPE_ROOM;
+				else returnData[1] = LIGHT_TYPE_LIVING;
+			}
+			String GetCount = (GetData[1].split("[(]")[1]).split("[:]")[0];
+			GetCount = GetCount.trim();
+
+			returnData[2] = Integer.parseInt(GetCount);
+			return returnData;
+		} catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			return  returnData;
+        } catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			//returnData = new int[]{1,LIGHT_TYPE_LIVING, 6};
+			return  returnData;
+		}
+	}
+
+	/**
+	 * 조명제어기 설정 함수
+	 * @param nValue 조명제어기 종류 (현산향일체형조명기본형 , 스마트분전반조명, 현산향일체형조명일괄소등병합형, 현산향일체형조명일괄소등병합형_멀티스위치, 대외각실형, 대외기본형)
+	 * @return true: 성공, false: 실패
+	 */
+	public boolean Set_LightingControllerType(int nValue) {
+		try {
+			Log.i(TAG, "[Set_LightingControllerType] nValue: " + nValue);
+			String strLightingControllerType = BLE_SMARTKEY_TYPE_NONUSE;
+			String strSettingValue = "1(1:" + define.DEVICE_ID_BLE_SMARTKEY + "(" + define.DEVICE_DISABLE + ")";
+
+			if (nValue == DO_NOT_USE) {
+				strLightingControllerType = define.DEVICE_DISABLE;
+			}
+			else if (nValue == LIGHT_TYPE_LIVING) {
+				strLightingControllerType = LIGHT_CONTROLLER_TYPE_LIVING_ROOM;
+			}
+			else if (nValue == LIGHT_TYPE_ROOM) {
+				strLightingControllerType = LIGHT_CONTROLLER_TYPE_ROOMS;
+			}
+			else if (nValue == LIGHT_TYPE_HDC_INTLIGHT_NORMAL) {
+				strLightingControllerType = LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_NORMAL;
+			}
+			else if (nValue == LIGHT_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT) {
+				strLightingControllerType = LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT;
+			}
+			else if (nValue == LIGHT_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT_MULTISWITCH) {
+				strLightingControllerType = LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT_MULTISWITCH;
+			}
+			else if (nValue == LIGHT_TYPE_SMART_DISTRIBUTION) {
+				strLightingControllerType = LIGHT_CONTROLLER_TYPE_SMART_DISTRIBUTION;
+			}
+			else {
+				Log.w(TAG, "[Set_LightingControllerType] Unsupported LightingController tyep: " + nValue);
+				return false;
+			}
+
+			if (strLightingControllerType.equalsIgnoreCase(define.DEVICE_DISABLE)) {
+				strSettingValue = "1(1:" + define.DEVICE_ID_LIGHT + "(" + define.DEVICE_DISABLE + ")";
+			}
+			else {
+				if (Version.getModelType() == Version.MODEL_TYPE.IHN_1010GL || Version.getModelType() == Version.MODEL_TYPE.IHN_1010GL_I)
+					strSettingValue = "1(3:" + define.DEVICE_ID_LIGHT + "(" + define.DEVICE_ENABLE + ")종류(" + strLightingControllerType + ")";
+				else strSettingValue = "1(1:" + define.DEVICE_ID_LIGHT + "(" + define.DEVICE_ENABLE + ")종류(" + strLightingControllerType + ")";
+			}
+
+
+			Log.i(TAG, "[Set_LightingControllerType] strSettingValue: " + strSettingValue);
+
+			UpdateSettingData("subdev_list", define.DEVICE_ID_LIGHT, 0, strSettingValue);
+
+			return true;
+		} catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			return false;
+        } catch (Exception e) {
+			Log.e(TAG, "[Exception] Set_LightingControllerType(int nValue)");
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			return false;
+		}
+	}
+
+
+
+	public static final int BATCH_TYPE_GENERAL       = 21; //대외향일괄소등제어기 + 3로조명확장스위치 (id 검색하여 해당 드라이버 로딩)
+	public static final int BATCH_TYPE_SMART         = 22; //대외향스마트스위치 - iSS-201
+	public static final int BATCH_TYPE_HDC_OLD_SMART = 25; //현산향스마트스위치 - iSS-101
+	public static final int BATCH_TYPE_HDC_LCD_SMART = 26; //현산향스마트스위치 - iSS-430
+
+	/**
+	 * @description
+	 * 일괄소등스위치 or 스마트스위치 설정정보 가져오기
+	 * @return int[0] - 0: 사용안함, 1:사용함<br>
+	 * int[1] - 제품 종류<br>
+	 * BATCH_TYPE_GENERAL:        대외향일괄소등제어기 <br>
+	 * BATCH_TYPE_SMART:          대외향스마트스위치(iSS-201)<br>
+	 * BATCH_TYPE_HDC_OLD_SMART:  현산향스마트스위치(iSS-101)<br>
+	 *  BATCH_TYPE_HDC_LCD_SMART: 현산향스마트스위치(iSS-430)<br>
+	 * int[2] - L1설정 <br>
+	 * int[3] - L2설정
+	 */
+	public int[] Get_BatchSW_Info() {
+		String[] GetData = GetSettingData("스마트스위치&일괄소등");
+
+		int[] returnData = {1, BATCH_TYPE_SMART, 3, 4};
+
+		if (mModelType == Version.MODEL_TYPE.IHN_D101 || mModelType == Version.MODEL_TYPE.IHN_D101_I
+				|| mModelType == Version.MODEL_TYPE.IHN_D101K || mModelType == Version.MODEL_TYPE.IHN_D101K_I
+				|| mModelType == Version.MODEL_TYPE.IHN_1010GL || mModelType == Version.MODEL_TYPE.IHN_1010GL_I
+				|| mModelType == Version.MODEL_TYPE.IHN_1020GL)
+		{
+			returnData[0] = 1;
+			returnData[1] = BATCH_TYPE_HDC_LCD_SMART;
+			returnData[2] = 3;
+			returnData[3] = 4;
+		}
+		else {
+			returnData[0] = 1;
+			returnData[1] = BATCH_TYPE_SMART;
+			returnData[2] = 3;
+			returnData[3] = 4;
+		}
+
+		try {
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) {
+				returnData[0] = 1;
+			}
+			else {
+				returnData[0] = 0;
+				return returnData;
+			}
+
+			if (mModelType == Version.MODEL_TYPE.IHN_D101 || mModelType == Version.MODEL_TYPE.IHN_D101_I
+					|| mModelType == Version.MODEL_TYPE.IHN_D101K || mModelType == Version.MODEL_TYPE.IHN_D101K_I
+					|| mModelType == Version.MODEL_TYPE.IHN_1010GL || mModelType == Version.MODEL_TYPE.IHN_1010GL_I
+					|| mModelType == Version.MODEL_TYPE.IHN_1020GL)
+			{
+				if (GetData[1].indexOf("현산향스마트스위치") > 0) returnData[1] = BATCH_TYPE_HDC_OLD_SMART;
+				else if (GetData[1].indexOf("현산향LCD스마트스위치") > 0) returnData[1] = BATCH_TYPE_HDC_LCD_SMART;
+				else {
+					returnData[0] = 0;
+					return returnData;
+				}
+			}
+			else {
+				if (GetData[1].indexOf("대외향스마트스위치") > 0) returnData[1] = BATCH_TYPE_SMART;
+				else if (GetData[1].indexOf("대외향일괄소등제어기") > 0) returnData[1] = BATCH_TYPE_GENERAL;
+				else if (GetData[1].indexOf("현산향스마트스위치") > 0) returnData[1] = BATCH_TYPE_HDC_OLD_SMART;
+				else {
+					returnData[0] = 0;
+					return returnData;
+				}
+			}
+
+			String L1 = (GetData[1].split("L1설정")[1]).split("L2설정")[0];
+			L1 = L1.replace("("," ");
+			L1 = L1.replace(")"," ");
+			L1 = L1.trim();
+			String L2 = (GetData[1].split("L1설정")[1]).split("L2설정")[1];
+			L2 = L2.replace("("," ");
+			L2 = L2.replace(")"," ");
+			L2 = L2.trim();
+
+
+			returnData[2] = Integer.parseInt(L1);
+			returnData[3] = Integer.parseInt(L2);
+			return returnData;
+		} catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = new int[]{0,BATCH_TYPE_SMART, 1,2};
+			return  returnData;
+        } catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = new int[]{0,BATCH_TYPE_SMART, 1,2};
+			return  returnData;
+		}
+	}
+
+	public static final int DOORLOCK_TYPE_NORMAL = 31;
+	public static final int DOORLOCK_TYPE_RF     = 32;
+	public static final int DOORLOCK_TYPE_FINGERPRINT = 33;
+	public int[] Get_DoorLock_Info()
+	{
+		String[] GetData = GetSettingData("디지털도어락");
+
+		int[] returnData = {1,DOORLOCK_TYPE_RF};
+		try
+		{
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData[0] = 1;
+			else
+			{
+				returnData[0] = 0;
+				return returnData;
+			}
+			if (GetData[1].indexOf("유선") > 0) returnData[1] = DOORLOCK_TYPE_NORMAL;
+			else if (GetData[1].indexOf("무선") >0) returnData[1] = DOORLOCK_TYPE_RF;
+			else if (GetData[1].indexOf("지문인식") >0) returnData[1] = DOORLOCK_TYPE_FINGERPRINT;
+			else
+			{
+				returnData[0] = 1;
+				returnData[1] = DOORLOCK_TYPE_RF;
+				return returnData;
+			}
+
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = new int[] {1,DOORLOCK_TYPE_RF};
+			return  returnData;
+        } catch (Exception e)
+		{
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = new int[] {1,DOORLOCK_TYPE_RF};
+			return  returnData;
+		}
+	}
+
+	public int Get_Temper_Info()
+	{
+		String[] GetData = GetSettingData("온도조절기");
+
+		int returnData = 1;
+		try
+		{
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = 1;
+			else
+			{
+				returnData = 0;
+				return returnData;
+			}
+
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = 0;
+			return  returnData;
+        } catch (Exception e)
+		{
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = 0;
+			return  returnData;
+		}
+	}
+
+	/**
+	 * [광주 무등산 임대세대 전용 기능]<br>
+	 * 임대세대는 에너지미터가 3개인데 벨브가 2개인 현장임<br>
+	 * 문제점:난방 제어화면에서 방이 3개로 나옴<br>
+	 * 해결:방개수 3개로 알려주면 강제로 2개로 설정함<br>
+	 * 필요사항:단지서버에서 '난방방개수고정' 기능 사용함 + 회로수를 2개로 설정하면 됨<br>
+	 *
+	 * param none
+	 * @return [(int) 난방 방 개수 고정기능 사용여부 (1:사용함 , 0:사용하지 않음),<br>  (int) 방 개수 회로수]
+	 */
+	public int[] Get_Temper_FixRoomNumber()
+	{
+		String[] GetData = GetSettingData("난방방개수고정");
+
+		int returnData[] = {0, 0};
+		try
+		{
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0)
+			{
+				returnData[0] = 1;
+				String GetCount = (GetData[1].split("[(]")[1]).split("[:]")[0];
+				GetCount = GetCount.trim();
+
+				returnData[1]  = Integer.parseInt(GetCount);
+			}
+			else
+			{
+				returnData[0] = 0;
+				return returnData;
+			}
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData[0] = 0;
+			return  returnData;
+        } catch (Exception e)
+		{
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData[0] = 0;
+			return  returnData;
+		}
+	}
+	public static final int VENTIL_TYPE_NORMAL = 31;
+	public static final int VENTIL_TYPE_LH     = 32;
+	public static final int VENTIL_TYPE_HOOD   = 33;
+	public int[] Get_Ventil_Info()
+	{
+		String[] GetData = GetSettingData("환기시스템");
+
+		int returnData[] = {1,VENTIL_TYPE_NORMAL};
+		try
+		{
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData[0] = 1;
+			else
+			{
+				returnData[0] = 0;
+				return returnData;
+			}
+
+			if (GetData[1].indexOf("기본") > 0) returnData[1] = VENTIL_TYPE_NORMAL;
+			else if (GetData[1].indexOf("LH향") >0) returnData[1] = VENTIL_TYPE_LH;
+			else if (GetData[1].indexOf("후드") >0) returnData[1] = VENTIL_TYPE_HOOD;
+			else
+			{
+				returnData[0] = 1;
+				returnData[1] = VENTIL_TYPE_NORMAL;
+				return returnData;
+			}
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData[0] = 0;
+			returnData[1] = VENTIL_TYPE_NORMAL;
+			return  returnData;
+        } catch (Exception e)
+		{
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData[0] = 0;
+			returnData[1] = VENTIL_TYPE_NORMAL;
+			return  returnData;
+		}
+	}
+
+	public static final int SYSTEMAIRCON_NONE = 131; // 사용안함
+	public static final int SYSTEMAIRCON_SAMSUNG_AIR = 132; // 삼성냉방
+	public static final int SYSTEMAIRCON_SAMSUNG_AIR_HEAT = 133; // 삼성냉난방
+	public static final int SYSTEMAIRCON_LG_AIR = 134; // LG냉방
+	public static final int SYSTEMAIRCON_LG_AIR_HEAT = 135; // LG냉난방
+	public static final int SYSTEMAIRCON_ETC = 136; // 기타APU
+
+	public static final String SYSTEM_AIRCON_SAMSUNG_AIR = "삼성냉방";
+	public static final String SYSTEM_AIRCON_SAMSUNG_AIR_HEAT = "삼성냉난방";
+	public static final String SYSTEM_AIRCON_LG_AIR = "LG냉방";
+	public static final String SYSTEM_AIRCON_LG_AIR_HEAT = "LG냉난방";
+	public static final String SYSTEM_AIRCON_ETC = "기타APU";
+
+	public int Get_AirCON_Info()
+	{
+		String[] GetData = GetSettingData("시스템에어컨");
+
+		try
+		{
+			if (GetData == null) return SYSTEMAIRCON_NONE;
+
+			if (GetData[1].indexOf("사용함") > 0)
+			{
+				if (GetData[1].indexOf(SYSTEM_AIRCON_SAMSUNG_AIR) > 0)
+					return SYSTEMAIRCON_SAMSUNG_AIR;
+				else if (GetData[1].indexOf(SYSTEM_AIRCON_SAMSUNG_AIR_HEAT) > 0)
+					return SYSTEMAIRCON_SAMSUNG_AIR_HEAT;
+				if (GetData[1].indexOf(SYSTEM_AIRCON_LG_AIR) > 0)
+					return SYSTEMAIRCON_LG_AIR;
+				else if (GetData[1].indexOf(SYSTEM_AIRCON_LG_AIR_HEAT) > 0)
+					return SYSTEMAIRCON_LG_AIR_HEAT;
+				else if (GetData[1].indexOf(SYSTEM_AIRCON_ETC) > 0)
+					return SYSTEMAIRCON_ETC;
+				else
+					Log.w(TAG, "[Get_AirCON_Info] 시스템에어컨 종류 미정의");
+			}
+			else
+			{
+				return SYSTEMAIRCON_NONE;
+			}
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			return SYSTEMAIRCON_NONE;
+        } catch (Exception e)
+		{
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			return SYSTEMAIRCON_NONE;
+		}
+		return SYSTEMAIRCON_NONE;
+	}
+
+	public int Get_Purity_Info()
+	{
+		String[] GetData = GetSettingData("청정환기");
+
+		int returnData = 0;
+		try
+		{
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = 1;
+			else
+			{
+				returnData = 0;
+				return returnData;
+			}
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = 0;
+			return  returnData;
+        } catch (Exception e)
+		{
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = 0;
+			return  returnData;
+		}
+	}
+
+	public int Get_Louver_Info()
+	{
+		String[] GetData = GetSettingData("전동루버");
+
+		int returnData = 0;
+		try
+		{
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = 1;
+			else
+			{
+				returnData = 0;
+				return returnData;
+			}
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = 0;
+			return  returnData;
+        } catch (Exception e)
+		{
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = 0;
+			return  returnData;
+		}
+	}
+
+	public int Get_Biometics_Info()
+	{
+		String[] GetData = GetSettingData("생체인식");
+
+		int returnData = 0;
+		try
+		{
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = 1;
+			else
+			{
+				returnData = 0;
+				return returnData;
+			}
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = 0;
+			return  returnData;
+        } catch (Exception e)
+		{
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = 0;
+			return  returnData;
+		}
+	}
+
+	public static final int ELEVATOR_NONE      = 51;
+	public static final int ELEVATOR_SIMPLE    = 52;
+	public static final int ELEVATOR_FLOOR     = 53;
+
+	public int Get_Elevator_Info()
+	{
+		String[] GetData = GetSettingData("엘리베이터");
+
+
+		try
+		{
+			if (GetData == null) return ELEVATOR_FLOOR;
+
+			if (GetData[1].indexOf("사용함") > 0)
+			{
+				if (GetData[1].indexOf("층표시") > 0)
+					return ELEVATOR_FLOOR;
+				else if (GetData[1].indexOf("기본") > 0)
+					return ELEVATOR_SIMPLE;
+				else
+					return ELEVATOR_FLOOR;
+			}
+			else
+			{
+				return ELEVATOR_NONE;
+			}
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			return  ELEVATOR_FLOOR;
+        } catch (Exception e)
+		{
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			return  ELEVATOR_FLOOR;
+		}
+	}
+
+	public int Get_RemoteCon_Info()
+	{
+		String[] GetData = GetSettingData("무선리모컨");
+
+		int returnData = 0;
+		try
+		{
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = 1;
+			else
+			{
+				returnData = 0;
+				return returnData;
+			}
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = 0;
+			return  returnData;
+        } catch (Exception e)
+		{
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = 0;
+			return  returnData;
+		}
+	}
+
+	public static final String MAIN_GUI_TYPE_DEFAULT = "기본";
+	public static final String MAIN_GUI_TYPE_METRO = "메트로";
+	public static final String MAIN_GUI_TYPE_HYOSUNG = "효성";
+	public static final String MAIN_GUI_TYPE_HIMCHAN = "힘찬";
+
+	public String GetMainGUISelect()
+	{
+		String retStr = "";
+		try
+		{
+			String[] GetData = GetSettingData(define.DEVICE_ID_MAIN_GUI_SELECT);
+
+			if (GetData[1].indexOf(MAIN_GUI_TYPE_DEFAULT) > 0)
+			{
+				retStr = "기본";
+			}
+			else if (GetData[1].indexOf(MAIN_GUI_TYPE_METRO) > 0)
+			{
+				retStr = "메트로";
+			}
+			else if (GetData[1].indexOf(MAIN_GUI_TYPE_HYOSUNG) > 0)
+			{
+				retStr = "효성";
+			}
+			else if (GetData[1].indexOf(MAIN_GUI_TYPE_HIMCHAN) > 0)
+			{
+				retStr = "힘찬";
+			}
+			else // 값이 일치하지 않는 경우, 기본으로 리턴
+			{
+				retStr = "기본";
+			}
+
+			return retStr;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			return "기본";
+        }
+		catch (Exception e ) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			Log.w(TAG, "[GetMainGUISelect] Exception - Default");
+			return "기본";
+		}
+	}
+
+	public static final int DOORTYPE_NONE    = 50;
+	public static final int DOORTYPE_BASIC    = 51;
+	public static final int DOORTYPE_RFCAM    = 52;
+	public static final int DOORTYPE_SMARTKEY = 53;
+	public static final int DOORTYPE_UKS      = 54;
+	public static final int DOORTYPE_ETC      = 55;
+	public static final int DOORTYPE_IOT_SMART = 56;
+	public static final int DOORTYPE_HYOSUNG_SMART = 57;
+	public static final int DOORTYPE_DAEWOO_SMART = 58;
+	public static final int DOORTYPE_SMARTKEY_EXTERNAL = 59;
+
+	public static final String DOOR_CAMERA_TYPE_DEFAULT = "기본";
+	public static final String DOOR_CAMERA_TYPE_RF_DOOR_CAMERA = "RF현관카메라";
+	public static final String DOOR_CAMERA_TYPE_SMART_KEY = "스마트키";
+	public static final String DOOR_CAMERA_TYPE_UKS = "UKS";
+	public static final String DOOR_CAMERA_TYPE_ETC = "ETC";
+	public static final String DOOR_CAMERA_TYPE_IOT_SMART = "스마트IOT현관카메라";
+	public static final String DOOR_CAMERA_TYPE_HYOSUNG_SMART = "스마트현관카메라-효성";
+	public static final String DOOR_CAMERA_TYPE_DAEWOO_SMART = "스마트현관카메라-대우";
+	public static final String DOOR_CAMERA_TYPE_SMART_KEY_EXTERNAL = "대외스마트키현관카메라";
+
+	/**
+	 * 현관카메라 종류 가져오는 함수
+	 *
+	 * param none
+	 * @return [(int) 현관카메라 사용여부 (1:사용함 , 0:사용하지 않음),<br>  (int)카메라 종류 (0:기본 , 1:RF현관카메라, 2:스마트키, 3:UKS, 4:ETC)]
+	 */
+	public int[] Get_RFDoorCAM_Info()
+	{
+		String[] GetData = GetSettingData("현관카메라");
+
+		int returnData[] = {1,DOORTYPE_BASIC};
+		try
+		{
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData[0] = 1;
+			else
+			{
+				returnData[0] = 0;
+				return returnData;
+			}
+
+			if (GetData[1].indexOf("기본") > 0) returnData[1] = DOORTYPE_BASIC;
+			else if (GetData[1].indexOf("RF현관카메라") >0) returnData[1] = DOORTYPE_RFCAM;
+			else if (GetData[1].indexOf("대외스마트키") >0) returnData[1] = DOORTYPE_SMARTKEY_EXTERNAL;
+			else if (GetData[1].indexOf("스마트키") >0) returnData[1] = DOORTYPE_SMARTKEY;
+			else if (GetData[1].indexOf("UKS") >0) returnData[1] = DOORTYPE_UKS;
+			else if (GetData[1].indexOf("ETC") >0) returnData[1] = DOORTYPE_ETC;
+			else if (GetData[1].indexOf("스마트IOT현관카메라") >0) returnData[1] = DOORTYPE_IOT_SMART;
+			else if (GetData[1].indexOf("스마트현관카메라-효성") >0) returnData[1] = DOORTYPE_HYOSUNG_SMART;
+			else if (GetData[1].indexOf("스마트현관카메라-대우") >0) returnData[1] = DOORTYPE_DAEWOO_SMART;
+			else
+			{
+				returnData[0] = 1;
+				returnData[1] = DOORTYPE_BASIC;
+				return returnData;
+			}
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData[0] = 1;
+			returnData[1] = DOORTYPE_BASIC;
+			return  returnData;
+        } catch (Exception e)
+		{
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData[0] = 1;
+			returnData[1] = DOORTYPE_BASIC;
+			return  returnData;
+		}
+	}
+
+	/**
+	 * 현관카메라 설정 함수
+	 * @param nValue 현관카메라 종류 (기본, RF, 스마트키, UKS, ETC, 스마트IoT현관카메라, 스마트현관카메라(효성), 스마트현관카메라(대우)
+	 * @return true: 성공, false: 실패
+	 */
+	public boolean Set_DoorCameraType(int nValue) {
+		try {
+			Log.i(TAG, "[Set_DoorCameraType] nValue: " + nValue);
+			String strCameraType = DOOR_CAMERA_TYPE_DEFAULT;
+			String strSettingValue = "1(1:" + define.DEVICE_ID_DOORCAM + "(" + define.DEVICE_ENABLE + ")종류(" + strCameraType + ")";
+
+			if (nValue == DOORTYPE_NONE) {
+				strCameraType = define.DEVICE_DISABLE;
+			}
+			else if (nValue == DOORTYPE_BASIC) {
+				strCameraType = DOOR_CAMERA_TYPE_DEFAULT;
+			}
+			else if (nValue == DOORTYPE_RFCAM) {
+				strCameraType = DOOR_CAMERA_TYPE_RF_DOOR_CAMERA;
+			}
+			else if (nValue == DOORTYPE_SMARTKEY) {
+				strCameraType = DOOR_CAMERA_TYPE_SMART_KEY;
+			}
+			else if (nValue == DOORTYPE_SMARTKEY_EXTERNAL) {
+				strCameraType = DOOR_CAMERA_TYPE_SMART_KEY_EXTERNAL;
+			}
+			else if (nValue == DOORTYPE_UKS) {
+				strCameraType = DOOR_CAMERA_TYPE_UKS;
+			}
+			else if (nValue == DOORTYPE_ETC) {
+				strCameraType = DOOR_CAMERA_TYPE_ETC;
+			}
+			else if (nValue == DOORTYPE_IOT_SMART) {
+				strCameraType = DOOR_CAMERA_TYPE_IOT_SMART;
+			}
+			else if (nValue == DOORTYPE_HYOSUNG_SMART) {
+				strCameraType = DOOR_CAMERA_TYPE_HYOSUNG_SMART;
+			}
+			else if (nValue == DOORTYPE_DAEWOO_SMART) {
+				strCameraType = DOOR_CAMERA_TYPE_DAEWOO_SMART;
+			}
+			else {
+				Log.w(TAG, "[Set_DoorCameraType] Unsupported door camera tyep: " + nValue);
+				return false;
+			}
+
+			if (strCameraType.equalsIgnoreCase(define.DEVICE_DISABLE)) {
+				strSettingValue = "1(1:" + define.DEVICE_ID_DOORCAM + "(" + define.DEVICE_DISABLE + ")";
+			}
+			else {
+				strSettingValue = "1(1:" + define.DEVICE_ID_DOORCAM + "(" + define.DEVICE_ENABLE + ")종류(" + strCameraType + ")";
+			}
+
+			Log.i(TAG, "[Set_DoorCameraType] strSettingValue: " + strSettingValue);
+
+			UpdateSettingData("subdev_list", define.DEVICE_ID_DOORCAM, 0, strSettingValue);
+
+			return true;
+		} catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			return false;
+        } catch (Exception e) {
+			Log.e(TAG, "[Exception] Set_DoorCamera(int nValue)");
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			return false;
+		}
+	}
+
+	public static final int CURTAIN_TYPE_ROOM   = 41;
+	public static final int CURTAIN_TYPE_LIVING = 42;
+	public static final int CURTAIN_TYPE_ALL    = 43;
+
+	public int[] Get_CURTAIN_Info()
+	{
+		String[] GetData = GetSettingData("전동커튼");
+
+		int returnData[] = {0,CURTAIN_TYPE_ROOM};
+		try
+		{
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData[0] = 1;
+			else
+			{
+				returnData[0] = 0;
+				return returnData;
+			}
+
+			if (GetData[1].indexOf("안방커튼") > 0) returnData[1] = CURTAIN_TYPE_ROOM;
+			else if (GetData[1].indexOf("거실커튼") >0) returnData[1] = CURTAIN_TYPE_LIVING;
+			else if (GetData[1].indexOf("안방거실커튼") >0) returnData[1] = CURTAIN_TYPE_ALL;
+			else
+			{
+				returnData[0] = 0;
+				returnData[1] = CURTAIN_TYPE_ROOM;
+				return returnData;
+			}
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData[0] = 0;
+			returnData[1] = CURTAIN_TYPE_ROOM;
+			return  returnData;
+        } catch (Exception e)
+		{
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData[0] = 0;
+			returnData[1] = CURTAIN_TYPE_ROOM;
+			return  returnData;
+		}
+	}
+	public int[] Get_RealTimeMetor_Info()
+	{
+		String[] GetData = GetSettingData("실시간검침기");
+
+		int returnData[] = {0, 0};
+		try
+		{
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0)
+			{
+				returnData[0] = 1;
+				String GetCount = (GetData[1].split("[(]")[1]).split("[:]")[0];
+				GetCount = GetCount.trim();
+
+				returnData[1]  = Integer.parseInt(GetCount);
+			}
+			else
+			{
+				returnData[0] = 0;
+				return returnData;
+			}
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData[0] = 0;
+			return  returnData;
+        } catch (Exception e)
+		{
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData[0] = 0;
+			return  returnData;
+		}
+	}
+
+	/**
+	 * 에너지제품군 사용여부
+	 *
+	 * param none
+	 * @return (int) 에너지제품군 사용여부 (1:사용함 , 0:사용하지 않음)
+	 */
+	public int Get_Energy_Devices_Info()
+	{
+		String[] GetData = GetSettingData("에너지제품군");
+
+		int returnData = 0;
+		try
+		{
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = 1;
+			else
+			{
+				returnData = 0;
+				return returnData;
+			}
+
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = 0;
+			return  returnData;
+        } catch (Exception e)
+		{
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = 0;
+			return  returnData;
+		}
+	}
+
+//	public int Get_SmartDistribution_Info()
+//	{
+//		String[] GetData = GetSettingData("스마트분전반");
+//
+//		int returnData = 0;
+//		try
+//		{
+//			if (GetData == null) return returnData;
+//
+//			if (GetData[1].indexOf("사용함") > 0) returnData = 1;
+//			else
+//			{
+//				returnData = 0;
+//				return returnData;
+//			}
+//
+//			return returnData;
+//		}
+//		catch (RuntimeException re) {
+//            LogUtil.errorLogInfo("", TAG, re);
+//        } catch (Exception e)
+//		{
+//			e.printStackTrace();
+//			returnData = 0;
+//			return  returnData;
+//		}
+//	}
+
+	/**
+	 * 분전반 종류를 가져온다.<br>
+	 * @return int 타입 - 0(사용안함), 1(스마트분전반(), 2(KNX분전반)
+	 */
+	public int Get_DistributionPannelType_Info() {
+		String[] GetData = GetSettingData("분전반");
+
+		int returnData = 0;
+		try {
+			Log.d(TAG, "Get_DistributionPannelType_Info");
+			String[] DataInfo = GetSettingData("분전반");
+			if (DataInfo == null) {
+				Log.w(TAG, "GetSettingData(분전반) is null");
+
+				if (mModelType == Version.MODEL_TYPE.IHN_1020GL
+						|| mModelType == Version.MODEL_TYPE.IHN_1010GL || mModelType == Version.MODEL_TYPE.IHN_1010GL_I) {
+					UpdateSettingData("subdev_list", "분전반", 0, "1(1:"+"분전반" + "(" + "사용안함" + ")종류(" + "사용안함" + ")");
+				}
+				else if (mModelType == Version.MODEL_TYPE.IHN_D101 || mModelType == Version.MODEL_TYPE.IHN_D101_I
+						|| mModelType == Version.MODEL_TYPE.IHN_D101K || mModelType == Version.MODEL_TYPE.IHN_D101K_I) {
+					UpdateSettingData("subdev_list", "분전반", 0, "1(1:" + "분전반" + "(" + "사용함" + ")종류(" + "스마트분전반" + ")");
+				}
+				else {
+					return -2;
+				}
+
+				DataInfo = GetSettingData("분전반");
+				if (DataInfo != null) {
+					for (int i = 0; i < DataInfo.length; i++) {
+						Log.i(TAG, "[Get_DistributionPannelType_Info] null -> default : " + DataInfo[i]);
+					}
+				}
+				else {
+					return -3;
+				}
+			}
+
+			String devInfo = DataInfo[1];
+
+			devInfo = devInfo.replace('(', '_');
+			devInfo = devInfo.replace(':', '_');
+			devInfo = devInfo.replace(')', '_');
+
+			String[] parseData = devInfo.split("_");
+			if (parseData[3].equals("사용함") == true) {
+				String TempData = parseData[5];
+
+				if (TempData == null) {
+					Log.e(TAG, "TempData is null");
+					return -3;
+				}
+
+				if (TempData.equals("스마트분전반")) {
+					Log.d(TAG, "분전반 종류 : 스마트 분전반");
+					return Version.DISTRIBUTION_MODEL.SMART_DIST;
+				}
+				else if (TempData.equals("KNX분전반")) {
+					Log.d(TAG, "분전반 종류 : KNX 분전반");
+					return Version.DISTRIBUTION_MODEL.KNX_DIST;
+				}
+				else {
+					Log.d(TAG, "분전반 종류 : 미정의");
+					return Version.DISTRIBUTION_MODEL.OTHER;
+				}
+			}
+			else {
+				Log.d(TAG, "분전반 종류 : 사용안함");
+				return Version.DISTRIBUTION_MODEL.NON_USE;
+			}
+		} catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = 0;
+			return  returnData;
+        } catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = 0;
+			return  returnData;
+		}
+	}
+
+//	/**
+//	 * KNX 분전반 사용여부 가져오기
+//	 * @return (boolean) true = KNX 분전반 사용함, false = 사용안함(기본값)
+//	 */
+//	public boolean Get_KnxDistribution_Info()
+//	{
+//		String[] GetData = GetSettingData("KNX분전반");
+//
+//		boolean returnData = false;// DB에 값 없는 경우 사용함으로 리턴
+//		try
+//		{
+//			if (GetData == null) { return returnData; }
+//
+//			if (GetData[1].indexOf("사용함") > 0) 	{ returnData = true; }
+//			else 									{ returnData = false; }
+//
+//			return returnData;
+//		}
+//		catch (RuntimeException re) {
+//            LogUtil.errorLogInfo("", TAG, re);
+//        } catch (Exception e)
+//		{
+//			e.printStackTrace();
+//			return false;
+//		}
+//	}
+
+	/**
+	 * 에너지미터 사용여부
+	 *
+	 * param none
+	 * @return (int) 에너미미터 사용여부 (1:사용함 , 0:사용하지 않음)
+	 */
+	public int Get_IPark_Energy_Info()
+	{
+		String[] GetData = GetSettingData("아이파크에너지");
+
+		int returnData = 0;
+		try
+		{
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = 1;
+			else
+			{
+				returnData = 0;
+				return returnData;
+			}
+
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = 0;
+			return  returnData;
+        }
+		catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = 0;
+			return  returnData;
+		}
+	}
+
+	/**
+	 * 대기전력 차단스위치 사용여부
+	 *
+	 * param none
+	 * @return (int) 대기전력 차단스위치 사용여부 (1:사용함 , 0:사용하지 않음)
+	 */
+	public int Get_Idle_Power_Saving_Switch_Info()
+	{
+		String[] GetData = GetSettingData("대기전력차단스위치");
+
+		int returnData = 0;
+		try
+		{
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = 1;
+			else
+			{
+				returnData = 0;
+				return returnData;
+			}
+
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = 0;
+			return  returnData;
+        }
+		catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = 0;
+			return  returnData;
+		}
+	}
+
+	//에너지모듈 사용여부
+	/**
+	 * 에너지모듈 사용여부
+	 *
+	 * param none
+	 * @return (int) 에너지모듈 사용여부 (1:사용함 , 0:사용하지 않음)
+	 */
+	public int Get_Energy_Module_Info()
+	{
+		String[] GetData = GetSettingData("에너지모듈");
+
+		int returnData = 0;
+		try
+		{
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = 1;
+			else
+			{
+				returnData = 0;
+				return returnData;
+			}
+
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = 0;
+			return  returnData;
+        }
+		catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = 0;
+			return  returnData;
+		}
+	}
+	public int Get_GAS_Info()
+	{
+		String[] GetData = GetSettingData("가스밸브");
+
+		int returnData = 1;
+		try
+		{
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = 1;
+			else
+			{
+				returnData = 0;
+				return returnData;
+			}
+
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = 1;
+			return  returnData;
+        }
+		catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = 1;
+			return  returnData;
+		}
+	}
+
+	public static final int SET_IN_MOTION        = 0x01;
+	public static final int SET_OUT_MOTION       = 0x02;
+	public static final int SET_OUT_TO_IN_MOTION = 0x04;
+
+	public int Get_Sensor_Set()
+	{
+		String[] GetData = GetSettingData("동체설정");
+
+		int returnData = 0;
+		try
+		{
+			if (GetData == null)
+			{
+				returnData|=SET_OUT_MOTION;
+				returnData|=SET_IN_MOTION;
+				return returnData;
+			}
+
+			if (GetData[1].indexOf("동체설정") > 0)
+			{
+				String[] setted = GetData[1].split("동체설정");
+				if (setted[1].split("[)]")[0].indexOf("사용함") > 0)
+				{
+					String[] outsetted = GetData[1].split("외부동체사용");
+					if (outsetted[1].split("[)]")[0].indexOf("사용함") > 0) returnData|=SET_OUT_MOTION;
+					outsetted = GetData[1].split("내부동체사용");
+					if (outsetted[1].split("[)]")[0].indexOf("사용함") > 0) returnData|=SET_IN_MOTION;
+					outsetted = GetData[1].split("외부동체를내부동체로사용");
+					if (outsetted[1].split("[)]")[0].indexOf("사용함") > 0) returnData|=SET_OUT_TO_IN_MOTION;
+				}
+				else
+					return 0;
+			}
+
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = 0;
+			return  returnData;
+        }
+		catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = 0;
+			return  returnData;
+		}
+	}
+
+	/**
+	 * BLE스마트키 설정 함수
+	 * @param bUsage 동체설정
+	 * @param bOut 외부동체 사용 여부
+	 * @param bIn 내부동체 사용 여부
+	 * @param bOutAsIn 외부동체를 내부동체로 사용
+	 * @return true: 성공, false: 실패
+	 */
+	public static final String MOTION_SETTING_TYPE_USE_OUTER_MOTION_DETECTOR = "외부동체사용";
+	public static final String MOTION_SETTING_TYPE_USE_INNER_MOTION_DETECTOR = "내부동체사용";
+	public static final String MOTION_SETTING_TYPE_USE_OUTER_MOTION_DETECTOR_TO_INNER_MOTION = "외부동체를내부동체로사용";
+	public boolean Set_MotionSensorType(boolean bUsage, boolean bOut, boolean bIn, boolean bOutAsIn) {
+		try {
+			Log.i(TAG, "[Set_MotionSensorType] bUsage: " + bUsage + ", bOut: " + bOut + ", bIn: " + bIn + ", bOutAsIn: " + bOutAsIn);
+			String strSettingValue = "1(1:동체설정(사용함)외부동체사용(사용함)내부동체사용(사용안함)외부동체를내부동체로사용(사용안함))";
+			String strSettingValue_Motion = "동체설정(사용함)";
+			String strSettingValue_Out = "외부동체사용(사용함)";
+			String strSettingValue_In = "내부동체사용(사용안함)";
+			String strSettingValue_OutAsIn = "외부동체를내부동체로사용(사용안함)";
+
+			if (bUsage) strSettingValue_Motion = define.DEVICE_ID_SENSOR + "(" + define.DEVICE_ENABLE + ")";
+			else strSettingValue_Motion = define.DEVICE_ID_SENSOR + "(" + define.DEVICE_DISABLE + ")";
+
+			if (bOut) strSettingValue_Out = MOTION_SETTING_TYPE_USE_OUTER_MOTION_DETECTOR + "(" + define.DEVICE_ENABLE + ")";
+			else strSettingValue_Out = MOTION_SETTING_TYPE_USE_OUTER_MOTION_DETECTOR + "(" + define.DEVICE_DISABLE + ")";
+
+			if (bIn) strSettingValue_In = MOTION_SETTING_TYPE_USE_INNER_MOTION_DETECTOR + "(" + define.DEVICE_ENABLE + ")";
+			else strSettingValue_In = MOTION_SETTING_TYPE_USE_INNER_MOTION_DETECTOR + "(" + define.DEVICE_DISABLE + ")";
+
+			if (bOutAsIn) strSettingValue_OutAsIn = MOTION_SETTING_TYPE_USE_OUTER_MOTION_DETECTOR_TO_INNER_MOTION + "(" + define.DEVICE_ENABLE + ")";
+			else strSettingValue_OutAsIn = MOTION_SETTING_TYPE_USE_OUTER_MOTION_DETECTOR_TO_INNER_MOTION + "(" + define.DEVICE_DISABLE + ")";
+
+			strSettingValue = "1(1:" + strSettingValue_Motion + strSettingValue_Out + strSettingValue_In + strSettingValue_OutAsIn + ")";
+
+			Log.i(TAG, "[Set_BLESmartKeyType] strSettingValue: " + strSettingValue);
+
+			UpdateSettingData("subdev_list", define.DEVICE_ID_SENSOR, 0, strSettingValue);
+
+			return true;
+		} catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			return false;
+        }
+		catch (Exception e) {
+			Log.e(TAG, "[Exception] Set_MotionSensorType(boolean bUsage, boolean bOut, boolean bIn, boolean bOutAsIn)");
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			return false;
+		}
+	}
+
+	int[] volindextbl = { -1, 0x13, 0x1A, 0x1F, 0x23, 0x28, 0x2B, 0x2E, 0x30, 0x34, 0x38 };
+
+	public int GetDoorSoundLevel()
+	{
+		String[] GetData = GetSettingData("현관폰사운드출력음량");
+
+		try
+		{
+			if (GetData == null)
+			{
+				return -1;
+			}
+
+			if (GetData[1].indexOf("사용함") > 0)
+			{
+				String[] volsetted = GetData[1].split("볼륨");
+				volsetted[1] = volsetted[1].replace("("," ");
+				volsetted[1] = volsetted[1].replace(")"," ");
+				volsetted[1] = volsetted[1].trim();
+				int idx = 0;
+				try {
+					idx = Integer.parseInt(volsetted[1]);
+					if (idx > volindextbl.length-1) idx = 0;
+
+					return volindextbl[idx];
+				}
+				catch (RuntimeException re) {
+					LogUtil.errorLogInfo("", TAG, re);
+					return -1;
+				}
+				catch (Exception e) {
+					//e.printStackTrace();
+					LogUtil.errorLogInfo("", TAG, e);
+					return -1;
+				}
+			}
+			else
+				return -1;
+
+
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			return  -1;
+        }
+		catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			return  -1;
+		}
+	}
+
+
+	//재택모드 시 동체센서 사용여부
+	/**
+	 * 재택모드 시 동체센서 사용여부
+	 *
+	 * param none
+	 * @return (int) 재택모드 시 동체센서 (1:사용함 , 0:사용하지 않음)
+	 */
+	public int Get_Security_IndoorMode_Sensor_Use()
+	{
+		String[] GetData = GetSettingData("재택모드시동체센서사용");
+
+		int returnData = 1;//DB에 값 없는 경우 사용함으로 리턴
+		try
+		{
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = 1;
+			else
+			{
+				returnData = 0;
+				return returnData;
+			}
+
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = 1;
+			return  returnData;
+        }
+		catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = 1;
+			return  returnData;
+		}
+	}
+
+
+	public static final int HANDICAPPED_MODE_NORMAL = 0; //일반모드
+	public static final int HANDICAPPED_MODE_HEARING = 1; //청각장애인 모드
+	public static final int HANDICAPPED_MODE_BLIND = 2; //시각장애인 모드
+
+	public static final int HANDICAPPED_DO_NOT_USE = 0;
+	public static final int HANDICAPPED_USE = 1;
+
+	/**
+	 * 장애인 모드 사용 유무 정보 가져오기
+	 *
+	 * param none
+	 * @return int[2]<br> int data[0] = 0(사용안함) or 1(사용함),<br> int data[1] = 0(일반모드) or 1(청각장애인모드) or 2(시각장애인모드)
+	 */
+	public int[] Get_Handicapped_Mode()
+	{
+		String[] GetData = GetSettingData("장애인모드");
+
+		int returnData[] = {HANDICAPPED_DO_NOT_USE, HANDICAPPED_MODE_NORMAL};
+
+		try
+		{
+			if (GetData == null)
+			{
+				Log.e(TAG, "GetSettingData(장애인모드) is null");
+				return returnData;
+			}
+
+			String devInfo = GetData[1];
+
+			devInfo = devInfo.replace('(', '_');
+			devInfo = devInfo.replace(':', '_');
+			devInfo = devInfo.replace(')', '_');
+
+			String[] DataInfo = devInfo.split("_");
+
+			// DataInfo[3] -> 장애인모드 사용함 or 사용안함
+			// DataInfo[5] -> 일반모드 or 청각장애인 or 시각장애인
+
+			if(DataInfo[3].equals("사용함") == true)
+			{
+				returnData[0] = HANDICAPPED_USE;
+			}
+			if(DataInfo[5].equals("일반모드") == true)
+			{
+				returnData[1] = HANDICAPPED_MODE_NORMAL;
+			}
+			else if(DataInfo[5].equals("청각장애인") == true)
+			{
+				returnData[1] = HANDICAPPED_MODE_HEARING;
+			}
+			else if(DataInfo[5].equals("시각장애인") == true)
+			{
+				returnData[1] = HANDICAPPED_MODE_BLIND;
+			}
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			return returnData;
+        }
+		catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			return returnData;
+		}
+	}
+
+	/**
+	 * 장애인 모드 종류 설정
+	 *
+	 * param int[2]<br> int data[0] = 0(사용안함) or 1(사용함),<br> int data[1] = 0(일반모드) or 1(청각장애인모드) or 2(시각장애인모드)
+	 * @return boolean 설정성공여부 true=설정성공, false=설정실패
+	 */
+	public boolean Set_Handicapped_Mode(int[] SetValue)
+	{
+		String sHandicapped = "장애인모드";
+		String sUseOrNot = "사용안함";
+		String sMode = "일반모드";
+		if(SetValue == null)
+		{
+			Log.e(TAG, "intput[] is null");
+			return false;
+		}
+		if(SetValue.length != 2)
+		{
+			Log.e(TAG, "intput[]'s length is not 2");
+			Log.e(TAG, "intput[]'s length is "+ SetValue.length);
+			return false;
+		}
+
+		switch(SetValue[0])
+		{
+			case HANDICAPPED_DO_NOT_USE:
+				sUseOrNot = "사용안함";
+				break;
+
+			case HANDICAPPED_USE:
+				sUseOrNot = "사용함";
+				break;
+
+			default:
+				Log.e(TAG, "intput[0] is Error.  SetValue[0]: "+SetValue[0]);
+				return false;
+		}
+
+		switch(SetValue[1])
+		{
+			case HANDICAPPED_MODE_NORMAL:
+				sMode = "일반모드";
+				break;
+
+			case HANDICAPPED_MODE_HEARING:
+				sMode = "청각장애인";
+				break;
+
+			case HANDICAPPED_MODE_BLIND:
+				sMode = "시각장애인";
+				break;
+
+			default:
+				Log.e(TAG, "intput[1] is Error.  SetValue[1]: "+SetValue[1]);
+				return false;
+		}
+
+		try
+		{
+			UpdateSettingData("subdev_list"
+					, sHandicapped
+					, 0
+					, "1(1:"+sHandicapped+"("+sUseOrNot+")모드("+sMode+")"
+			);
+			return true;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			return false;
+        }
+		catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			return false;
+		}
+	}
+
+	/**
+	 * 엘리베이터 핫키 사용 유무 (메인화면 오른쪽 하단에 엘리베이터 버튼 사용 유무)
+	 *
+	 * param none
+	 * @return (int) 엘리베이터 핫키 사용 유무 (1:사용함 , 0:사용하지 않음)
+	 */
+	public int Elevator_Button_inMainScreen_Use()
+	{
+		String[] GetData = GetSettingData("엘리베이터핫키");
+
+		int returnData = 0;//DB에 값 없는 경우 사용안함으로 리턴
+		try
+		{
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = 1;
+			else
+			{
+				returnData = 0;
+				return returnData;
+			}
+
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = 0;
+			return  returnData;
+        }
+		catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = 0;
+			return  returnData;
+		}
+	}
+
+
+
+	public static final int BLACK_TYPE = 0; //블랙타입 - 기존
+	public static final int COLOR_TYPE = 1; //컬러타입 - 신규
+	/**
+	 * 즐겨찾기 아이콘 종류 가져오기
+	 *
+	 * param none
+	 * @return int[2]<br> int data[0] = 1(사용함)<br> int data[1] = 0(흑백타입(기존)) or 1(컬러타입(신규))
+	 **/
+	public int[] Get_BookMark_Type()
+	{
+		String[] GetData = GetSettingData("즐겨찾기아이콘종류");
+
+		int returnData[] = {DO_USE, BLACK_TYPE};
+
+		try
+		{
+			if (GetData == null)
+			{
+				Log.e(TAG, "GetSettingData(즐겨찾기아이콘종류) is null");
+				return returnData;
+			}
+
+			String devInfo = GetData[1];
+
+			devInfo = devInfo.replace('(', '_');
+			devInfo = devInfo.replace(':', '_');
+			devInfo = devInfo.replace(')', '_');
+
+			String[] DataInfo = devInfo.split("_");
+
+			// DataInfo[5] -> 흑백 or 컬러
+
+			if(DataInfo[5].equals("흑백") == true)
+			{
+				returnData[1] = BLACK_TYPE;
+			}
+			else if(DataInfo[5].equals("컬러") == true)
+			{
+				returnData[1] = COLOR_TYPE;
+			}
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			return returnData;
+        }
+		catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			return returnData;
+		}
+	}
+
+	/**
+	 * 가스감지5회알람 사용유무
+	 *
+	 * @return boolean 타입 - true:사용, false:미사용
+	 */
+	public boolean GetGasDetect5Time()
+	{
+		Log.d(TAG, "GetGasDetect5Time");
+		int result = GetDeviceSetted(define.DEVICE_ID_GAS_DETECT_5TIME);
+		if(result == DEV_DATA_ENABLE)
+		{
+			return true;
+		}
+		else
+		{
+			return false;
+		}
+	}
+
+	/**
+	 * 인터넷미지원 사용유무
+	 *
+	 * @return boolean 타입 - true:사용, false:미사용
+	 */
+	public boolean Get_NonInternetSupportUse()
+	{
+		Log.d(TAG, "Get_NonInternetSupportUse");
+		int result = GetDeviceSetted(define.DEVICE_ID_NON_INTERNET_SUPPORT);
+		if(result == DEV_DATA_ENABLE)
+		{
+			return true;
+		}
+		else
+		{
+			return false;
+		}
+	}
+
+	/**
+	 * 거실EM주방등 사용유무
+	 *
+	 * @return boolean 타입 - true:사용, false:미사용
+	 */
+	public boolean Get_LivingEm_KitchenLight_Use()
+	{
+		//Log.d(TAG, "Get_LivingEm_KitchenLight_Use");
+		int result = GetDeviceSetted(define.DEVICE_ID_LIVINGEM_KITCHEN_LIGHT);
+		if(result == DEV_DATA_ENABLE)
+		{
+			return true;
+		}
+		else
+		{
+			return false;
+		}
+	}
+
+	/**
+	 * 스마트우편함 사용유무
+	 *
+	 * @return boolean 타입 - true:사용, false:미사용
+	 */
+	public boolean Get_SmartPostUse()
+	{
+		Log.d(TAG, "Get_SmartPostUse");
+		int result = GetDeviceSetted(define.DEVICE_ID_SMART_POST);
+		if(result == DEV_DATA_ENABLE)
+		{
+			return true;
+		}
+		else
+		{
+			return false;
+		}
+	}
+
+	/**
+	 * 쿡탑콘센트 사용유무
+	 *
+	 * @return boolean 타입 - true:사용, false:미사용
+	 */
+	public boolean Get_CookTopConcent_Use()
+	{
+		Log.d(TAG, "Get_CookTopConcent_Use");
+		int result = GetDeviceSetted(define.DEVICE_ID_ELECTRIC_CUTOFF);
+		if(result == DEV_DATA_ENABLE)
+		{
+			return true;
+		}
+		else
+		{
+			return false;
+		}
+	}
+
+	/**
+	 * 에너지 모듈 명칭 가져오기 - 제로에너지하우스 현장때문에 생긴 기능 <br>
+	 * return값에 대하여 먼저 null인지 체크하고 null 아닐 경우에만 사용! <br>
+	 * return값의 길이 (Length)를 확인하고 해당 개수에 맞게 설정해야 함.
+	 * param none
+	 * @return String[] 타입이며 회로 명칭 정보가 들어있음
+	 */
+	public String[] Get_EnergyModule_Name()
+	{
+		String[] ReturnData = null;
+		String[] GetData = GetSettingData("에너지모듈명칭");
+
+		try
+		{
+			if(GetData == null)
+			{
+				Log.e(TAG, "GetSettingData(에너지모듈명칭) is null");
+				return null;
+			}
+
+			String devInfo = GetData[1];
+
+			devInfo = devInfo.replace('(', '_');
+			devInfo = devInfo.replace(':', '_');
+			devInfo = devInfo.replace(')', '_');
+
+			String[] DataInfo = devInfo.split("_");
+
+			//[0] - 기기번호
+			//[1] - 회로수
+			//[2] - 기기이름
+			//[3] - 사용유무 (사용함 or 사용안함)------------> 사용할 정보
+			//[4] - 명칭
+			//[5] - 명칭에 대한 정보 ----------------------> 사용할 정보, ','로 구분됨
+
+			if(DataInfo[3].equals("사용함") == true)
+			{
+				String[] TempData = DataInfo[5].split(",");
+
+				if(TempData == null)
+				{
+					Log.e(TAG, "TempData is null");
+					return null;
+				}
+				if(TempData.length < 1)
+				{
+					Log.e(TAG, "TempData.length is 0");
+					return null;
+				}
+
+				ReturnData = new String[TempData.length];
+				ReturnData = TempData;
+				return ReturnData;
+			}
+			else
+			{
+				Log.e(TAG, "에너지모듈명칭 사용 안함");
+				Log.e(TAG, "DataInfo[3] :" + DataInfo[3]);
+				return null;
+			}
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			return null;
+        }
+		catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			return null;
+		}
+	}
+
+	/**
+	 * 제로에너지하우스 사용여부를 가져온다
+	 *
+	 * @return boolean 타입 - true:사용, false:미사용
+	 */
+	public boolean GetZeroEnergyHouseInfo()
+	{
+		Log.d(TAG, "GetZeroEnergyHouseInfo");
+
+		String[] GetData = GetSettingData("제로에너지하우스");
+
+		boolean returnData = false;//DB에 값 없는 경우 사용안함으로 리턴
+		try
+		{
+			if (GetData == null) return false;
+
+			if (GetData[1].indexOf("사용함") > 0)
+			{
+				returnData = true;
+			}
+			else
+			{
+				returnData = false;
+			}
+
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			return  false;
+        }
+		catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			return  false;
+		}
+	}
+
+	/**
+	 * 통화어플의 통화 타임아웃 기능 사용여부를 확인한다. (개발자용)
+	 * @return (boolean) true = 타임아웃 사용함(기본 사용함), false = 타임아웃 사용안함
+	 */
+	public boolean Get_CallAppCallTimeout()
+	{
+		String[] GetData = GetSettingData("통화타임아웃");
+
+		boolean returnData = true;// DB에 값 없는 경우 사용함으로 리턴
+		try
+		{
+			if (GetData == null)
+			{
+				return returnData;
+			}
+
+			if (GetData[1].indexOf("사용안함") > 0)
+			{
+				returnData = false;
+			}
+
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			return returnData;
+        }
+		catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			return returnData;
+		}
+	}
+
+	/**
+	 * 통화어플의 통화 타임아웃 기능 사용여부를 설정한다. (개발자용)
+	 * @param input boolean타입 true = 타임아웃 사용함, false = 타임아웃 사용안함
+	 * @return (boolean) true = 타임아웃 사용함(기본 사용함), false = 타임아웃 사용안함
+	 */
+	public boolean Set_CallAppCallTimeout(boolean input)
+	{
+		String SettingValue = "사용함";
+
+		if(input == false)
+		{
+			SettingValue = "사용안함";
+		}
+		else
+		{
+			SettingValue = "사용함";
+		}
+
+		try
+		{
+			UpdateSettingData("subdev_list"
+					, "통화타임아웃"
+					, 0
+					, "1(1:"+"통화타임아웃"+"("+SettingValue+")"
+			);
+			return true;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			return false;
+        }
+		catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			return false;
+		}
+	}
+
+	/**
+	 * IP대역 확장기능 사용여부 가져오기
+	 * @return (boolean) true = IP대역확장기능 사용함, false = 사용안함(기본값)
+	 */
+	public boolean Get_IP_Expansion()
+	{
+		String[] GetData = GetSettingData("IP대역확장");
+
+		boolean returnData = false;// DB에 값 없는 경우 사용함으로 리턴
+		try
+		{
+			if (GetData == null)
+			{
+				return returnData;
+			}
+
+			if (GetData[1].indexOf("사용함") > 0)
+			{
+				returnData = true;
+			}
+			else
+			{
+				returnData = false;
+			}
+
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			return returnData;
+        }
+		catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			return returnData;
+		}
+	}
+
+	/**
+	 * IP대역 확장기능  사용여부를 설정한다. (개발자용)
+	 * @param input boolean타입 true = 사용함, false = 사용안함
+	 * @return (boolean) true = 사용함, false = 사용안함(기본 사용안함)
+	 */
+	public boolean Set_IP_Expansion(boolean input)
+	{
+		String SettingValue = "사용안함";
+
+		if(input == false)
+		{
+			SettingValue = "사용안함";
+		}
+		else
+		{
+			SettingValue = "사용함";
+		}
+
+		try
+		{
+			UpdateSettingData("subdev_list"
+					, "IP대역확장"
+					, 0
+					, "1(1:"+"IP대역확장"+"("+SettingValue+")"
+			);
+			return true;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			return false;
+        } catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			return false;
+		}
+	}
+
+	/**
+	 * 난방조명방명칭설정 사용여부를 가져온다
+	 *
+	 * @return boolean 타입 - true:사용, false:미사용
+	 */
+	public boolean GetEachRoomNameInfo()
+	{
+		Log.d(TAG, "GetEachRoomNameInfo");
+
+		String[] GetData = GetSettingData("난방조명방명칭설정");
+
+		boolean returnData = false;//DB에 값 없는 경우 사용안함으로 리턴
+		try
+		{
+			if (GetData == null) return false;
+
+			if (GetData[1].indexOf("사용함") > 0)
+			{
+				returnData = true;
+			}
+			else
+			{
+				returnData = false;
+			}
+
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			return  false;
+        }
+		catch (Exception e) {
+			LogUtil.errorLogInfo("", TAG, e);
+			//e.printStackTrace();
+			return  false;
+		}
+	}
+
+	/**
+	 * 현산향 스마트스위치 422타입을 485라인으로 변경 시 사용여부 가져오는 기능(한남 아이파크 전용)
+	 *
+	 * @return boolean 타입 - true:사용, false:미사용
+	 */
+	public boolean GetHDCSmartSwitch485Connection()
+	{
+		Log.d(TAG, "GetHDCSmartSwitch485Connection");
+
+		String[] GetData = GetSettingData("스마트스위치485설정");
+
+		boolean returnData = false;//DB에 값 없는 경우 사용안함으로 리턴
+		try
+		{
+			if (GetData == null) return false;
+
+			if (GetData[1].indexOf("사용함") > 0)
+			{
+				returnData = true;
+			}
+			else
+			{
+				returnData = false;
+			}
+
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			return  false;
+        }
+		catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			return  false;
+		}
+	}
+
+
+	/**
+	 * 현산향 BLE스마트키 사용유무 확인(스마트키 카메라 암호화 모듈 구분 사용)
+	 *
+	 * @return boolean 타입 - true:사용, false:미사용
+	 */
+	public boolean GetBLESmartKeyUSE()
+	{
+		Log.d(TAG, "GetBLESmartKeyUSE");
+		int result = GetDeviceSetted(define.DEVICE_ID_BLE_SMARTKEY);
+		if(result == DEV_DATA_ENABLE)
+		{
+			return true;
+		}
+		else
+		{
+			return false;
+		}
+	}
+
+	/**
+	 * 신형 단지서버 사용유무 확인
+	 *
+	 * @return boolean 타입 - true:사용, false:미사용
+	 */
+//	public boolean GetNewDanjiServer()
+//	{
+//		Log.d(TAG, "GetNewDanjiServer");
+//		int data = GetNewDanjiServer_();
+//		int result = GetDeviceSetted(define.DEVICE_ID_NEW_DANJI_SERVER);
+//		if(result == DEV_DATA_ENABLE)
+//		{
+//			Log.d(TAG, "GetNewDanjiServer TRUE");
+//			return true;
+//		}
+//		else
+//		{
+//			Log.d(TAG, "GetNewDanjiServer FALSE");
+//			return false;
+//		}
+//	}
+
+	/**
+	 * 단지서버 가져오기(1: 1.0, 2:2.0, 0:Mix)
+	 * @return
+	 */
+	public int GetNewDanjiServer()
+	{
+		int result = 1;
+		Log.d(TAG, "GetNewDanjiServer");
+
+		String[] GetData = GetSettingData(define.DEVICE_ID_NEW_DANJI_SERVER);
+		if (GetData == null) return 1;
+
+		Log.i(TAG, "-------------------------------[GetNewDanjiServer_] Lnegth: " + GetData.length);
+
+		for(int i = 0; i< GetData.length; i++)
+		{
+			Log.i(TAG, "-------------------------------[GetNewDanjiServer_] Data  [" +i +"]" +  GetData[i].toString());
+		}
+		try
+		{
+			//여기서 우선 종료를 가지고 있느닞 판단이 필요
+			//우선 종류가 있는지 부터 파악
+			//이뉴는 기존것을 대비 하기 위해 필요
+			if(GetData[1].contains("종류"))
+			{
+				//새로운 타입
+				if (GetData[1].indexOf("2.0") > 0) //2.0
+					return 2;
+				else if (GetData[1].indexOf("1.0") > 0) //2.0
+					return 1;
+				else
+					return 0;
+			}
+			else
+			{
+				//기존것
+				if (GetData[1].indexOf("사용함") > 0) //2.0
+					return 2;
+				else //1.0
+					return 1;
+			}
+		}
+		catch (RuntimeException re) {
+		}
+		catch (Exception e) {
+		}
+
+		return result;
+	}
+
+
+    public static final int BLESMARTKEY_NONUSE  = 61;
+    public static final int BLESMARTKEY_KEY    	= 62;
+    public static final int BLESMARTKEY_BAND 	= 63;
+	public static final String BLE_SMARTKEY_TYPE_NONUSE    = "사용안함";
+	public static final String BLE_SMARTKEY_TYPE_SMARTKEY  = "스마트키";
+	public static final String BLE_SMARTKEY_TYPE_SMARTBAND = "스마트밴드";
+
+    /**
+     * BLE스마트키 종류 가져오는 함수
+     *
+     * @return [(int) BLE스마트키 사용여부 (1:사용함 , 0:사용하지 않음),<br>
+     * (int)BLE스마트키 종류 (0:사용안함 , 1:스마트키, 2:스마트밴드)]
+     */
+    public int[] Get_BLESmartKey_Info()
+    {
+        String[] GetData = GetSettingData("BLE스마트키");
+
+        int returnData[] = {0, BLESMARTKEY_NONUSE};
+        try
+        {
+            if (GetData == null) return returnData;
+
+            if (GetData[1].indexOf("사용함") > 0) returnData[0] = 1;
+            else
+            {
+                returnData[0] = 0;
+                return returnData;
+            }
+
+            //if (GetData[1].indexOf("사용안함") > 0) returnData[1] = BLESMARTKEY_NONUSE;
+            if (GetData[1].indexOf("(스마트키)") >0)
+            {
+                returnData[1] = BLESMARTKEY_KEY;
+            }
+            else if (GetData[1].indexOf("(스마트밴드)") >0)
+            {
+                returnData[1] = BLESMARTKEY_BAND;
+            }
+            else
+            {
+                returnData[0] = 1;
+                returnData[1] = BLESMARTKEY_KEY;
+                return returnData;
+            }
+
+            return returnData;
+        }
+        catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData[0] = 1;
+			returnData[1] = BLESMARTKEY_KEY;
+			return  returnData;
+        }
+        catch (Exception e) {
+            //e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData[0] = 1;
+            returnData[1] = BLESMARTKEY_KEY;
+            return  returnData;
+        }
+    }
+
+	/**
+	 * BLE스마트키 설정 함수
+	 * @param nValue BLE스마트키 종류 (사용안함 , 스마트키, 스마트밴드)
+	 * @return true: 성공, false: 실패
+	 */
+	public boolean Set_BLESmartKeyType(int nValue) {
+		try {
+			Log.i(TAG, "[Set_BLESmartKeyType] nValue: " + nValue);
+			String strBLESmartKeyType = BLE_SMARTKEY_TYPE_NONUSE;
+			String strSettingValue = "1(1:" + define.DEVICE_ID_BLE_SMARTKEY + "(" + define.DEVICE_DISABLE + ")";
+
+			if (nValue == BLESMARTKEY_NONUSE) {
+				strBLESmartKeyType = BLE_SMARTKEY_TYPE_NONUSE;
+			}
+			else if (nValue == BLESMARTKEY_KEY) {
+				strBLESmartKeyType = BLE_SMARTKEY_TYPE_SMARTKEY;
+			}
+			else if (nValue == BLESMARTKEY_BAND) {
+				strBLESmartKeyType = BLE_SMARTKEY_TYPE_SMARTBAND;
+			}
+			else {
+				Log.w(TAG, "[Set_BLESmartKeyType] Unsupported BLEsmartkey tyep: " + nValue);
+				return false;
+			}
+
+			if (strBLESmartKeyType.equalsIgnoreCase(BLE_SMARTKEY_TYPE_NONUSE)) {
+				strSettingValue = "1(1:" + define.DEVICE_ID_BLE_SMARTKEY + "(" + define.DEVICE_DISABLE + ")";
+			}
+			else {
+				strSettingValue = "1(1:" + define.DEVICE_ID_BLE_SMARTKEY + "(" + define.DEVICE_ENABLE + ")종류(" + strBLESmartKeyType + ")";
+			}
+
+
+			Log.i(TAG, "[Set_BLESmartKeyType] strSettingValue: " + strSettingValue);
+
+			UpdateSettingData("subdev_list", define.DEVICE_ID_BLE_SMARTKEY, 0, strSettingValue);
+
+			return true;
+		} catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			return false;
+        } catch (Exception e) {
+			Log.e(TAG, "[Exception] Set_BLESmartKeyType(int nValue)");
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			return false;
+		}
+	}
+
+
+	/**
+	 * 제어시퀀스 제한 사용유무
+	 *
+	 * @return boolean 타입 - true:사용, false:미사용
+	 */
+	public boolean GetCtrSequenceLimit()
+	{
+		Log.d(TAG, "GetCtrSequenceLimit");
+		int result = GetDeviceSetted(define.DEVICE_ID_CTR_SEQUENCE_LIMIT);
+		if(result == DEV_DATA_ENABLE)
+		{
+			return true;
+		}
+		else
+		{
+			return false;
+		}
+	}
+
+	/**
+	 * 통합스위치 사용유무
+	 *
+	 * @return boolean 타입 - true:사용, false:미사용
+	 */
+	public boolean Get_Integrated_Switch_Info() {
+		Log.d(TAG, "Get_Integrated_Switch_Info");
+		int result = GetDeviceSetted(define.DEVICE_ID_INTEGRADED_SWITCH);
+		if (result == DEV_DATA_ENABLE) return true;
+		else return false;
+	}
+
+	/**
+	 * 통합스위치 설정 함수
+	 * @param bUsage 통합스위치 사용여부 (true: 사용함, false: 사용안함)
+	 * @return true: 성공, false: 실패
+	 */
+	public boolean Set_IntegratedSwitchUsage(boolean bUsage) {
+		try {
+			Log.i(TAG, "[Set_IntegratedSwitchUsage] bUsage: " + bUsage);
+			String strSettingValue = "1(1:" + define.DEVICE_ID_INTEGRADED_SWITCH + "(" + define.DEVICE_DISABLE + ")";
+
+			if (bUsage) strSettingValue = "1(1:" + define.DEVICE_ID_INTEGRADED_SWITCH + "(" + define.DEVICE_ENABLE + ")";
+			else strSettingValue = "1(1:" + define.DEVICE_ID_INTEGRADED_SWITCH + "(" + define.DEVICE_DISABLE + ")";
+
+			Log.i(TAG, "[Set_IntegratedSwitchUsage] strSettingValue: " + strSettingValue);
+
+			UpdateSettingData("subdev_list", define.DEVICE_ID_INTEGRADED_SWITCH, 0, strSettingValue);
+
+			return true;
+		} catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			return false;
+        } catch (Exception e) {
+			Log.e(TAG, "[Exception] Set_IntegratedSwitchUsage(boolean bUsage)");
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			return false;
+		}
+	}
+
+	public int Get_NoiseSensor_Use()
+	{
+		String[] GetData = GetSettingData("층간소음센서");
+
+		int returnData = 0;
+		try
+		{
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = 1;
+			else
+			{
+				returnData = 0;
+				return returnData;
+			}
+
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = 0;
+			return  returnData;
+        }
+		catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = 0;
+			return  returnData;
+		}
+	}
+
+	public int Get_InnerRoomDetectSensor_Use()
+	{
+		String[] GetData = GetSettingData("재실센서");
+
+		int returnData = 0;
+		try
+		{
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = 1;
+			else
+			{
+				returnData = 0;
+				return returnData;
+			}
+
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = 0;
+			return  returnData;
+        } catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = 0;
+			return  returnData;
+		 }
+	}
+
+	public int Get_ReliefCall_Use()
+	{
+		String[] GetData = GetSettingData("안심통화");
+
+		int returnData = 0;
+		try
+		{
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = 1;
+			else
+			{
+				returnData = 0;
+				return returnData;
+			}
+
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = 0;
+			return  returnData;
+        } catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = 0;
+			return  returnData;
+		}
+	}
+
+	public int Get_RemoteCall_Use()
+	{
+		String[] GetData = GetSettingData("방문객원격통화");
+
+		int returnData = 0;
+		try
+		{
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = 1;
+			else
+			{
+				returnData = 0;
+				return returnData;
+			}
+
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = 0;
+			return  returnData;
+        } catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = 0;
+			return  returnData;
+		}
+	}
+
+	public int Get_MobileAppAuth_Use()
+	{
+		String[] GetData = GetSettingData("모바일앱사용자인증");
+
+		int returnData = 0;
+		try
+		{
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = 1;
+			else
+			{
+				returnData = 0;
+				return returnData;
+			}
+
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = 0;
+			return  returnData;
+        } catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = 0;
+			return  returnData;
+		}
+	}
+
+	public boolean Get_ElectricRange_Use()
+	{
+		String[] GetData = GetSettingData("전기레인지");
+
+		boolean returnData = false;
+		try
+		{
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = true;
+			else returnData = false;
+
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = false;
+			return  returnData;
+        } catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = false;
+			return  returnData;
+		}
+	}
+
+	public boolean getVisitedVehicleRegiUsage() {
+		String[] GetData = GetSettingData("방문객차량등록");
+
+		boolean returnData = false;
+		try {
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = true;
+			else returnData = false;
+
+			return returnData;
+		} catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = false;
+			return  returnData;
+        } catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = false;
+			return  returnData;
+		}
+	}
+
+	public boolean getBandLocationUsage() {
+		String[] GetData = GetSettingData("밴드위치확인");
+
+		boolean returnData = false;
+		try {
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = true;
+			else returnData = false;
+
+			return returnData;
+		} catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = false;
+			return  returnData;
+        } catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = false;
+			return  returnData;
+		}
+	}
+
+
+	/**
+	 * 피난사다리입하수신 사용유무 가져오기<br>
+	 *
+	 * @return boolean 타입 - true:사용, false:미사용
+	 */
+	public boolean GetEscapeLadderDownRecv()
+	{
+		int result = GetDeviceSetted(define.DEVICE_ID_ESCAPELADDER_DOWN_RECV);
+		if(result == DEV_DATA_ENABLE)
+		{
+			return true;
+		}
+		else
+		{
+			return false;
+		}
+	}
+
+	/**
+	 * 피난사다리 사용여부 설정
+	 * @param bUsage true: 사용함, false: 사용안함
+	 * @return true: 성공, false: 실패
+	 */
+	public boolean Set_RefugeLadderUsage(boolean bUsage) {
+		try {
+			Log.i(TAG, "[Set_RefugeLadderUsage] bUsage: " + bUsage);
+			String strSettingValue = "1(1:" + define.DEVICE_ID_EMERGENGY_LEDDER + "(" + define.DEVICE_DISABLE + ")";
+
+			if (bUsage) strSettingValue = "1(1:" + define.DEVICE_ID_EMERGENGY_LEDDER + "(" + define.DEVICE_ENABLE + ")";
+			else strSettingValue = "1(1:" + define.DEVICE_ID_EMERGENGY_LEDDER + "(" + define.DEVICE_DISABLE + ")";
+
+			Log.i(TAG, "[Set_RefugeLadderUsage] strSettingValue: " + strSettingValue);
+
+			UpdateSettingData("subdev_list", define.DEVICE_ID_EMERGENGY_LEDDER, 0, strSettingValue);
+
+			return true;
+		} catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			return false;
+        } catch (Exception e) {
+			Log.e(TAG, "[Exception] Set_RefugeLadderUsage(boolean bUsage)");
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			return false;
+		}
+	}
+
+    /**
+	 * SubDevListItem 사용유무 설정
+	 * param input boolean타입 true = 사용함, false = 사용안함
+	 * param Define_ID String타입 ID(예시: define.DEVICE_ID_BLE_SMARTKEY)
+	 * @return (boolean) true = 설정 성공, false = 설정 실패
+	 */
+	public boolean SetSubDevListItem(boolean input, String Define_ID)
+	{
+		String SettingValue = "사용안함";
+
+		if(Define_ID == null)
+		{
+			return false;
+		}
+
+		if(input == false)
+		{
+			SettingValue = "사용안함";
+		}
+		else
+		{
+			SettingValue = "사용함";
+		}
+
+		try
+		{
+			UpdateSettingData("subdev_list"
+					, Define_ID
+					, 0
+					, "1(1:"+Define_ID+"("+SettingValue+")"
+			);
+			return true;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			return false;
+        }
+		catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			return false;
+		}
+	}
+
+	public final static int DEV_DATA_NONE    = 0;
+	public final static int DEV_DATA_DISABLE = 1;
+	public final static int DEV_DATA_ENABLE  = 2;
+	public final static int DEV_DATA_ERROR   = 3;
+
+	public int GetDeviceSetted(String item)
+	{
+		String[] GetData = GetSettingData(item);
+		if (GetData == null) return DEV_DATA_NONE;
+
+		try
+		{
+			if (GetData[1].indexOf("사용함") > 0)
+				return DEV_DATA_ENABLE;
+			else
+				return DEV_DATA_DISABLE;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			return DEV_DATA_ERROR;
+        }
+		catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			return DEV_DATA_ERROR;
+		}
+	}
+
+	public void SetDeviceEnable(String DevName, boolean onoff)
+	{
+		ContentValues values = new ContentValues();
+		values.put("enable", onoff?"enable":"disable");
+		String condi = "id = "+DevName;
+		if(wdb!=null) wdb.update(SubDeviceTBL, values, condi, null);
+
+	}
+
+	public String[] GetDeviceinfo(String DevName)
+	{
+		String query = "select id, name, cnt,  enable, lononoff from "+SubDeviceTBL+" where id = \""+DevName+"\";";
+		if(wdb!=null)
+		{
+			Cursor cursor = wdb.rawQuery(query, null);
+			if (cursor.moveToNext() == true)
+			{
+				String[] getdata = new String[]{cursor.getString(0),cursor.getString(1),cursor.getString(2),cursor.getString(3),cursor.getString(4)};
+				return getdata;
+			}
+			cursor.close();
+		}
+
+		return null;
+	}
+
+	public boolean GetDeviceEnable(String DevName)
+	{
+		String query = "select enable from "+SubDeviceTBL+" where id = \""+DevName+"\";";
+		if(wdb!=null)
+		{
+			Cursor cursor = wdb.rawQuery(query, null);
+			if (cursor.moveToNext()==true)
+			{
+				if (cursor.getString(0).equals(DEV_ENABLE))
+				{
+					cursor.close();
+					return true;
+				}
+			}
+			cursor.close();
+		}
+
+		return false;
+	}
+
+	public void SetDeviceCount(String DevName, int  count)
+	{
+		ContentValues values = new ContentValues();
+		values.put("cnt", String.valueOf(count));
+		String condi = "id = "+DevName;
+		wdb.update(SubDeviceTBL, values, condi, null);
+
+	}
+
+
+	/**
+	 * 서브월패드 사용유무 가져오기<br>
+	 *
+	 * @return boolean 타입 - true:사용, false:미사용
+	 */
+	public boolean GetSubWpdUse() {
+		Log.d(TAG, "GetSubWpdUse");
+		int result = GetDeviceSetted(define.DEVICE_ID_SUBWALLPAD);
+		if (result == DEV_DATA_ENABLE) {
+			return true;
+		} else {
+			return false;
+		}
+	}
+
+	public static final int SUBWPD_CTR_NONUSE  		= 71;
+	public static final int SUBWPD_CTR_MAINREQ    	= 72;
+	public static final int SUBWPD_CTR_DIRECT	 	= 73;
+
+	/**
+	 * 서브월패드 조명연동 설정 종류 가져오기<br>
+	 *
+	 * @return int[] 타입
+	 */
+	public int[] GetSubWpdDirect_Light()
+	{
+		Log.d(TAG, "[GetSubWpdDirect_Light]");
+		String[] GetData = GetSettingData(define.DEVICE_ID_SUBWPD_DIRECT_LIGHT);
+
+		int returnData[] = {0, SUBWPD_CTR_NONUSE};
+		try
+		{
+			if (GetData == null) return returnData;
+
+			for (int i = 0; i < GetData.length; i++)
+				Log.e(TAG, "[GetSubWpdDirect_Light] GetData[" + i + "] = " + GetData[i]);
+
+			if (GetData[1].indexOf("사용함") > 0) {
+				returnData[0] = 1;
+				if (GetData[1].indexOf("(직접연동)") > 0)
+				{
+					returnData[1] = SUBWPD_CTR_DIRECT;
+				}
+				else if (GetData[1].indexOf("(메인요청)") > 0)
+				{
+					returnData[1] = SUBWPD_CTR_MAINREQ;
+				}
+				else
+				{
+					returnData[1] = SUBWPD_CTR_NONUSE;
+				}
+			}
+			else
+			{
+				returnData[0] = 0;
+			}
+
+			for (int i = 0; i < returnData.length; i++)
+				Log.e(TAG, "[GetSubWpdDirect_Light] returnData[" + i + "] = " + returnData[i]);
+
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData[0] = 0;
+			returnData[1] = SUBWPD_CTR_NONUSE;
+			return  returnData;
+        }
+		catch (Exception e) {
+			Log.e(TAG, "[Exception] GetSubWpdDirect_Light()");
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData[0] = 0;
+			returnData[1] = SUBWPD_CTR_NONUSE;
+			return  returnData;
+		}
+	}
+
+	/**
+	 * 서브월패드 난방연동 설정 종류 가져오기<br>
+	 *
+	 * @return int[] 타입
+	 */
+	public int[] GetSubWpdDirect_Heater()
+	{
+		Log.d(TAG, "[GetSubWpdDirect_Heater]");
+		String[] GetData = GetSettingData(define.DEVICE_ID_SUBWPD_DIRECT_HEATER);
+
+		int returnData[] = {0, SUBWPD_CTR_NONUSE};
+		try
+		{
+			if (GetData == null) return returnData;
+
+			for (int i = 0; i < GetData.length; i++)
+				Log.e(TAG, "[GetSubWpdDirect_Heater] GetData[" + i + "] = " + GetData[i]);
+
+			if (GetData[1].indexOf("사용함") > 0) {
+				returnData[0] = 1;
+				if (GetData[1].indexOf("(직접연동)") > 0)
+				{
+					returnData[1] = SUBWPD_CTR_DIRECT;
+				}
+				else if (GetData[1].indexOf("(메인요청)") > 0)
+				{
+					returnData[1] = SUBWPD_CTR_MAINREQ;
+				}
+				else
+				{
+					returnData[1] = SUBWPD_CTR_NONUSE;
+				}
+			}
+			else
+			{
+				returnData[0] = 0;
+			}
+
+			for (int i = 0; i < returnData.length; i++)
+				Log.e(TAG, "[GetSubWpdDirect_Heater] returnData[" + i + "] = " + returnData[i]);
+
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData[0] = 0;
+			returnData[1] = SUBWPD_CTR_NONUSE;
+			return  returnData;
+        }
+		catch (Exception e) {
+			Log.e(TAG, "[Exception] GetSubWpdDirect_Heater()");
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData[0] = 0;
+			returnData[1] = SUBWPD_CTR_NONUSE;
+			return  returnData;
+		}
+	}
+
+	/**
+	 * 서브월패드 가스연동 설정 종류 가져오기<br>
+	 *
+	 * @return int[] 타입
+	 */
+	public int[] GetSubWpdDirect_Gas()
+	{
+		Log.d(TAG, "[GetSubWpdDirect_Gas]");
+		String[] GetData = GetSettingData(define.DEVICE_ID_SUBWPD_DIRECT_GAS);
+
+		int returnData[] = {0, SUBWPD_CTR_NONUSE};
+		try
+		{
+			if (GetData == null) return returnData;
+
+			for (int i = 0; i < GetData.length; i++)
+				Log.e(TAG, "[GetSubWpdDirect_Gas] GetData[" + i + "] = " + GetData[i]);
+
+			if (GetData[1].indexOf("사용함") > 0) {
+				returnData[0] = 1;
+				if (GetData[1].indexOf("(직접연동)") > 0)
+				{
+					returnData[1] = SUBWPD_CTR_DIRECT;
+				}
+				else if (GetData[1].indexOf("(메인요청)") > 0)
+				{
+					returnData[1] = SUBWPD_CTR_MAINREQ;
+				}
+				else
+				{
+					returnData[1] = SUBWPD_CTR_NONUSE;
+				}
+			}
+			else
+			{
+				returnData[0] = 0;
+			}
+
+			for (int i = 0; i < returnData.length; i++)
+				Log.e(TAG, "[GetSubWpdDirect_Gas] returnData[" + i + "] = " + returnData[i]);
+
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData[0] = 0;
+			returnData[1] = SUBWPD_CTR_NONUSE;
+			return  returnData;
+        }
+		catch (Exception e) {
+			Log.e(TAG, "[Exception] GetSubWpdDirect_Gas()");
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData[0] = 0;
+			returnData[1] = SUBWPD_CTR_NONUSE;
+			return  returnData;
+		}
+	}
+
+	/**
+	 * 서브월패드 도어락연동 설정 종류 가져오기<br>
+	 *
+	 * @return int[] 타입
+	 */
+	public int[] GetSubWpdDirect_Dlock()
+	{
+		Log.d(TAG, "[GetSubWpdDirect_Dlock]");
+		String[] GetData = GetSettingData(define.DEVICE_ID_SUBWPD_DIRECT_DLOCK);
+
+		int returnData[] = {0, SUBWPD_CTR_NONUSE};
+		try
+		{
+			if (GetData == null) return returnData;
+
+			for (int i = 0; i < GetData.length; i++)
+				Log.e(TAG, "[GetSubWpdDirect_Dlock] GetData[" + i + "] = " + GetData[i]);
+
+			if (GetData[1].indexOf("사용함") > 0) {
+				returnData[0] = 1;
+				if (GetData[1].indexOf("(직접연동)") > 0)
+				{
+					returnData[1] = SUBWPD_CTR_DIRECT;
+				}
+				else if (GetData[1].indexOf("(메인요청)") > 0)
+				{
+					returnData[1] = SUBWPD_CTR_MAINREQ;
+				}
+				else
+				{
+					returnData[1] = SUBWPD_CTR_NONUSE;
+				}
+			}
+			else
+			{
+				returnData[0] = 0;
+			}
+
+			for (int i = 0; i < returnData.length; i++)
+				Log.e(TAG, "[GetSubWpdDirect_Dlock] returnData[" + i + "] = " + returnData[i]);
+
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData[0] = 0;
+			returnData[1] = SUBWPD_CTR_NONUSE;
+			return  returnData;
+        } catch (Exception e) {
+			Log.e(TAG, "[Exception] GetSubWpdDirect_Dlock()");
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData[0] = 0;
+			returnData[1] = SUBWPD_CTR_NONUSE;
+			return  returnData;
+		}
+	}
+
+	/**
+	 * 서브월패드 환기연동 설정 종류 가져오기<br>
+	 *
+	 * @return int[] 타입
+	 */
+	public int[] GetSubWpdDirect_Venti()
+	{
+		Log.d(TAG, "[GetSubWpdDirect_Venti]");
+		String[] GetData = GetSettingData(define.DEVICE_ID_SUBWPD_DIRECT_VENTI);
+
+		int returnData[] = {0, SUBWPD_CTR_NONUSE};
+		try
+		{
+			if (GetData == null) return returnData;
+
+			for (int i = 0; i < GetData.length; i++)
+				Log.e(TAG, "[GetSubWpdDirect_Venti] GetData[" + i + "] = " + GetData[i]);
+
+			if (GetData[1].indexOf("사용함") > 0) {
+				returnData[0] = 1;
+				if (GetData[1].indexOf("(직접연동)") > 0)
+				{
+					returnData[1] = SUBWPD_CTR_DIRECT;
+				}
+				else if (GetData[1].indexOf("(메인요청)") > 0)
+				{
+					returnData[1] = SUBWPD_CTR_MAINREQ;
+				}
+				else
+				{
+					returnData[1] = SUBWPD_CTR_NONUSE;
+				}
+			}
+			else
+			{
+				returnData[0] = 0;
+			}
+
+			for (int i = 0; i < returnData.length; i++)
+				Log.e(TAG, "[GetSubWpdDirect_Venti] returnData[" + i + "] = " + returnData[i]);
+
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData[0] = 0;
+			returnData[1] = SUBWPD_CTR_NONUSE;
+			return  returnData;
+        } catch (Exception e) {
+			Log.e(TAG, "[Exception] GetSubWpdDirect_Venti()");
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData[0] = 0;
+			returnData[1] = SUBWPD_CTR_NONUSE;
+			return  returnData;
+		}
+	}
+
+	/**
+	 * 서브월패드 국선전화연동 설정 종류 가져오기<br>
+	 *
+	 * @return int[] 타입
+	 */
+	public int[] GetSubWpdDirect_PSTN()
+	{
+		Log.d(TAG, "[GetSubWpdDirect_PSTN]");
+		String[] GetData = GetSettingData(define.DEVICE_ID_SUBWPD_DIRECT_PSTN);
+
+		int returnData[] = {0, SUBWPD_CTR_NONUSE};
+		try
+		{
+			if (GetData == null) return returnData;
+
+			for (int i = 0; i < GetData.length; i++)
+				Log.e(TAG, "[GetSubWpdDirect_PSTN] GetData[" + i + "] = " + GetData[i]);
+
+			if (GetData[1].indexOf("사용함") > 0) {
+				returnData[0] = 1;
+				if (GetData[1].indexOf("(직접연동)") > 0)
+				{
+					returnData[1] = SUBWPD_CTR_DIRECT;
+				}
+				else if (GetData[1].indexOf("(메인요청)") > 0)
+				{
+					returnData[1] = SUBWPD_CTR_MAINREQ;
+				}
+				else
+				{
+					returnData[1] = SUBWPD_CTR_NONUSE;
+				}
+			}
+			else
+			{
+				returnData[0] = 0;
+			}
+
+			for (int i = 0; i < returnData.length; i++)
+				Log.e(TAG, "[GetSubWpdDirect_PSTN] returnData[" + i + "] = " + returnData[i]);
+
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData[0] = 0;
+			returnData[1] = SUBWPD_CTR_NONUSE;
+			return  returnData;
+        } catch (Exception e) {
+			Log.e(TAG, "[Exception] GetSubWpdDirect_PSTN()");
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData[0] = 0;
+			returnData[1] = SUBWPD_CTR_NONUSE;
+			return  returnData;
+		}
+	}
+
+	/**
+	 * 게이트웨이 모델 종류를 가져온다.<br>
+	 * 1020GL의 게이트웨이 종류 : IGW_200, IGW_300<br>
+	 * 리턴 값 : define 정의<br>
+	 * * DB에 값이 없음, 미정의 모델, exception인 경우 : 음수 리턴<br>
+	 *
+	 * @return int 타입 - 100(사용안함), 200(IGW200), 300(IGW300)
+	 */
+	public int GetGatewayModelKindInfo() {
+		Log.d(TAG, "GetGatewayModelKindInfo");
+
+		String[] DataInfo = GetSettingData("게이트웨이모델");
+		try {
+			if (DataInfo == null) {
+				Log.w(TAG, "GetSettingData(게이트웨이모델) is null");
+
+				// 모델마다 기본설정 부여
+				// 1020GL : IGW200
+				// D101   : IGW300
+				if (mModelType == Version.MODEL_TYPE.IHN_1020GL) {
+					// IGW200 설정
+					UpdateSettingData("subdev_list"
+							, "게이트웨이모델"
+							, 0
+							, "1(1:"+"게이트웨이모델"+"("+"사용함"+")종류("+"IGW200"+")"
+					);
+
+					//return Version.GATEWAY_MODEL.IGW_200;
+				}
+				else if (mModelType == Version.MODEL_TYPE.IHN_D101 || mModelType == Version.MODEL_TYPE.IHN_D101_I
+						|| mModelType == Version.MODEL_TYPE.IHN_D101K || mModelType == Version.MODEL_TYPE.IHN_D101K_I
+						|| mModelType == Version.MODEL_TYPE.IHN_1010GL || mModelType == Version.MODEL_TYPE.IHN_1010GL_I)
+				{
+					// IGW300 설정
+					UpdateSettingData("subdev_list"
+							, "게이트웨이모델"
+							, 0
+							, "1(1:"+"게이트웨이모델"+"("+"사용함"+")종류("+"IGW300"+")"
+					);
+
+					//return Version.GATEWAY_MODEL.IGW_300;
+				}
+				else {
+					return -2;
+				}
+
+				DataInfo = GetSettingData("게이트웨이모델");
+				if (DataInfo != null) {
+					for (int i = 0; i < DataInfo.length; i++) {
+						Log.i(TAG, "[GetGatewayModelKindInfo] null -> default : " + DataInfo[i]);
+					}
+				}
+				else {
+					return -3;
+				}
+			}
+
+			String devInfo = DataInfo[1];
+
+			devInfo = devInfo.replace('(', '_');
+			devInfo = devInfo.replace(':', '_');
+			devInfo = devInfo.replace(')', '_');
+
+			String[] parseData = devInfo.split("_");
+
+			//[0] - 기기번호
+			//[1] - 회로수
+			//[2] - 기기이름
+			//[3] - 사용유무 (사용함 or 사용안함)------------> 사용할 정보
+			//[4] - 명칭 (종류)
+			//[5] - 명칭에 대한 정보 ----------------------> 사용할 정보, ','로 구분됨
+
+			if (parseData[3].equals("사용함") == true) {
+				String TempData = parseData[5];
+
+				if (TempData == null) {
+					Log.e(TAG, "TempData is null");
+					return -3;
+				}
+
+				if (TempData.equals("IGW200")) {
+					Log.d(TAG, "게이트웨이 모델 종류 : IGW200");
+					return Version.GATEWAY_MODEL.IGW_200;
+				}
+				else if (TempData.equals("IGW300")) {
+					Log.d(TAG, "게이트웨이 모델 종류 : IGW300");
+					return Version.GATEWAY_MODEL.IGW_300;
+				}
+				else {
+					Log.d(TAG, "게이트웨이 모델 종류 : 미정의");
+					return Version.GATEWAY_MODEL.OTHER;
+				}
+			}
+			else {
+				Log.d(TAG, "게이트웨이모델 종류 : 사용안함");
+				return Version.GATEWAY_MODEL.NON_USE;
+			}
+		} catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			return  -4;
+        } catch (Exception e) {
+			Log.e(TAG, "[Exception] GetGatewayModelKindInfo()");
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			return  -4;
+		}
+	}
+
+	public boolean Get_RemoteMeter_Use()
+	{
+		boolean ret = false;
+		String[] DataInfo = GetSettingData("원격검침");
+
+		if(DataInfo != null)
+		{
+			for(int i = 0; i < DataInfo.length; i++)
+			{
+				Log.i(TAG, "[Get_RemoteMeter_Use] data : " + DataInfo[i]);
+			}
+		}
+		else
+		{
+			Log.w(TAG, "[Get_RemoteMeter_Use] - data null --> false");
+			return false;
+		}
+
+		String devInfo = DataInfo[1];
+
+		devInfo = devInfo.replace('(', '_');
+		devInfo = devInfo.replace(':', '_');
+		devInfo = devInfo.replace(')', '_');
+
+		String[] parseData = devInfo.split("_");
+
+		if(parseData[3].equals("사용함") == true)
+		{
+			Log.i(TAG, "[Get_RemoteMeter_Use] - RemoteMeter USE : true");
+			ret = true;
+		}
+		else
+		{
+			Log.i(TAG, "[Get_RemoteMeter_Use] - RemoteMeter USE : false");
+			ret = false;
+		}
+
+		return ret;
+	}
+
+
+
+	public boolean StartTransaction()
+	{
+		try
+		{
+			if(wdb!=null) wdb.beginTransaction();
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			return false;
+        } catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			return false;
+		}
+		return true;
+	}
+	public boolean EndTransaction(boolean success)
+	{
+		try
+		{
+			if (success) {
+				if(wdb!=null) wdb.setTransactionSuccessful();
+			}
+			if(wdb!=null) wdb.endTransaction();
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			return false;
+        } catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			return false;
+		}
+
+		return true;
+	}
+
+
+	public void initSubDeviceTBL()
+	{
+		if(SubDevInitData == null)
+			Init_SubDevInitData();
+		for (int i=0;i<SubDevInitData.length;i++)
+		{
+			ContentValues values = new ContentValues();
+			//protected static final String CreateSubDeviceDB     = "create table " + SubDeviceTBL  + " (id text unique, name  text, devcnt text, cnt text, loc text, enable text, lononoff text);";
+			values.put("id", SubDevInitData[i][0]);
+			values.put("name", SubDevInitData[i][1]);
+			values.put("devcnt", SubDevInitData[i][2]);
+			values.put("cnt", SubDevInitData[i][3]);
+			values.put("loc", SubDevInitData[i][4]);
+			values.put("enable", SubDevInitData[i][5]);
+			values.put("logonoff", SubDevInitData[i][6]);
+			if(wdb!=null) wdb.insert(SubDeviceTBL, null, values);
+		}
+	}
+
+	public void InsertSettingData(String Type, String Name, int cnt, String value)
+	{
+		ContentValues values = new ContentValues();
+		//create table " + SettingTBL  + " (type  text, name text unique, cnt INTEGER, value text);";
+		values.put("type", Type);
+		values.put("name", Name);
+		values.put("cnt", cnt);
+		values.put("value", value);
+		if(wdb!=null) wdb.insert(SettingTBL, null, values);
+	}
+
+	public void UpdateSettingData(String Type, String Name, int cnt, String value)
+	{
+		String sqlStr = "DELETE FROM "+SettingTBL+" where name=\""+Name+"\";";
+		if(wdb!=null) wdb.execSQL(sqlStr);
+		InsertSettingData(Type, Name, cnt, value );
+	}
+
+	public String[] GetSettingData(String Name)
+	{
+		String query = "select name, value from "+SettingTBL+" where name = \""+Name+"\";";
+		if(wdb!=null)
+		{
+			Cursor cursor = wdb.rawQuery(query, null);
+			while (cursor.moveToNext())
+			{
+				String[] getdata = new String[]{cursor.getString(0).trim(),cursor.getString(1).trim()};
+
+				return getdata;
+			}
+			cursor.close();
+		}
+
+		return null;
+	}
+
+	public List<String[]> GetGuardList()
+	{
+		List<String[]> GuardList = new ArrayList<String[]>();
+		//create table " + SettingTBL  + " (type  text, name text unique, cnt INTEGER, value text);";
+		String query = "select name, value from "+SettingTBL+" where type = \"guard_list\";";
+		Cursor cursor = wdb.rawQuery(query, null);
+		while (cursor.moveToNext())
+		{
+			String[] getdata = new String[]{cursor.getString(0),cursor.getString(1)};
+
+			GuardList.add(getdata);
+		}
+		cursor.close();
+		return GuardList;
+	}
+
+	public String[] GetSettingGroup()
+	{
+		//create table " + SettingTBL  + " (type  text, name text unique, cnt INTEGER, value text);";
+		String query = "select name, value from "+SettingTBL+" group by type;";
+		Cursor cursor = wdb.rawQuery(query, null);
+		String retval = "";
+		int count = 0;
+		while (cursor.moveToNext())
+		{
+			if (count == 0)
+				retval = cursor.getString(0);
+			else
+				retval += (define.DEVCTR_CMD_SPLITER+cursor.getString(0));
+			count++;
+		}
+
+		cursor.close();
+		if (count == 0) return null;
+		return retval.split(define.DEVCTR_CMD_SPLITER);
+	}
+
+	public List<String[]> GetSettingGroupData(String groupname)
+	{
+		//create table " + SettingTBL  + " (type  text, name text unique, cnt INTEGER, value text);";
+		String query = "select name, value from "+SettingTBL+" where type = \""+groupname+"\";";
+		Cursor cursor = wdb.rawQuery(query, null);
+		List<String[]> retVal = new ArrayList<String[]>();
+
+		while (cursor.moveToNext())
+		{
+			String retdata[] = new String[2];
+			retdata[0] = cursor.getString(0);
+			retdata[1] = cursor.getString(1);
+			retVal.add(retdata);
+		}
+		cursor.close();
+		return retVal;
+	}
+	public int GetGroupCount(String groupname)
+	{
+		String query = "select count() from "+SettingTBL+" where type = \""+groupname+"\";";
+		Cursor cursor = wdb.rawQuery(query, null);
+		int count = 0;
+		while (cursor.moveToNext())
+		{
+			count = cursor.getInt(0);
+		}
+		cursor.close();
+		return count;
+	}
+
+	public void DeleteGuardData()
+	{
+		try
+		{
+			String sqlStr = "DELETE FROM "+SettingTBL+" where type = \"guard_list\";";
+			wdb.execSQL(sqlStr);
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+        } catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+		}
+	}
+
+	public void DeleteGroupData(String groupName)
+	{
+		try
+		{
+			String sqlStr = "DELETE FROM "+SettingTBL+" where type = \""+groupName+"\";";
+			wdb.execSQL(sqlStr);
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+        } catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+		}
+	}
+
+	public long insertWallPADDB(String name, String Data)
+	{
+		ContentValues values = new ContentValues();
+		//private static final String CreateSubDeviceDB = "create table " + SubDeviceTBL  + " (id text unique, name  text, count text, enable text, lononoff text);";
+		values.put("id", name);
+		values.put("data", Data);
+		long ret = wdb.insert(SubDeviceTBL, null, values);
+
+		return ret;
+	}
+
+	private static Pattern mPattern = Pattern.compile("^(([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.){3}([01]?\\d\\d?|2[0-4]\\d|25[0-5])$");
+
+	/**
+	 * IP유효성 검사
+	 * @return boolean true = 이상없음, false = 문제있음
+	 * **/
+	public boolean Validate_IPAddress(String IPAddress)
+	{
+		try
+		{
+			Log.d(TAG, "[Validate_IPAddress] IPAddress [" + IPAddress + "]");
+			if (IPAddress == null) return false;
+			return mPattern.matcher(IPAddress).matches();
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			return false;
+        } catch (Exception e) {
+			Log.e(TAG, "[Exception] Validate_IPAddress(String IPAddress)");
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			return false;
+		}
+	}
+
+	//스마트키친 사용여부
+	public boolean Get_SmartKitchen_Use()
+	{
+		String[] GetData = GetSettingData("스마트키친");
+
+		boolean returnData = false;//DB에 값 없는 경우 사용안함으로 리턴
+		try
+		{
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = true;
+			else
+			{
+				returnData = false;
+				return returnData;
+			}
+
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = false;
+			return  returnData;
+        } catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = false;
+			return  returnData;
+		}
+	}
+
+	/**
+	 * 간편모드UX 지원 여부 (관리자용)
+	 * @return True일 경우 환결설정에 간편모드 UX 설정 추가
+	 */
+	public boolean Get_EasyModeUX_Support() {
+		String[] GetData = GetSettingData("간편모드UX지원");
+
+		boolean returnData = false;//DB에 값 없는 경우 사용안함으로 리턴
+		try
+		{
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = true;
+			else
+			{
+				returnData = false;
+				return returnData;
+			}
+
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = false;
+			return returnData;
+        } catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = false;
+			return returnData;
+		}
+	}
+
+	/**
+	 * 방문객원격통화 현관 문열림 기능 사용 여부
+	 * @return True일 경우 방문객원격통화 사용자 설정 팝업에 항목 추가
+	 */
+	public boolean Get_RemoteCall_DoorOpenUse() {
+		String[] GetData = GetSettingData("방문객원격통화-현관문열림");
+
+		boolean returnData = false;//DB에 값 없는 경우 사용안함으로 리턴
+		try
+		{
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = true;
+			else
+			{
+				returnData = false;
+				return returnData;
+			}
+
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = false;
+			return returnData;
+        } catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = false;
+			return returnData;
+		}
+	}
+
+	/**
+	 * 방문객원격통화 홈뷰어 기능 사용 여부
+	 * @return True일 경우 방문객원격통화 사용자 설정 팝업에 항목 추가
+	 */
+	public boolean Get_RemoteCall_HomeViewerUse() {
+		String[] GetData = GetSettingData("방문객원격통화-홈뷰어");
+
+		boolean returnData = false;//DB에 값 없는 경우 사용안함으로 리턴
+		try
+		{
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = true;
+			else
+			{
+				returnData = false;
+				return returnData;
+			}
+
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = false;
+			return returnData;
+        }
+		catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = false;
+			return returnData;
+		}
+	}
+
+	/**
+	 * 거동수상자녹화 사용 여부
+	 * @return True일 경우 거동수상자 발생시 거동수상자 녹화 시작
+	 */
+	public boolean Get_Stranger_RecordUse() {
+		String[] GetData = GetSettingData("거동수상자녹화");
+
+		boolean returnData = false;//DB에 값 없는 경우 사용안함으로 리턴
+		try
+		{
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = true;
+			else
+			{
+				returnData = false;
+				return returnData;
+			}
+
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = false;
+			return returnData;
+        } catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = false;
+			return returnData;
+		}
+	}
+
+	/**
+	 * 비상접점스위치 사용 여부
+	 */
+	public boolean Get_EmergencyContact_SwitchUse() {
+		String[] GetData = GetSettingData("비상접점스위치");
+
+		boolean returnData = false;//DB에 값 없는 경우 사용안함으로 리턴
+		try
+		{
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = true;
+			else
+			{
+				returnData = false;
+				return returnData;
+			}
+
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = false;
+			return returnData;
+        } catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = false;
+			return returnData;
+		}
+	}
+
+	/**
+	 * 서브폰 날씨정보 역순 전송 사용 여부
+	 */
+	public boolean Get_SendWeather_ReverseUse() {
+		String[] GetData = GetSettingData("서브폰날씨정보역순전송");
+
+		boolean returnData = false;//DB에 값 없는 경우 사용안함으로 리턴
+		try
+		{
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = true;
+			else
+			{
+				returnData = false;
+				return returnData;
+			}
+
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = false;
+			return returnData;
+        } catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = false;
+			return returnData;
+		}
+	}
+
+	/**
+	 * 안전가로등 사용유무 판별
+	 *
+	 * @return boolean 타입 - true:사용, false:미사용
+	 */
+	public boolean Get_SafeStreetLightUse() {
+		String[] GetData = GetSettingData(define.DEVICE_ID_SAFESTREETLIGHT);
+
+		boolean returnData = false;
+		try {
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = true;
+			else returnData = false;
+
+			return returnData;
+		} catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = false;
+			return  returnData;
+        } catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = false;
+			return  returnData;
+		}
+	}
+
+	/**
+	 * 욕실센서등 사용 여부
+	 */
+	public boolean Get_BathSensorUse() {
+		String[] GetData = GetSettingData("욕실센서등");
+
+		boolean returnData = false;//DB에 값 없는 경우 사용안함으로 리턴
+		try
+		{
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = true;
+			else
+			{
+				returnData = false;
+				return returnData;
+			}
+
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = false;
+			return returnData;
+        } catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = false;
+			return returnData;
+		}
+	}
+
+
+	/**=================================================================
+	 * 통화기능 설정
+	 * =================================================================*/
+	public boolean Get_FrontCallUse() {
+		String[] GetData = GetSettingData(define.DEVICE_ID_FRONT_CALL);
+
+		boolean returnData = true; // DB에 값 없는 경우 사용함으로 반환(초기값)
+		try {
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = true;
+			else returnData = false;
+
+			return returnData;
+		} catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = false;
+			return  returnData;
+        } catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = false;
+			return  returnData;
+		}
+	}
+
+	public boolean Get_LobbyCallUse() {
+		String[] GetData = GetSettingData(define.DEVICE_ID_LOBBY_CALL);
+
+		boolean returnData = true; // DB에 값 없는 경우 사용함으로 반환(초기값)
+		try {
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = true;
+			else returnData = false;
+
+			return returnData;
+		} catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = false;
+			return  returnData;
+        } catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = false;
+			return  returnData;
+		}
+	}
+
+	public boolean Get_GuardCallUse() {
+		String[] GetData = GetSettingData(define.DEVICE_ID_GUARD_CALL);
+
+		boolean returnData = true; // DB에 값 없는 경우 사용함으로 반환(초기값)
+		try {
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = true;
+			else returnData = false;
+
+			return returnData;
+		} catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = false;
+			return  returnData;
+        } catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = false;
+			return  returnData;
+		}
+	}
+
+	public boolean Get_ResidenceCallUse() {
+		String[] GetData = GetSettingData(define.DEVICE_ID_RESIDENCE_CALL);
+
+		boolean returnData = true; // DB에 값 없는 경우 사용함으로 반환(초기값)
+		try {
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = true;
+			else returnData = false;
+
+			return returnData;
+		} catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = false;
+			return  returnData;
+        } catch (Exception e) {
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = false;
+			return  returnData;
+		}
+	}
+
+	public boolean Get_PSTNCallUse() {
+		String[] GetData = GetSettingData(define.DEVICE_ID_PSTN_CALL);
+
+		boolean returnData = true; // DB에 값 없는 경우 사용함으로 반환(초기값)
+		try {
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = true;
+			else returnData = false;
+
+			return returnData;
+		} catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = false;
+			return  returnData;
+        } catch (Exception e) {
+			//e.printStackTrace();
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = false;
+			return  returnData;
+		}
+	}
+
+	public boolean Get_CallHistoryUse() {
+		String[] GetData = GetSettingData(define.DEVICE_ID_CALLHISTOTY);
+
+		boolean returnData = true; // DB에 값 없는 경우 사용함으로 반환(초기값)
+		try {
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = true;
+			else returnData = false;
+
+			return returnData;
+		} catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = false;
+			return  returnData;
+        } catch (Exception e) {
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = false;
+			return  returnData;
+		}
+	}
+
+	public boolean Get_VisitorPicUse() {
+		String[] GetData = GetSettingData(define.DEVICE_ID_VISITORPIC);
+
+		boolean returnData = true; // DB에 값 없는 경우 사용함으로 반환(초기값)
+		try {
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = true;
+			else returnData = false;
+
+			return returnData;
+		} catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = false;
+			return  returnData;
+        } catch (Exception e) {
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = false;
+			return  returnData;
+		}
+	}
+
+	/**
+	 * 방문객원격통화 스트림 서버 WEB 포트 가져오는 함수
+	 *
+	 * @return 8089 or 8089
+	 */
+	public String Get_RemoteCallSvr_WebPort()
+	{
+		String[] GetData = GetSettingData(define.DEVICE_ID_REMOTECALLSVR_WEBPORT);
+
+		String returnData = "8089";
+		try
+		{
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0)
+			{
+				if (GetData[1].indexOf("(8088)") >0)
+				{
+					returnData = "8088";
+				}
+				else
+				{
+					returnData = "8089";
+				}
+			}
+			Log.d(TAG, "[Get_RemoteCallSvr_WebPort] returnData [" + returnData + "]");
+
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			return  returnData;
+        } catch (Exception e) {
+			LogUtil.errorLogInfo("", TAG, e);
+			return  returnData;
+		}
+	}
+
+	/**
+	 * 환기케어서비스QR 사용 유무
+	 * @author 신범식
+	 * @since
+	 **/
+	public boolean Get_VentiServiceQRUse() {
+		String[] GetData = GetSettingData(define.DEVICE_ID_VENTISERVICE_QR);
+
+		boolean returnData = false; // DB에 값 없는 경우 사용안함으로 반환(초기값)
+		try {
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = true;
+			else returnData = false;
+
+			return returnData;
+		} catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = false;
+			return  returnData;
+        } catch (Exception e) {
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = false;
+			return  returnData;
+		}
+	}
+
+	/**
+	 * 장애인세대 설정 유무
+	 **/
+	public boolean Get_TheDisabledHomeSet() {
+		String[] GetData = GetSettingData(define.DEVICE_ID_THEDISABLED_HOME);
+
+		boolean returnData = false; // DB에 값 없는 경우 사용함으로 반환(초기값)
+		try {
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = true;
+			else returnData = false;
+
+			return returnData;
+		} catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = false;
+			return  returnData;
+        } catch (Exception e) {
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = false;
+			return  returnData;
+		}
+	}
+
+	/**
+	 * 이산화탄소절감률 설정 유무
+	 **/
+	public boolean Get_CO2ReductionSet() {
+		String[] GetData = GetSettingData(define.DEVICE_ID_CO2_REDUCTION);
+
+		boolean returnData = false; // DB에 값 없는 경우 사용함으로 반환(초기값)
+		try {
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = true;
+			else returnData = false;
+
+			return returnData;
+		} catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = false;
+			return  returnData;
+        } catch (Exception e) {
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = false;
+			return  returnData;
+		}
+	}
+
+	public static final int HEATONEDEVICE_NONE  			= 80;
+	public static final int HEATONEDEVICE_VENTI  			= 81;
+	public static final int HEATONEDEVICE_LIGHT  			= 82;
+	public static final int HEATONEDEVICE_VENTILIGHT  		= 83;
+
+	/**
+	 * 난방일체형 설정정보 가져오기
+	 * @return int 타입 - 80(사용안함), 81(난방환기), 82(난방조명), 83(난방환기조명)
+	 */
+	public int Get_HeatOneDevice_Use() {
+		String[] GetData = GetSettingData("난방일체형");
+		try {
+			if (GetData != null) {
+				String devInfo = GetData[1];
+				devInfo = devInfo.replace('(', '_');
+				devInfo = devInfo.replace(':', '_');
+				devInfo = devInfo.replace(')', '_');
+
+				String[] parseData = devInfo.split("_");
+
+				//[0] - 기기번호
+				//[1] - 회로수
+				//[2] - 기기이름
+				//[3] - 사용유무 (사용함 or 사용안함)------------> 사용할 정보
+				//[4] - 명칭 (종류)
+				//[5] - 명칭에 대한 정보 ----------------------> 사용할 정보, ','로 구분됨
+				if (parseData[3].equals("사용함") == true) {
+					String TempData = parseData[5];
+					if (TempData != null) {
+						if (TempData.equals("난방환기")) {
+							Log.d(TAG, "난방일체형: 난방환기");
+							return HEATONEDEVICE_VENTI;
+						} else if (TempData.equals("난방조명")) {
+							Log.d(TAG, "난방일체형: 난방조명");
+							return HEATONEDEVICE_LIGHT;
+						} else if (TempData.equals("난방환기조명")) {
+							Log.d(TAG, "난방일체형: 난방환기조명");
+							return HEATONEDEVICE_VENTILIGHT;
+						} else {
+							Log.d(TAG, "난방일체형: 미정의");
+						}
+					}
+				}
+			}
+		} catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+        } catch (Exception e) {
+			Log.e(TAG, "[Exception] Get_HeatOneDevice_Use()");
+			LogUtil.errorLogInfo("", TAG, e);
+		}
+		return HEATONEDEVICE_NONE;
+	}
+
+	public static final int SMARTSWITCH_ENERGY_NONE  			= 90;
+	public static final int SMARTSWITCH_ENERGY_REALTIME  		= 91;
+	public static final int SMARTSWITCH_ENERGY_REMOTE			= 92;
+
+	/**
+	 * 스마트스위치 에너지정보 설정정보 가져오기
+	 * @return int 타입 - 90(사용안함), 91(실시간검침기), 92(원격검침기)
+	 */
+	public int Get_SmartSwitchEnergy_Kind() {
+		String[] GetData = GetSettingData("스마트스위치에너지종류");
+		try {
+			if (GetData != null) {
+				String devInfo = GetData[1];
+				devInfo = devInfo.replace('(', '_');
+				devInfo = devInfo.replace(':', '_');
+				devInfo = devInfo.replace(')', '_');
+
+				String[] parseData = devInfo.split("_");
+
+				//[0] - 기기번호
+				//[1] - 회로수
+				//[2] - 기기이름
+				//[3] - 사용유무 (사용함 or 사용안함)------------> 사용할 정보
+				//[4] - 명칭 (종류)
+				//[5] - 명칭에 대한 정보 ----------------------> 사용할 정보, ','로 구분됨
+				if (parseData[3].equals("사용함") == true) {
+					String TempData = parseData[5];
+					if (TempData != null) {
+						if (TempData.equals("실시간검침기")) {
+							Log.d(TAG, "[Get_SmartSwitchEnergy_Kind] 스마트스위치 에너지 종류: 실시간검침기");
+							return SMARTSWITCH_ENERGY_REALTIME;
+						} else if (TempData.equals("원격검침기")) {
+							Log.d(TAG, "[Get_SmartSwitchEnergy_Kind] 스마트스위치 에너지 종류: 원격검침기");
+							return SMARTSWITCH_ENERGY_REMOTE;
+						} else {
+							Log.d(TAG, "[Get_SmartSwitchEnergy_Kind] 스마트스위치 에너지 종류: 미정의");
+						}
+					}
+				}
+			}
+		} catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+        } catch (Exception e) {
+			Log.e(TAG, "[Exception] Get_SmartSwitchEnergy_Kind()");
+			LogUtil.errorLogInfo("", TAG, e);
+		}
+		return SMARTSWITCH_ENERGY_NONE;
+	}
+
+	public static final int LCDKEEPER_NONE = 100;
+	public static final int LCDKEEPER_PROTECT = 101;
+	public static final int LCDKEEPER_RECOVER = 102;
+	public static final int LCDKEEPER_PROTECT_RECOVER = 103;
+
+	/**
+	 * LCD Keeper 사용여부 확인
+	 * @return LCDKEEPER_NONE - 사용안함(100), LCDKEEPER_PROTECT - 보호모드(101), LCDKEEPER_RECOVER - 복구모드(102), LCDKEEPER_PROTECT_RECOVER - 보호/복구모드 (103)
+	 */
+	public int getLCDKeeperUsage() {
+		int returnData = LCDKEEPER_NONE;
+		try {
+			String[] GetData = GetSettingData(define.DEVICE_ID_LCDKEEPER);
+			if (GetData == null) return returnData;
+			if (GetData[1].indexOf("사용함") > 0) {
+				if (GetData[1].indexOf("(보호모드)") > 0) {
+					returnData = LCDKEEPER_PROTECT;
+				} else if (GetData[1].indexOf("(복구모드)") > 0) {
+					returnData = LCDKEEPER_RECOVER;
+				} else if (GetData[1].indexOf("(보호/복구모드)") > 0) {
+					returnData = LCDKEEPER_PROTECT_RECOVER;
+				}
+			}
+			Log.d(TAG, "[getLCDKeeperUsage] LCDKeeperUsage [" + returnData + "]");
+		} catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+        } catch (Exception e) {
+			LogUtil.errorLogInfo("", TAG, e);
+		}
+		return returnData;
+	}
+
+	public static final int POWERCONTROLLER_TYPE_NONE 		= 110;
+	public static final int POWERCONTROLLER_TYPE_DEFAULT    = 111;
+	public static final int POWERCONTROLLER_TYPE_DIRECT     = 112;
+	public static final int POWERCONTROLLER_TYPE_MEASURE    = 113;
+
+	public static final String POWER_CONTROLLER_TYPE_DEFAULT = "기본";
+	public static final String POWER_CONTROLLER_TYPE_DIRECT = "직결보드";
+	public static final String POWER_CONTROLLER_TYPE_MEASURE = "전력측정직결보드";
+
+	/**
+	 * 통합전력제어기 종류를 가져온다.<br>
+	 * @return int 타입
+	 *  - POWERCONTROLLER_TYPE_NONE : 사용안함(110),
+	 *  - POWERCONTROLLER_TYPE_DEFAULT : 기본(111),
+	 *  - POWERCONTROLLER_TYPE_DIRECT : 직결보드(112)
+	 *  - POWERCONTROLLER_TYPE_MEASURE : 전력측정직결보드(113)
+	 */
+	public int Get_PowerControllerType_Info() {
+		String[] GetData = GetSettingData("통합전력제어기");
+
+		int returnData = 0;
+		try {
+			Log.d(TAG, "Get_PowerControllerType_Info");
+			String[] DataInfo = GetSettingData("통합전력제어기");
+			if (DataInfo == null) {
+				Log.w(TAG, "GetSettingData(통합전력제어기) is null");
+
+				DataInfo = GetSettingData("통합전력제어기");
+				if (DataInfo != null) {
+					for (int i = 0; i < DataInfo.length; i++) {
+						Log.i(TAG, "[Get_PowerControllerType_Info] null -> default : " + DataInfo[i]);
+					}
+				}
+				else {
+					return -3;
+				}
+			}
+
+			String devInfo = DataInfo[1];
+
+			devInfo = devInfo.replace('(', '_');
+			devInfo = devInfo.replace(':', '_');
+			devInfo = devInfo.replace(')', '_');
+
+			String[] parseData = devInfo.split("_");
+			if (parseData[3].equals("사용함") == true) {
+				String TempData = parseData[5];
+
+				if (TempData == null) {
+					Log.e(TAG, "TempData is null");
+					return -3;
+				}
+
+				if (TempData.equals(POWER_CONTROLLER_TYPE_DIRECT)) {
+					Log.d(TAG, "통합전력제어기 종류 : 직결보드");
+					return POWERCONTROLLER_TYPE_DIRECT;
+				}
+				else if (TempData.equals(POWER_CONTROLLER_TYPE_MEASURE)) {
+					Log.d(TAG, "통합전력제어기 종류 : 전력측정 직결보드");
+					return POWERCONTROLLER_TYPE_MEASURE;
+				}
+				else {
+					Log.d(TAG, "통합전력제어기 종류 : 기본");
+					return POWERCONTROLLER_TYPE_DEFAULT;
+				}
+			}
+			else {
+				Log.d(TAG, "통합전력제어기 종류 : 사용안함");
+				return POWERCONTROLLER_TYPE_NONE;
+			}
+		} catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			return POWERCONTROLLER_TYPE_NONE;
+        } catch (Exception e) {
+			LogUtil.errorLogInfo("", TAG, e);
+			return POWERCONTROLLER_TYPE_NONE;
+		}
+	}
+
+	/**
+	 * LH게이트웨이 사용 여부 확인
+	 **/
+	public boolean Get_LH_Gateway_Use() {
+		String[] GetData = GetSettingData(define.DEVICE_ID_LH_GATEWAY);
+
+		boolean returnData = false; // DB에 값 없는 경우 사용안함으로 반환(초기값)
+		try {
+			if (GetData == null) {
+				Log.w(TAG, "[Get_LH_Gateway_Use] GetData is null!!!");
+				return returnData;
+			}
+
+//			Log.w(TAG, "[Get_LH_Gateway_Use] GetData[1] [" + GetData[1] + "]");
+			if (GetData[1].indexOf("사용함") > 0) returnData = true;
+			else returnData = false;
+
+			return returnData;
+		} catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = false;
+			return  returnData;
+        } catch (Exception e) {
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = false;
+			return  returnData;
+		}
+	}
+
+	public static final int ESCAPELADDER_DOWN_SEND_NONE = 120;
+	public static final int ESCAPELADDER_DOWN_SEND_UPPER = 121; // 윗집
+	public static final int ESCAPELADDER_DOWN_SEND_BELOW = 122; // 아랫집
+
+	/**
+	 * 피난사다리 전송 방향 확인
+	 * @return ESCAPELADDER_DOWN_SEND_NONE - 사용안함(120), ESCAPELADDER_DOWN_SEND_UPPER - 윗집(121), ESCAPELADDER_DOWN_BELOW - 아랫집(122)
+	 */
+	public int getEscapeLadderDownSend() {
+		int returnData = ESCAPELADDER_DOWN_SEND_NONE;
+		try {
+			String[] GetData = GetSettingData(define.DEVICE_ID_ESCAPELADDER_DOWN_SEND);
+			if (GetData == null) return returnData;
+			if (GetData[1].indexOf("사용함") > 0) {
+				if (GetData[1].indexOf(define.DEVICE_ID_UPPER) > 0) {
+					returnData = ESCAPELADDER_DOWN_SEND_UPPER;
+				} else if (GetData[1].indexOf(define.DEVICE_ID_BELOW) > 0) {
+					returnData = ESCAPELADDER_DOWN_SEND_BELOW;
+				}
+			}
+			Log.d(TAG, "[getEscapeLadderDownSend] returnData [" + returnData + "]");
+		} catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+        } catch (Exception e) {
+			LogUtil.errorLogInfo("", TAG, e);
+		}
+		return returnData;
+	}
+
+	/**
+	 * 피난사다리 전송 방향 설정
+	 * @param nValue 전송 방향
+	 * @return 성공여부
+	 */
+	public boolean setEscapeLadderDownSend(int nValue) {
+		try {
+			Log.i(TAG, "[setEscapeLadderDownSend] nValue: " + nValue);
+			String strEscapeLadderSend = "사용안함";
+			String strSettingValue = "1(1:" + define.DEVICE_ID_ESCAPELADDER_DOWN_SEND + "(" + define.DEVICE_DISABLE + ")";
+
+			if (nValue == ESCAPELADDER_DOWN_SEND_NONE) {
+				strEscapeLadderSend = define.DEVICE_DISABLE;
+			}
+			else if (nValue == ESCAPELADDER_DOWN_SEND_UPPER) {
+				strEscapeLadderSend = define.DEVICE_ID_UPPER;
+			}
+			else if (nValue == ESCAPELADDER_DOWN_SEND_BELOW) {
+				strEscapeLadderSend = define.DEVICE_ID_BELOW;
+			}
+			else {
+				Log.w(TAG, "[setEscapeLadderDownSend] Unsupported EscapeLadderSend type: " + nValue);
+				return false;
+			}
+
+			if (strEscapeLadderSend.equalsIgnoreCase(define.DEVICE_DISABLE)) {
+				strSettingValue = "1(1:" + define.DEVICE_ID_ESCAPELADDER_DOWN_SEND + "(" + define.DEVICE_DISABLE + ")";
+			}
+			else {
+				strSettingValue = "1(1:" + define.DEVICE_ID_ESCAPELADDER_DOWN_SEND + "(" + define.DEVICE_ENABLE + ")종류(" + strEscapeLadderSend + ")";
+			}
+
+			Log.i(TAG, "[setEscapeLadderDownSend] strSettingValue: " + strSettingValue);
+
+			UpdateSettingData("subdev_list", define.DEVICE_ID_ESCAPELADDER_DOWN_SEND, 0, strSettingValue);
+
+			return true;
+		} catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			return false;
+        } catch (Exception e) {
+			Log.e(TAG, "[Exception] setEscapeLadderDownSend(int nValue)");
+			LogUtil.errorLogInfo("", TAG, e);
+			return false;
+		}
+	}
+
+
+	/**
+	 * 카카오 사용 여부 가져오기
+	 * @return
+	 */
+	public boolean Get_KakaoUse()
+	{
+		String[] GetData = GetSettingData(define.DEVICE_ID_KAKAO);
+		//기본값이 false이기 때문에 이렇게 설정
+		boolean returnData = false;
+		try
+		{
+			if (GetData == null) return returnData;
+			if (GetData[1].indexOf("사용함") > 0) returnData = true;
+			else
+			{
+				returnData = false;
+				return returnData;
+			}
+
+			return returnData;
+		}
+		catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = false;
+			return  returnData;
+        } catch (Exception e)
+		{
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = false;
+			return  returnData;
+		}
+	}
+
+
+	/**
+	 * 카카오 옵션을 사용하는 경우, 카카오 UI를 Show/Hide 설정
+	 * @return
+	 */
+	public boolean Get_KakaoShow()
+	{
+		boolean returnData = false;
+		try
+		{
+			if(Get_KakaoUse())
+			{
+				//화면에 볼지 안볼지를 설정
+				String[] GetData = GetSettingData(define.DEVICE_ID_KAKAO_SHOW);
+				//초기값이 true임
+				if (GetData == null) returnData = true;
+				else
+				{
+					if (GetData[1].indexOf("사용함") > 0) returnData = true;
+				}
+			}
+		}
+		catch (NullPointerException e)
+		{
+			LogUtil.errorLogInfo("", TAG, e);
+		}
+
+		return returnData;
+	}
+
+
+	/**
+	 * 카카오 홈 Show/Hide 설정
+	 * @param value Show/Hide 값
+	 * @return 성공 시 true 값 반환, 실패 시 false값 반환
+	 */
+	public boolean Set_KakaoShow(boolean value)
+	{
+		try {
+			Log.i(TAG, "[Set_KakaoShow] nValue: " + value);
+			String strKakaoshow = "사용";
+			String strSettingValue = "1(1:" + define.DEVICE_ID_KAKAO_SHOW + "(" + define.DEVICE_ENABLE + ")";
+
+			if (value) {
+				strSettingValue = "1(1:" + define.DEVICE_ID_KAKAO_SHOW + "(" + define.DEVICE_ENABLE + ")";
+			}
+			else {
+				strSettingValue = "1(1:" + define.DEVICE_ID_KAKAO_SHOW + "(" + define.DEVICE_DISABLE + ")";
+			}
+
+			Log.i(TAG, "[Set_KakaoShow] strSettingValue: " + strSettingValue);
+
+			UpdateSettingData("subdev_list", define.DEVICE_ID_KAKAO_SHOW, 0, strSettingValue);
+
+			return true;
+		} catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			return false;
+        } catch (Exception e) {
+			Log.e(TAG, "[Exception] setEscapeLadderDownSend(int nValue)");
+			LogUtil.errorLogInfo("", TAG, e);
+			return false;
+		}
+	}
+
+	/**
+	 * 스마트현관카메라 좌우반전 사용 유무
+	 **/
+	public boolean Get_SmartIOTCamFlipUse() {
+		String[] GetData = GetSettingData(define.DEVICE_ID_SMARTIOTCAM_FLIP);
+
+		boolean returnData = false; // DB에 값 없는 경우 사용안함으로 반환(초기값)
+		try {
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = true;
+			else returnData = false;
+
+			return returnData;
+		} catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+			returnData = false;
+			return  returnData;
+        } catch (Exception e) {
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = false;
+			return  returnData;
+		}
+	}
+
+	public static final int CONSTRUCTION_SPECIAL_FUNCTION_NONE = 130;
+	public static final int CONSTRUCTION_SPECIAL_FUNCTION_SK = 131; // SK건설
+	public static final int CONSTRUCTION_SPECIAL_FUNCTION_DW = 132; // 대우건설
+
+	/**
+	 * 건설사 특화기능 종류 확인
+	 * @return CONSTRUCTION_SPECIAL_FUNCTION_NONE - 사용안함(130), CONSTRUCTION_SPECIAL_FUNCTION_SK - SK건설(131), CONSTRUCTION_SPECIAL_FUNCTION_DW - 대우건설(132)
+	 */
+	public int Get_Construction_SpecialFunc()
+	{
+		String[] GetData = GetSettingData(define.DEVICE_ID_CONSTRUCTION_SPECIAL_FUNC);
+
+		int returnData = CONSTRUCTION_SPECIAL_FUNCTION_NONE;
+		try
+		{
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0)
+			{
+				if (GetData[1].indexOf("SK건설") > 0)
+				{
+					returnData = CONSTRUCTION_SPECIAL_FUNCTION_SK;
+				}
+				else if (GetData[1].indexOf("대우건설") > 0)
+				{
+					returnData = CONSTRUCTION_SPECIAL_FUNCTION_DW;
+				}
+			}
+			Log.d(TAG, "[Get_Construction_SpecialFunc] returnData [" + returnData + "]");
+
+			return returnData;
+		}
+		catch (RuntimeException re) {
+			LogUtil.errorLogInfo("", TAG, re);
+			return  returnData;
+		} catch (Exception e) {
+			LogUtil.errorLogInfo("", TAG, e);
+			return  returnData;
+		}
+	}
+
+	/**
+	 * 제어기능 사용 유무
+	 **/
+	public boolean Get_MainGUICtrlUse() {
+		String[] GetData = GetSettingData(define.DEVICE_ID_MAIN_GUI_CTRL_USE);
+
+		boolean returnData = true; // DB에 값 없는 경우 사용함으로 반환(초기값)
+		try {
+			if (GetData == null) return returnData;
+
+			if (GetData[1].indexOf("사용함") > 0) returnData = true;
+			else returnData = false;
+
+			return returnData;
+		} catch (RuntimeException re) {
+			LogUtil.errorLogInfo("", TAG, re);
+			returnData = false;
+			return  returnData;
+		} catch (Exception e) {
+			LogUtil.errorLogInfo("", TAG, e);
+			returnData = false;
+			return  returnData;
+		}
+	}
+
+}

+ 16 - 1
WallPadAPI/src/main/java/com/artncore/WallPadDataMgr/WallpadStatusData.java

@@ -1606,7 +1606,22 @@ public class WallpadStatusData extends wallpaddbmgr {
 		String ret;
 		//단지서버 1.0/2.0 구분하여 처리 (2.0일시는 단지서버로 보내도록 수정)
 		WallpadDeviceSet wallpadDeviceSet = new WallpadDeviceSet(CTX);
-		boolean bNewDanjiServer = wallpadDeviceSet.GetNewDanjiServer();
+		boolean bNewDanjiServer = false;
+		//boolean bNewDanjiServer = wallpadDeviceSet.GetNewDanjiServer();
+		int danjiserverType = wallpadDeviceSet.GetNewDanjiServer();
+		if(danjiserverType == 1)
+		{
+			bNewDanjiServer = false;
+		}
+		else if(danjiserverType == 2)
+		{
+			bNewDanjiServer = true;
+		}
+		else
+		{
+
+		}
+
 		wallpadDeviceSet.closeDB();
 
 		if(bNewDanjiServer == false)

+ 475 - 461
WallPadAPI/src/main/java/com/artncore/wallpadimap/WallPadiMAPClient.java

@@ -1,461 +1,475 @@
-package com.artncore.wallpadimap;
-
-import android.content.Context;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
-import android.util.Log;
-
-import com.artncore.WallPadDataMgr.WallpadDeviceSet;
-import com.util.LogUtil;
-
-import org.w3c.dom.Document;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-import java.io.BufferedReader;
-import java.io.ByteArrayInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.net.InetSocketAddress;
-import java.net.Socket;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-
-import kr.co.icontrols.sslapi.SSLClient;
-
-public class WallPadiMAPClient {
-
-	String TAG = "WallPadiMAPClient";
-
-	public static final int APT_SERVER    = 1;
-	public static final int APT_LOBBY     = 2;
-
-	public static final int TYPE_REQUEST  = 1;
-	public static final int TYPE_NOTICE   = 2;
-	public static final int TYPE_RESPONSE = 3;
-
-	public static final int COMM_COMPLITE = 1;
-	public static final int COMM_ERROR    = 2;
-	public static final int COMM_DOING    = 3;
-	public static final int COMM_NONE     = 4;
-
-	public static final int SOCKET_BUFFER_SIZE = 50;
-	public static final int SOCKET_READ_BUFFER = 50;
-
-	int SOCKET_WAIT_COUNT = 20;
-	int SOCKET_WAIT_TIME  = 20000;
-
-	long socket_time=0;
-	Socket isock;
-	String ServerIP = "10.0.1.1";
-	int SvrPort = 10000;
-
-	boolean 	log_sw = true;
-	String iMapXML="";
-	NodeList items;
-	int Svrtarget;
-	int Status = COMM_NONE;
-
-	boolean Ireceive = false;
-	Document doc;
-
-	boolean LogSW = true;
-
-	private Context mContext;
-	/**
-	 * Context 설정한다. </br>
-	 * 본 클래스에서 DB Read등을 할시에 사용한다.</br>
-	 * (※주의) 신형단지서버 사용시 SSL 사용 유무는 본 메소드로 Context를 설정하여야만 정상동작이 된다.
-	 *
-	 * @param context - 부모 Context
-	 */
-	public void setContext(Context context) { mContext = context; }
-
-	void iMAPClientLog(String msg) {
-		if (LogSW) Log.i(TAG, msg);
-	}
-
-	Handler iMAPClientHandler = new Handler(Looper.getMainLooper()){
-		public void handleMessage(Message msg) {
-			iMAPClientLog("[iMAPClientHandler] Receive Message : " + iMapXML);
-			Status = msg.what;
-
-			switch (msg.what) {
-				case COMM_COMPLITE:
-					iMAPClientLog("[iMAPClientHandler] Receive COMM_COMPLITE");
-					if (Ireceive)
-						SetXMLDoc(iMapXML);
-					Status = COMM_COMPLITE;
-					ProcComplite();
-					break;
-
-				case  COMM_ERROR:
-					iMAPClientLog("[iMAPClientHandler] Receive COMM_ERROR");
-					Status = COMM_ERROR;
-					ProcError();
-					break;
-			}
-		}
-	};
-
-
-
-	public WallPadiMAPClient() {
-	}
-
-	public WallPadiMAPClient(String svrIP, int svrPORT) {
-		ServerIP = svrIP;
-		SvrPort     = svrPORT;
-	}
-
-	public WallPadiMAPClient(String XMLData) {
-		SetXMLDoc(XMLData);
-	}
-
-	public WallPadiMAPClient(int target, String XML, boolean receive) {
-		String IPAdd;
-		if (target == APT_SERVER) IPAdd = ServerIP;
-		else return;
-		Ireceive = receive;
-		SendXMLDoc(IPAdd, SvrPort, XML, receive);
-		//SetXMLDoc(iMapXML);
-	}
-
-	public void SetSocketWaitCount(int count) {
-		SOCKET_WAIT_TIME = count;
-	}
-
-	public int SendXMLDoc(String XML, boolean receive) {
-		Ireceive = receive;
-		return SendXMLDoc(ServerIP,  SvrPort, XML, receive);
-	}
-
-	protected void ProcComplite() {
-	}
-
-	protected void ProcError() {
-	}
-
-	public int SendXMLDoc(String SvrIP, int port, String XML, boolean receive) {
-		Status = COMM_DOING;
-		Ireceive = receive;
-		iMAPClientLog("Send XML : To [" + SvrIP +":" + port + "]\n"+XML);
-		socketThread sock = new socketThread(XML, SvrIP, port, receive, iMAPClientHandler);
-		sock.start();
-		return 0;
-	}
-
-	public int SendXMLDoc(String SvrIP, int port, String XML, boolean receive, boolean line_unwrap) {
-		Status = COMM_DOING;
-		Ireceive = receive;
-		iMAPClientLog("Send XML : \n "+XML);
-		socketThread sock = new socketThread(XML, SvrIP, port, receive, iMAPClientHandler, line_unwrap);
-		sock.start();
-		return 0;
-	}
-
-	public class socketThread extends Thread {
-		String cmdDoc;
-		boolean receive;
-		Handler mainH;
-		String SoIPa;
-		int SoIPport;
-		int TimeOut = 5000;
-
-		public socketThread(String XML, boolean SocReceive, Handler mainhandl) {
-			cmdDoc = XML+"\r\n";
-			receive = SocReceive;
-			mainH = mainhandl;
-			SoIPa = ServerIP;
-			SoIPport = SvrPort;
-		}
-
-		public socketThread(String XML, String IPa, int Porti, boolean SocReceive, Handler mainhandl) {
-			cmdDoc = XML+"\r\n";
-			receive = SocReceive;
-			mainH = mainhandl;
-			SoIPa = IPa;
-			SoIPport = Porti;
-		}
-
-		public socketThread(String XML, String IPa, int Porti, boolean SocReceive, Handler mainhandl, boolean line_unwrap) {
-			if (line_unwrap == false) {
-				cmdDoc = XML + "\r\n";
-			}
-			else {
-				cmdDoc = XML;
-			}
-
-			receive = SocReceive;
-			mainH = mainhandl;
-			SoIPa = IPa;
-			SoIPport = Porti;
-		}
-
-		public void SetTimeout(int timeout) {
-			TimeOut = timeout;
-		}
-
-		public void run() {
-			sendmsg(COMM_DOING);
-
-			boolean bNewDanjiServer = false;
-			/////////////////////////////////////////////////////////////////////
-			// mContext 가 설정되었을 경우 신형 단지서버 사용 유무를 가져온다.
-			/////////////////////////////////////////////////////////////////////
-			if (mContext != null) {
-				try {
-					WallpadDeviceSet wallpadDeviceSet = new WallpadDeviceSet(mContext);
-					bNewDanjiServer = wallpadDeviceSet.GetNewDanjiServer();
-					wallpadDeviceSet.closeDB();
-				} catch (RuntimeException re) {
-					LogUtil.errorLogInfo("", TAG, re);
-					bNewDanjiServer = false;
-				}
-				catch (Exception e) {
-					Log.e(TAG, "[iMapSverSocket] - GetNewDanjiServer ExceptionError !!!");
-					LogUtil.errorLogInfo("", TAG, e);//e.printStackTrace();
-					bNewDanjiServer = false;
-				}
-			}
-
-			try {
-				/////////////////////////////////////////////////////////////////////
-				// 소켓 생성시 신형단지서버 미사용중일 경우 기존 코드로,
-				//                   사용중일 경우 암호화 소켓을 생성한다.
-				/////////////////////////////////////////////////////////////////////
-				Log.i(TAG, "[socketThread.run()] bNewDanjiServer [" + bNewDanjiServer + "]");
-				if (!bNewDanjiServer) {
-					Log.i(TAG, "[socketThread.run()] Normal Client > Target [" + SoIPa + ":" + SoIPport + "]");
-					isock = new Socket();
-					isock.setSoLinger(true, 3000);
-					isock.setReceiveBufferSize(SOCKET_BUFFER_SIZE * 1024);
-					isock.setSendBufferSize(SOCKET_BUFFER_SIZE * 1024);
-					isock.setSoTimeout(TimeOut);
-					InetSocketAddress iSocAddr = new InetSocketAddress(SoIPa, SoIPport);
-					isock.connect(iSocAddr, SOCKET_WAIT_TIME);
-				}
-				else {
-					// 신형 단지서버를 사용중일 경우 SSL Socket 을 생성하여 통신한다.
-					int port = SoIPport + 1000;
-					Log.i(TAG, "[socketThread.run()] SSLClient > Target [" + SoIPa + ":" + port + "]");
-					SSLClient sslClientSocket = new SSLClient(SoIPa, port);
-					isock = sslClientSocket.getSocket();
-					if(isock!=null)
-					{
-						isock.setSoLinger(true, 3000);
-						isock.setReceiveBufferSize(SOCKET_BUFFER_SIZE*1024);
-						isock.setSendBufferSize(SOCKET_BUFFER_SIZE*1024);
-						isock.setSoTimeout(TimeOut);
-					}
-
-				}
-
-				if(isock!=null)
-				{
-					InputStream  In =  isock.getInputStream();
-					BufferedReader XMLReader = new BufferedReader(new InputStreamReader(In,"euc-kr"));
-					DataOutputStream outstream = new DataOutputStream(isock.getOutputStream());
-
-					byte[] outBF = cmdDoc.getBytes("euc-kr");
-					outstream.write(outBF);
-					outstream.flush();
-					if (receive == false) {
-						isock.close();
-						sendmsg(COMM_COMPLITE);
-						return;
-					}
-
-					iMapXML = "";
-					String readbuff;
-					int i = 0;
-					boolean succ = false;
-					socket_time  = System.currentTimeMillis()+SOCKET_WAIT_TIME;
-
-					/////////////////////////////////////////////////////////////////////
-					// 신형단지서버 미사용중일 경우 기존 코드로,
-					//           사용중일 경우 ready 를 사용하지 않는 수신부로 수행한다.
-					//           (사유:암호화를 사용할 경우 ready 최초 동작되지않음)
-					/////////////////////////////////////////////////////////////////////
-					if (!bNewDanjiServer) {
-						while (System.currentTimeMillis() < socket_time) {
-							if (XMLReader.ready()) {
-								char[] indata = new char[SOCKET_READ_BUFFER * 1024];
-								readbuff = "";
-
-								while (XMLReader.ready()) {
-									long lenofxML = XMLReader.read(indata);
-									readbuff += new String(indata, 0, (int)lenofxML);
-								}
-
-								if (readbuff != null) iMapXML += readbuff;
-
-								if (-1 < readbuff.indexOf("</imap>")) {
-									succ = true;
-									break;
-								}
-							}
-							else {
-								//imapAPIlog("LV1", "Socket sleep\n");
-								try { Thread.sleep(100);}
-								catch (RuntimeException re) {
-									LogUtil.errorLogInfo("", TAG, re);
-									isock.close();
-									sendmsg(COMM_ERROR);
-									return;
-								}
-								catch (Exception e) {
-									LogUtil.errorLogInfo("", TAG, e);//e.printStackTrace();
-									isock.close();
-									sendmsg(COMM_ERROR);
-									return;
-								}
-								i++;
-							}
-						}
-					}
-					else {
-						// SSL 암호화 데이터 수신부
-						// * ready() 가 정상동작 되지않아 아래 와 같이 수신부를 수정함.
-						char[] indata = new char[SOCKET_READ_BUFFER * 1024];
-						while (System.currentTimeMillis() < socket_time) {
-							readbuff = "";
-							long lenofxML = XMLReader.read(indata);
-							if (lenofxML > 0) {
-								readbuff+=new String(indata, 0, (int)lenofxML);
-								iMapXML += readbuff;
-								if (-1 < readbuff.indexOf("</imap>")) {
-									succ = true;
-									break;
-								}
-							}
-							else {
-								try { Thread.sleep(100);}
-								catch (RuntimeException re) {
-									LogUtil.errorLogInfo("", TAG, re);
-									isock.close();
-									sendmsg(COMM_ERROR);
-									return;
-								}
-								catch (Exception e) {
-									LogUtil.errorLogInfo("", TAG, e);//e.printStackTrace();
-									isock.close();
-									sendmsg(COMM_ERROR);
-									return;
-								}
-								i++;
-							}
-						}
-					}
-					/////////////////////////////////////////////////////////////////////
-					/////////////////////////////////////////////////////////////////////
-
-					if (i==SOCKET_WAIT_COUNT || succ == false) {
-						isock.close();
-						sendmsg(COMM_ERROR);
-						return;
-					}
-				}
-				else
-				{
-					Log.e("", "WallPadMapClient Socket is null error");
-					sendmsg(COMM_ERROR);
-					return;
-				}
-
-			} catch (RuntimeException re) {
-				LogUtil.errorLogInfo("", TAG, re);
-				sendmsg(COMM_ERROR);
-				return;
-			}
-			catch (Exception e) {
-				LogUtil.errorLogInfo("", TAG, e);//e.printStackTrace();
-				sendmsg(COMM_ERROR);
-				return;
-			}
-
-			try {
-				Thread.sleep(30);
-				isock.close();
-				sendmsg(COMM_COMPLITE);
-			} catch (IOException e) {
-				LogUtil.errorLogInfo("", TAG, e);//e.printStackTrace();
-			} catch (InterruptedException e) {
-				LogUtil.errorLogInfo("", TAG, e);//e.printStackTrace();
-			}
-		}
-
-		private void sendmsg(int what) {
-			Message mesg = mainH.obtainMessage();
-			mesg.what = what;
-			mainH.sendMessage(mesg);
-		}
-	}
-
-	private void SetXMLDoc(String XMLDoc) {
-		try {
-			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
-			DocumentBuilder builder = factory.newDocumentBuilder();
-			iMapXML = XMLDoc;
-			InputStream istream = new ByteArrayInputStream(iMapXML.getBytes());
-			doc = builder.parse(istream);
-		} catch (RuntimeException re) {
-			LogUtil.errorLogInfo("", TAG, re);
-		}
-		catch (Exception e) {
-			Log.e(TAG, "[Exception] SetXMLDoc(String XMLDoc)");
-			LogUtil.errorLogInfo("", TAG, e);//e.printStackTrace();
-		}
-	}
-
-	public void SetEncType() {
-
-	}
-
-	public int SetItem(String name) {
-		if (doc == null) return 0;
-		items = doc.getElementsByTagName(name);
-		return items.getLength();
-	}
-
-	public String GetAttributeVal(int index, String attname) {
-		if (items == null) return null;
-		int count = items.getLength();
-		if (count < 1 || index-1 > count) return null;
-		Node item = items.item(index);
-		NamedNodeMap attrs = item.getAttributes();
-		for (int j = 0; j < attrs.getLength(); j++) {
-			Node attr = attrs.item(j);
-			if (attr.getNodeName().equalsIgnoreCase(attname)) return attr.getNodeValue();
-		}
-		return null;
-	}
-
-	public String GetItemVal(int index) {
-		int count = items.getLength();
-		if (count < 1 || index-1 > count) return null;
-		Node item = items.item(index);
-		return trimquotation(item.getTextContent());
-	}
-
-	protected String trimquotation(String sen) {
-		sen = sen.replaceAll("\"", "");
-		return sen.trim();
-	}
-
-	public void SetServerIPConfig(String svrIP, int setport) {
-		ServerIP = svrIP;
-		SvrPort = setport;
-	}
-
-	public String GetServerIPAddress() {
-		return ServerIP;
-	}
-
-
-}
+package com.artncore.wallpadimap;
+
+import android.content.Context;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+import android.util.Log;
+
+import com.artncore.WallPadDataMgr.WallpadDeviceSet;
+import com.util.LogUtil;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.InetSocketAddress;
+import java.net.Socket;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import kr.co.icontrols.sslapi.SSLClient;
+
+public class WallPadiMAPClient {
+
+	String TAG = "WallPadiMAPClient";
+
+	public static final int APT_SERVER    = 1;
+	public static final int APT_LOBBY     = 2;
+
+	public static final int TYPE_REQUEST  = 1;
+	public static final int TYPE_NOTICE   = 2;
+	public static final int TYPE_RESPONSE = 3;
+
+	public static final int COMM_COMPLITE = 1;
+	public static final int COMM_ERROR    = 2;
+	public static final int COMM_DOING    = 3;
+	public static final int COMM_NONE     = 4;
+
+	public static final int SOCKET_BUFFER_SIZE = 50;
+	public static final int SOCKET_READ_BUFFER = 50;
+
+	int SOCKET_WAIT_COUNT = 20;
+	int SOCKET_WAIT_TIME  = 20000;
+
+	long socket_time=0;
+	Socket isock;
+	String ServerIP = "10.0.1.1";
+	int SvrPort = 10000;
+
+	boolean 	log_sw = true;
+	String iMapXML="";
+	NodeList items;
+	int Svrtarget;
+	int Status = COMM_NONE;
+
+	boolean Ireceive = false;
+	Document doc;
+
+	boolean LogSW = true;
+
+	private Context mContext;
+	/**
+	 * Context 설정한다. </br>
+	 * 본 클래스에서 DB Read등을 할시에 사용한다.</br>
+	 * (※주의) 신형단지서버 사용시 SSL 사용 유무는 본 메소드로 Context를 설정하여야만 정상동작이 된다.
+	 *
+	 * @param context - 부모 Context
+	 */
+	public void setContext(Context context) { mContext = context; }
+
+	void iMAPClientLog(String msg) {
+		if (LogSW) Log.i(TAG, msg);
+	}
+
+	Handler iMAPClientHandler = new Handler(Looper.getMainLooper()){
+		public void handleMessage(Message msg) {
+			iMAPClientLog("[iMAPClientHandler] Receive Message : " + iMapXML);
+			Status = msg.what;
+
+			switch (msg.what) {
+				case COMM_COMPLITE:
+					iMAPClientLog("[iMAPClientHandler] Receive COMM_COMPLITE");
+					if (Ireceive)
+						SetXMLDoc(iMapXML);
+					Status = COMM_COMPLITE;
+					ProcComplite();
+					break;
+
+				case  COMM_ERROR:
+					iMAPClientLog("[iMAPClientHandler] Receive COMM_ERROR");
+					Status = COMM_ERROR;
+					ProcError();
+					break;
+			}
+		}
+	};
+
+
+
+	public WallPadiMAPClient() {
+	}
+
+	public WallPadiMAPClient(String svrIP, int svrPORT) {
+		ServerIP = svrIP;
+		SvrPort     = svrPORT;
+	}
+
+	public WallPadiMAPClient(String XMLData) {
+		SetXMLDoc(XMLData);
+	}
+
+	public WallPadiMAPClient(int target, String XML, boolean receive) {
+		String IPAdd;
+		if (target == APT_SERVER) IPAdd = ServerIP;
+		else return;
+		Ireceive = receive;
+		SendXMLDoc(IPAdd, SvrPort, XML, receive);
+		//SetXMLDoc(iMapXML);
+	}
+
+	public void SetSocketWaitCount(int count) {
+		SOCKET_WAIT_TIME = count;
+	}
+
+	public int SendXMLDoc(String XML, boolean receive) {
+		Ireceive = receive;
+		return SendXMLDoc(ServerIP,  SvrPort, XML, receive);
+	}
+
+	protected void ProcComplite() {
+	}
+
+	protected void ProcError() {
+	}
+
+	public int SendXMLDoc(String SvrIP, int port, String XML, boolean receive) {
+		Status = COMM_DOING;
+		Ireceive = receive;
+		iMAPClientLog("Send XML : To [" + SvrIP +":" + port + "]\n"+XML);
+		socketThread sock = new socketThread(XML, SvrIP, port, receive, iMAPClientHandler);
+		sock.start();
+		return 0;
+	}
+
+	public int SendXMLDoc(String SvrIP, int port, String XML, boolean receive, boolean line_unwrap) {
+		Status = COMM_DOING;
+		Ireceive = receive;
+		iMAPClientLog("Send XML : \n "+XML);
+		socketThread sock = new socketThread(XML, SvrIP, port, receive, iMAPClientHandler, line_unwrap);
+		sock.start();
+		return 0;
+	}
+
+	public class socketThread extends Thread {
+		String cmdDoc;
+		boolean receive;
+		Handler mainH;
+		String SoIPa;
+		int SoIPport;
+		int TimeOut = 5000;
+
+		public socketThread(String XML, boolean SocReceive, Handler mainhandl) {
+			cmdDoc = XML+"\r\n";
+			receive = SocReceive;
+			mainH = mainhandl;
+			SoIPa = ServerIP;
+			SoIPport = SvrPort;
+		}
+
+		public socketThread(String XML, String IPa, int Porti, boolean SocReceive, Handler mainhandl) {
+			cmdDoc = XML+"\r\n";
+			receive = SocReceive;
+			mainH = mainhandl;
+			SoIPa = IPa;
+			SoIPport = Porti;
+		}
+
+		public socketThread(String XML, String IPa, int Porti, boolean SocReceive, Handler mainhandl, boolean line_unwrap) {
+			if (line_unwrap == false) {
+				cmdDoc = XML + "\r\n";
+			}
+			else {
+				cmdDoc = XML;
+			}
+
+			receive = SocReceive;
+			mainH = mainhandl;
+			SoIPa = IPa;
+			SoIPport = Porti;
+		}
+
+		public void SetTimeout(int timeout) {
+			TimeOut = timeout;
+		}
+
+		public void run() {
+			sendmsg(COMM_DOING);
+
+			boolean bNewDanjiServer = false;
+			/////////////////////////////////////////////////////////////////////
+			// mContext 가 설정되었을 경우 신형 단지서버 사용 유무를 가져온다.
+			/////////////////////////////////////////////////////////////////////
+			if (mContext != null) {
+				try {
+					WallpadDeviceSet wallpadDeviceSet = new WallpadDeviceSet(mContext);
+					//bNewDanjiServer = wallpadDeviceSet.GetNewDanjiServer();
+					bNewDanjiServer = false;
+					int danjiserverType = wallpadDeviceSet.GetNewDanjiServer();
+					if(danjiserverType == 1)
+					{
+						bNewDanjiServer = false;
+					}
+					else if(danjiserverType == 2)
+					{
+						bNewDanjiServer = true;
+					}
+					else
+					{
+
+					}
+					wallpadDeviceSet.closeDB();
+				} catch (RuntimeException re) {
+					LogUtil.errorLogInfo("", TAG, re);
+					bNewDanjiServer = false;
+				}
+				catch (Exception e) {
+					Log.e(TAG, "[iMapSverSocket] - GetNewDanjiServer ExceptionError !!!");
+					LogUtil.errorLogInfo("", TAG, e);//e.printStackTrace();
+					bNewDanjiServer = false;
+				}
+			}
+
+			try {
+				/////////////////////////////////////////////////////////////////////
+				// 소켓 생성시 신형단지서버 미사용중일 경우 기존 코드로,
+				//                   사용중일 경우 암호화 소켓을 생성한다.
+				/////////////////////////////////////////////////////////////////////
+				Log.i(TAG, "[socketThread.run()] bNewDanjiServer [" + bNewDanjiServer + "]");
+				if (!bNewDanjiServer) {
+					Log.i(TAG, "[socketThread.run()] Normal Client > Target [" + SoIPa + ":" + SoIPport + "]");
+					isock = new Socket();
+					isock.setSoLinger(true, 3000);
+					isock.setReceiveBufferSize(SOCKET_BUFFER_SIZE * 1024);
+					isock.setSendBufferSize(SOCKET_BUFFER_SIZE * 1024);
+					isock.setSoTimeout(TimeOut);
+					InetSocketAddress iSocAddr = new InetSocketAddress(SoIPa, SoIPport);
+					isock.connect(iSocAddr, SOCKET_WAIT_TIME);
+				}
+				else {
+					// 신형 단지서버를 사용중일 경우 SSL Socket 을 생성하여 통신한다.
+					int port = SoIPport + 1000;
+					Log.i(TAG, "[socketThread.run()] SSLClient > Target [" + SoIPa + ":" + port + "]");
+					SSLClient sslClientSocket = new SSLClient(SoIPa, port);
+					isock = sslClientSocket.getSocket();
+					if(isock!=null)
+					{
+						isock.setSoLinger(true, 3000);
+						isock.setReceiveBufferSize(SOCKET_BUFFER_SIZE*1024);
+						isock.setSendBufferSize(SOCKET_BUFFER_SIZE*1024);
+						isock.setSoTimeout(TimeOut);
+					}
+
+				}
+
+				if(isock!=null)
+				{
+					InputStream  In =  isock.getInputStream();
+					BufferedReader XMLReader = new BufferedReader(new InputStreamReader(In,"euc-kr"));
+					DataOutputStream outstream = new DataOutputStream(isock.getOutputStream());
+
+					byte[] outBF = cmdDoc.getBytes("euc-kr");
+					outstream.write(outBF);
+					outstream.flush();
+					if (receive == false) {
+						isock.close();
+						sendmsg(COMM_COMPLITE);
+						return;
+					}
+
+					iMapXML = "";
+					String readbuff;
+					int i = 0;
+					boolean succ = false;
+					socket_time  = System.currentTimeMillis()+SOCKET_WAIT_TIME;
+
+					/////////////////////////////////////////////////////////////////////
+					// 신형단지서버 미사용중일 경우 기존 코드로,
+					//           사용중일 경우 ready 를 사용하지 않는 수신부로 수행한다.
+					//           (사유:암호화를 사용할 경우 ready 최초 동작되지않음)
+					/////////////////////////////////////////////////////////////////////
+					if (!bNewDanjiServer) {
+						while (System.currentTimeMillis() < socket_time) {
+							if (XMLReader.ready()) {
+								char[] indata = new char[SOCKET_READ_BUFFER * 1024];
+								readbuff = "";
+
+								while (XMLReader.ready()) {
+									long lenofxML = XMLReader.read(indata);
+									readbuff += new String(indata, 0, (int)lenofxML);
+								}
+
+								if (readbuff != null) iMapXML += readbuff;
+
+								if (-1 < readbuff.indexOf("</imap>")) {
+									succ = true;
+									break;
+								}
+							}
+							else {
+								//imapAPIlog("LV1", "Socket sleep\n");
+								try { Thread.sleep(100);}
+								catch (RuntimeException re) {
+									LogUtil.errorLogInfo("", TAG, re);
+									isock.close();
+									sendmsg(COMM_ERROR);
+									return;
+								}
+								catch (Exception e) {
+									LogUtil.errorLogInfo("", TAG, e);//e.printStackTrace();
+									isock.close();
+									sendmsg(COMM_ERROR);
+									return;
+								}
+								i++;
+							}
+						}
+					}
+					else {
+						// SSL 암호화 데이터 수신부
+						// * ready() 가 정상동작 되지않아 아래 와 같이 수신부를 수정함.
+						char[] indata = new char[SOCKET_READ_BUFFER * 1024];
+						while (System.currentTimeMillis() < socket_time) {
+							readbuff = "";
+							long lenofxML = XMLReader.read(indata);
+							if (lenofxML > 0) {
+								readbuff+=new String(indata, 0, (int)lenofxML);
+								iMapXML += readbuff;
+								if (-1 < readbuff.indexOf("</imap>")) {
+									succ = true;
+									break;
+								}
+							}
+							else {
+								try { Thread.sleep(100);}
+								catch (RuntimeException re) {
+									LogUtil.errorLogInfo("", TAG, re);
+									isock.close();
+									sendmsg(COMM_ERROR);
+									return;
+								}
+								catch (Exception e) {
+									LogUtil.errorLogInfo("", TAG, e);//e.printStackTrace();
+									isock.close();
+									sendmsg(COMM_ERROR);
+									return;
+								}
+								i++;
+							}
+						}
+					}
+					/////////////////////////////////////////////////////////////////////
+					/////////////////////////////////////////////////////////////////////
+
+					if (i==SOCKET_WAIT_COUNT || succ == false) {
+						isock.close();
+						sendmsg(COMM_ERROR);
+						return;
+					}
+				}
+				else
+				{
+					Log.e("", "WallPadMapClient Socket is null error");
+					sendmsg(COMM_ERROR);
+					return;
+				}
+
+			} catch (RuntimeException re) {
+				LogUtil.errorLogInfo("", TAG, re);
+				sendmsg(COMM_ERROR);
+				return;
+			}
+			catch (Exception e) {
+				LogUtil.errorLogInfo("", TAG, e);//e.printStackTrace();
+				sendmsg(COMM_ERROR);
+				return;
+			}
+
+			try {
+				Thread.sleep(30);
+				isock.close();
+				sendmsg(COMM_COMPLITE);
+			} catch (IOException e) {
+				LogUtil.errorLogInfo("", TAG, e);//e.printStackTrace();
+			} catch (InterruptedException e) {
+				LogUtil.errorLogInfo("", TAG, e);//e.printStackTrace();
+			}
+		}
+
+		private void sendmsg(int what) {
+			Message mesg = mainH.obtainMessage();
+			mesg.what = what;
+			mainH.sendMessage(mesg);
+		}
+	}
+
+	private void SetXMLDoc(String XMLDoc) {
+		try {
+			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+			DocumentBuilder builder = factory.newDocumentBuilder();
+			iMapXML = XMLDoc;
+			InputStream istream = new ByteArrayInputStream(iMapXML.getBytes());
+			doc = builder.parse(istream);
+		} catch (RuntimeException re) {
+			LogUtil.errorLogInfo("", TAG, re);
+		}
+		catch (Exception e) {
+			Log.e(TAG, "[Exception] SetXMLDoc(String XMLDoc)");
+			LogUtil.errorLogInfo("", TAG, e);//e.printStackTrace();
+		}
+	}
+
+	public void SetEncType() {
+
+	}
+
+	public int SetItem(String name) {
+		if (doc == null) return 0;
+		items = doc.getElementsByTagName(name);
+		return items.getLength();
+	}
+
+	public String GetAttributeVal(int index, String attname) {
+		if (items == null) return null;
+		int count = items.getLength();
+		if (count < 1 || index-1 > count) return null;
+		Node item = items.item(index);
+		NamedNodeMap attrs = item.getAttributes();
+		for (int j = 0; j < attrs.getLength(); j++) {
+			Node attr = attrs.item(j);
+			if (attr.getNodeName().equalsIgnoreCase(attname)) return attr.getNodeValue();
+		}
+		return null;
+	}
+
+	public String GetItemVal(int index) {
+		int count = items.getLength();
+		if (count < 1 || index-1 > count) return null;
+		Node item = items.item(index);
+		return trimquotation(item.getTextContent());
+	}
+
+	protected String trimquotation(String sen) {
+		sen = sen.replaceAll("\"", "");
+		return sen.trim();
+	}
+
+	public void SetServerIPConfig(String svrIP, int setport) {
+		ServerIP = svrIP;
+		SvrPort = setport;
+	}
+
+	public String GetServerIPAddress() {
+		return ServerIP;
+	}
+
+
+}

+ 769 - 754
WallPadAPI/src/main/java/com/artncore/wallpadimap/WallPadiMAPNotifyAPI.java

@@ -1,754 +1,769 @@
-package com.artncore.wallpadimap;
-
-import android.content.Context;
-import android.content.Intent;
-import android.os.Build;
-import android.util.Log;
-
-import com.artncore.WallPadDataMgr.WallpadDeviceSet;
-import com.artncore.WallPadDataMgr.WallpadStatusData;
-import com.artncore.WallPadDataMgr.WallpadStatusData.WeatherTable;
-import com.artncore.WallPadDataMgr.WallpadVistorPicData;
-import com.artncore.WallPadDataMgr.wallpaddbmgr.AddressSet;
-import com.artncore.commons.APIErrorCode;
-import com.artncore.commons.define;
-import com.util.LogUtil;
-
-import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-import java.util.Calendar;
-import java.util.GregorianCalendar;
-
-import kr.co.icontrols.wallpadsupport.WpadSound;
-
-public class WallPadiMAPNotifyAPI extends WallPadiMAPClient {
-	final int NOTIFY_ELEVATOR_UP    = 8;
-	final int NOTIFY_ELEVATOR_DN    = 9;
-	final int NOTIFY_DEVICE_BOOTUP  = 13;
-	final int OPEN_LOBBY_DOOR       = 14;
-	final int UPLOAD_VISTOR_PICTURE = 15;
-	final int UPLOAD_VISTOR_COMPLITE= 16;
-	final int REQ_GET_SET_SYNC      = 17;
-	final int NOTIFY_DEVICE_MODECHANGED = 18;
-	final int NOTIFY_GET_METERING 	= 19;
-	final int NOTIFY_GET_METERING_MONTH = 20;
-
-	public APIErrorCode       ErrorCode;
-
-	String[] eventString = {
-			"\"news_arrival\"",            // (새로운 공지사항 존재)
-			"\"box_arrival\"",             // (택배 도착)
-			"\"box_delivered\"",           // (택배 반출)
-			"\"car_arrival\"",             // (등록된 차량 도착)
-			"\"epic_completed\"",          // (전자액자 사진파일 다운로드 완료)
-			"\"epic_down_fail\"",          //  (전자액자 사진파일 다운로드 실패)
-			"\"elevator_arrived\"",        //  (내려가는 방향의 엘리베이터가 도착함)
-			"\"elevator_arrived_up\"",     // (올라가는 방향의 엘리베이터가 도착함)
-			"\"elevator_up\"",             // (엘리베이터 누름 : 올라가는 방향)
-			"\"elevator_dn\"",             // (엘리베이터 누름 : 내려가는 방향)
-			"\"elevator_cancel\"",         // (엘리베이터 누름 취소 : 올라가는 방향, 내려가는 방향 모두)
-			"\"elevator_move_info_set\"",  //(엘리베이터 동작 정보 송신 설정)
-			"\"elevator_move_info_clear\"" //(엘리베이터 동작 정보 송신 해제)
-	};
-
-
-	String myIP="NONE";
-	String myDong="NONE";
-	String myHo="NONE";
-
-	Context ctx;
-	RetProci ElevatorProc;
-	String XMLHeader;
-	int DoWork = -1;
-
-	String ArgStr1;
-	String ArgStr2;
-
-	public iMAP_RET_DATA imapSync;
-
-	public void SetServerIPcfg(String IPa, int port) {
-		ServerIP = IPa;
-		SvrPort = port;
-	}
-
-	public WallPadiMAPNotifyAPI(Context ctx) {
-		super.setContext(ctx);
-		WallpadStatusData DBMGR;
-		DBMGR = new WallpadStatusData(ctx);
-		ErrorCode = new APIErrorCode();
-		AddressSet addc =  DBMGR.getAddressMGR();
-		myDong = addc.Dong;
-		myIP = addc.IPAddress;
-		myHo = addc.Ho;
-		SetServerIPConfig(DBMGR.GetServerIP(), DBMGR.GetServerPort());
-		DBMGR.closeDB();
-		XMLHeader = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n"+
-				"<imap ver=\"1.0\" address=\"" + myIP + "\" sender=\"" + myDong + "동 " + myHo + "호" + "\">\r\n" ;
-		this.ctx = ctx;
-
-		imapSync = new iMAP_RET_DATA();
-	}
-
-	public void SetElevatorRetCtr(RetProci electr)
-	{
-		ElevatorProc = electr;
-	}
-
-	private String GetXML(int event) {
-		String retXML = XMLHeader +
-				"<service type=\"request\" name=\"event_notify\">\r\n"+
-				"<event>" + eventString[event] +"</event>\r\n" +
-				"</service>\r\n </imap>";
-		return retXML;
-	}
-
-	protected void FreeElevatorCall(int Dowork) {
-		WallpadStatusData wdb = new WallpadStatusData(ctx);
-		int elestatus = wdb.GetElevatorStatus();
-		wdb.closeDB();
-
-		if (Dowork == NOTIFY_ELEVATOR_UP) {
-
-		}
-		else if (Dowork == NOTIFY_ELEVATOR_DN) {
-
-		}
-		else return;
-	}
-
-	String strKey = "passwd";
-	protected void ProcComplite() {
-		if ((DoWork == NOTIFY_ELEVATOR_UP || DoWork == NOTIFY_ELEVATOR_DN) && ElevatorProc!=null) {
-			try {
-				if (doc != null) {
-					SetItem("service");
-					String result = GetAttributeVal(0, "result");
-					if (result!=null) {
-						if (result.equalsIgnoreCase("ok")) {
-							WallpadStatusData wdb = new WallpadStatusData(ctx);
-							int elestatus = wdb.GetElevatorStatus();
-							elestatus|=((DoWork == NOTIFY_ELEVATOR_UP)?define.ELE_DIR_UP:define.ELE_DIR_DN);
-
-							wdb.SetElevatorStatus(elestatus);
-							if (DoWork == NOTIFY_ELEVATOR_UP) wdb.SetElevatorCallUpTime();
-							else wdb.SetElevatorCallDnTime();
-							wdb.closeDB();
-
-							ElevatorProc.ProcSuccess();
-						}
-						else {
-							ElevatorProc.ProcError();
-						}
-					}
-					else
-						ElevatorProc.ProcError();
-				}
-			} catch (RuntimeException re) {
-				LogUtil.errorLogInfo("", TAG, re);
-			}
-			catch (Exception e) {
-				Log.e(TAG , "[Exception] ProcComplite() -> 1");
-				LogUtil.errorLogInfo("", TAG, e);//e.printStackTrace();
-			}
-		}
-		else if (DoWork == NOTIFY_DEVICE_BOOTUP) {
-			try {
-				if (doc != null) {
-					boolean SendHeartBeat = false;
-
-					//				<date year = "2007" month = "11" date = "9" week = "fri"/>
-					//				<time hour = "17" min = "22" sec = "35" />
-					SetItem("date");
-					int year  = Integer.parseInt(GetAttributeVal(0, "year"));
-					int month = Integer.parseInt(GetAttributeVal(0, "month"));
-					int date  = Integer.parseInt(GetAttributeVal(0, "date"));
-					SetItem("time");
-					int hour  = Integer.parseInt(GetAttributeVal(0, "hour"));
-					int min   = Integer.parseInt(GetAttributeVal(0, "min"));
-					int sec   = Integer.parseInt(GetAttributeVal(0, "sec"));
-
-					Calendar bootupal = new GregorianCalendar();
-					long settedtime = bootupal.getTimeInMillis();
-					bootupal.set(Calendar.YEAR, year);
-					bootupal.set(Calendar.MONTH, month);
-					bootupal.set(Calendar.DAY_OF_MONTH, date);
-					bootupal.set(Calendar.HOUR_OF_DAY, hour);
-					bootupal.set(Calendar.MINUTE, min);
-					bootupal.set(Calendar.SECOND, sec);
-					long bootupmil = bootupal.getTimeInMillis();
-					WallpadStatusData DBMGR = new WallpadStatusData(ctx);
-					if (Math.abs(bootupmil-settedtime) > 5000) {
-						DBMGR.setSystemTime(year, month, date, hour, min, sec);
-
-						//Intent intent = new Intent();
-						//intent.setAction(define.NOTIFY_ACNAME);
-						//intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_STARTHEARTBEAT);
-						//ctx.sendBroadcast(intent);
-						SendHeartBeat = true;
-
-						Intent Iintent = new Intent();
-						Iintent.setAction(define.NOTIFY_ACNAME);
-						Iintent.putExtra(define.NOTIBR_KIND, define.NOTIFY_SYSTEMTIMESETTED);
-						ctx.sendBroadcast(Iintent);
-					}
-					String[] WeatherVer = DBMGR.GetWeatherVer().split(define.DEVCTR_DATA_SPLITER);
-
-					String[] weatherdate = WeatherVer[0].split("[.]");
-					if (weatherdate.length < 4 || WeatherVer.length < 3) return;
-					if (Integer.parseInt(weatherdate[1]) == month && Integer.parseInt(weatherdate[2]) == date) {
-						try {
-							Intent intent = new Intent();
-							intent.setAction(define.NOTIFY_ACNAME);
-							intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_UPDATEWEATHER);
-							intent.putExtra(define.NOTIBR_CONTENT, WeatherVer[3]+define.DEVCTR_DATA_SPLITER+WeatherVer[6]+define.DEVCTR_DATA_SPLITER+WeatherVer[7]);
-							ctx.sendBroadcast(intent);
-						} catch (RuntimeException re) {
-							LogUtil.errorLogInfo("", TAG, re);
-						}
-						catch (Exception we) {
-							LogUtil.errorLogInfo("", TAG, we);//we.printStackTrace();
-						}
-					}
-					else {
-						WeatherTable WeatherTBL = DBMGR.GetWeatherTableController();
-						if (WeatherTBL.GetWeatherList().size() > 0) {
-							String Curdate = String.format("%02d%02d", month,date);
-							for (int i = 0; i< WeatherTBL.GetWeatherList().size(); i++) {
-								if (WeatherTBL.GetWeatherList().get(i).date.equals(Curdate)) {
-									Intent intent = new Intent();
-									intent.setAction(define.NOTIFY_ACNAME);
-									intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_UPDATEWEATHER);
-									intent.putExtra(define.NOTIBR_CONTENT, WeatherTBL.GetWeatherList().get(i).code+define.DEVCTR_DATA_SPLITER+WeatherTBL.GetWeatherList().get(i).low+define.DEVCTR_DATA_SPLITER+WeatherTBL.GetWeatherList().get(i).high);
-									ctx.sendBroadcast(intent);
-								}
-							}
-						}
-					}
-					DBMGR.closeDB();
-					// 서버 버전에 따른 설정
-					try {
-						Element ele = doc.getDocumentElement();
-						NodeList items = ele.getElementsByTagName("ver_server");
-						if (items != null) {
-							Node item = items.item(0);
-							Node text = item.getFirstChild();
-							String versionInfo = trimquotation(text.getNodeValue());
-							Log.d("bootup", "Bootup replay versionInfo : " + versionInfo );
-
-							WallpadStatusData DBcc = new WallpadStatusData(ctx);
-							DBcc.SetServerVer(versionInfo);
-							DBcc.closeDB();
-
-							WallpadDeviceSet wallpadDeviceSet = new WallpadDeviceSet(ctx);
-							boolean mNewDanjiServer =  wallpadDeviceSet.GetNewDanjiServer();
-							wallpadDeviceSet.closeDB();
-
-							// 서버가 교체 되었을 때...
-							if ((mNewDanjiServer == true && versionInfo.equalsIgnoreCase("1.0")) || (mNewDanjiServer == false && versionInfo.indexOf("2.") >= 0)) {
-								Intent intent = new Intent();
-								intent.setAction(define.NOTIFY_ACNAME);
-								intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_SERVER_VERSION);
-								ctx.sendBroadcast(intent);
-							}
-							else {
-								if (SendHeartBeat == true) {
-									Intent intent = new Intent();
-									intent.setAction(define.NOTIFY_ACNAME);
-									intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_STARTHEARTBEAT);
-									ctx.sendBroadcast(intent);
-								}
-							}
-						}
-					} catch (RuntimeException re) {
-						LogUtil.errorLogInfo("", TAG, re);
-					}
-					catch (Exception e) {
-						LogUtil.errorLogInfo("", "", e);
-					}
-				}
-			} catch (RuntimeException re) {
-				LogUtil.errorLogInfo("", TAG, re);
-			}
-			catch (Exception e) {
-				Log.e(TAG , "[Exception] ProcComplite() -> 2");
-				LogUtil.errorLogInfo("", TAG, e);//e.printStackTrace();
-			}
-		}
-		else if (DoWork == OPEN_LOBBY_DOOR) {
-			try {
-				SetItem("service");
-				String userinfo = GetAttributeVal(0, "result");
-				Intent intent = new Intent();
-				intent.setAction(define.NOTIFY_ACNAME);
-				if (userinfo!=null && userinfo.equalsIgnoreCase("ok")) {
-					intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_LOBBYOPEN_SUCCESS);
-					WpadSound SNDMGR = new WpadSound(ctx);
-					SNDMGR.Play(OPEN_LOBBY_DOOR);
-				}
-				else {
-					intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_LOBBYOPEN_FAIL);
-				}
-				ctx.sendBroadcast(intent);
-			} catch (RuntimeException re) {
-				LogUtil.errorLogInfo("", TAG, re);
-			}
-			catch (Exception e) {
-				Log.e(TAG , "[Exception] ProcComplite() -> 3");
-				LogUtil.errorLogInfo("", TAG, e);//e.printStackTrace();
-			}
-		}
-		else if (DoWork == UPLOAD_VISTOR_PICTURE) {
-			try {
-				SetItem("ftp_info");
-				String userinfo = GetAttributeVal(0, "user");
-				String userPasswd = GetAttributeVal(0, strKey);
-				String path = GetAttributeVal(0, "path");
-
-				WallpadVistorPicData Vistor = new WallpadVistorPicData(ctx);
-				Vistor.UpdateFTPInfo(ArgStr1, ArgStr2, userinfo, userPasswd, path);
-				Vistor.closeDB();
-
-				VistorUploader Vistoruploader = new VistorUploader(ctx, path, userinfo, userPasswd, ArgStr1 );
-				Vistoruploader.start();
-			} catch (RuntimeException re) {
-				LogUtil.errorLogInfo("", TAG, re);
-			}
-			catch (Exception e) {
-				Log.e(TAG , "[Exception] ProcComplite() -> 4");
-				LogUtil.errorLogInfo("", TAG, e);//e.printStackTrace();
-			}
-		}
-		else if (DoWork == REQ_GET_SET_SYNC) {
-			try {
-				SetItem("setting");
-				String dateData = GetAttributeVal(0, "value");
-				if(dateData!=null)
-				{
-					int year     = Integer.parseInt(dateData.substring(0,4));
-					int month    = Integer.parseInt(dateData.substring(4,6));
-					int day      = Integer.parseInt(dateData.substring(6,8));
-					int hour     = Integer.parseInt(dateData.substring(8,10));
-					int min      = Integer.parseInt(dateData.substring(10,12));
-					int sec      = Integer.parseInt(dateData.substring(12,14));
-
-					Calendar nowdate =   new GregorianCalendar();
-
-					long settedtime = nowdate.getTimeInMillis();
-					nowdate.set(Calendar.YEAR, year);
-					nowdate.set(Calendar.MONTH, month);
-					nowdate.set(Calendar.DAY_OF_MONTH, day);
-					nowdate.set(Calendar.HOUR_OF_DAY, hour);
-					nowdate.set(Calendar.MINUTE, min);
-					nowdate.set(Calendar.SECOND, sec);
-					long bootupmil = nowdate.getTimeInMillis();
-
-					if (Math.abs(bootupmil-settedtime) > 5000) {
-						WallpadStatusData DBMGR = new WallpadStatusData(ctx);
-						DBMGR.setSystemTime(year, month, day, hour, min, sec);
-						DBMGR.closeDB();
-						Intent intent = new Intent();
-						intent.setAction(define.NOTIFY_ACNAME);
-						intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_STARTHEARTBEAT);
-						ctx.sendBroadcast(intent);
-						Intent Iintent = new Intent();
-						Iintent.setAction(define.NOTIFY_ACNAME);
-						Iintent.putExtra(define.NOTIBR_KIND, define.NOTIFY_SYSTEMTIMESETTED);
-						ctx.sendBroadcast(Iintent);
-					}
-				}
-
-			} catch (RuntimeException re) {
-				LogUtil.errorLogInfo("", TAG, re);
-			}
-			catch (Exception e) {
-				Log.e(TAG , "[Exception] ProcComplite() -> 5");
-				LogUtil.errorLogInfo("", TAG, e);//e.printStackTrace();
-			}
-		}
-		else if (DoWork == NOTIFY_DEVICE_MODECHANGED) {
-
-		}
-		else if (DoWork == NOTIFY_GET_METERING) {
-			try {
-				if (doc !=null) {
-					NodeList items = doc.getElementsByTagName("valuelist");
-					Node item;
-					String Sdate      = "0";
-					String electused  = "0";
-					String gasused    = "0";
-					String waterused  = "0";
-					String hwaterused = "0";
-					String energyused = "0";
-					String carbonused = "0";
-					String electread  = "0";
-					String gasread    = "0";
-					String waterread  = "0";
-					String hwaterread = "0";
-					String energyread = "0";
-					String carbonread = "0";
-
-					String FSdate      = "0";
-					String Felectused  = "0";
-					String Fgasused    = "0";
-					String Fwaterused  = "0";
-					String Fhwaterused = "0";
-					String Fenergyused = "0";
-					String Fcarbonused = "0";
-					String Felectread  = "0";
-					String Fgasread    = "0";
-					String Fwaterread  = "0";
-					String Fhwaterread = "0";
-					String Fenergyread = "0";
-					String Fcarbonread = "0";
-					try {
-						for (int i = 0; i<items.getLength(); i++) {
-							item = items.item(i);
-							NamedNodeMap attrs = item.getAttributes();
-							for (int j = 0; j < attrs.getLength(); j++) {
-								Node attr = attrs.item(j);
-
-								if (attr.getNodeName().equalsIgnoreCase("day")) Sdate = attr.getNodeValue();
-								else if (attr.getNodeName().equalsIgnoreCase("elect_read")) electread = attr.getNodeValue();
-								else if (attr.getNodeName().equalsIgnoreCase("gas_read")) gasread = attr.getNodeValue();
-								else if (attr.getNodeName().equalsIgnoreCase("water_read")) waterread = attr.getNodeValue();
-								else if (attr.getNodeName().equalsIgnoreCase("hotwater_read")) hwaterread = attr.getNodeValue();
-								else if (attr.getNodeName().equalsIgnoreCase("energy_read")) energyread = attr.getNodeValue();
-								else if (attr.getNodeName().equalsIgnoreCase("carbon_read")) carbonread = attr.getNodeValue();
-								else if (attr.getNodeName().equalsIgnoreCase("elect_used")) electused = attr.getNodeValue();
-								else if (attr.getNodeName().equalsIgnoreCase("gas_used")) gasused = attr.getNodeValue();
-								else if (attr.getNodeName().equalsIgnoreCase("water_used")) waterused = attr.getNodeValue();
-								else if (attr.getNodeName().equalsIgnoreCase("hotwater_used")) hwaterused = attr.getNodeValue();
-								else if (attr.getNodeName().equalsIgnoreCase("energy_used")) energyused = attr.getNodeValue();
-								else if (attr.getNodeName().equalsIgnoreCase("carbon_used")) carbonused = attr.getNodeValue();
-							}
-
-							if (Integer.parseInt(FSdate) < Integer.parseInt(Sdate)) {
-								FSdate       = Sdate;
-								Felectused   = electused ;
-								Fgasused     = gasused;
-								Fwaterused   = waterused;
-								Fhwaterused  = hwaterused;
-								Fenergyused  = energyused;
-								Fcarbonused  = carbonused;
-								Felectread   = electread ;
-								Fgasread     = gasread;
-								Fwaterread   = waterread;
-								Fhwaterread  = hwaterread;
-								Fenergyread  = energyread;
-								Fcarbonread  = carbonread;
-							}
-						}
-					} catch (RuntimeException re) {
-						LogUtil.errorLogInfo("", TAG, re);
-					}
-					catch (Exception e) {
-						LogUtil.errorLogInfo("", TAG, e);//e.printStackTrace();
-					}
-
-					Intent intent = new Intent();
-					intent.setAction(define.NOTIFY_ACNAME);
-					intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_ENERGYUPDATE);
-					String contData = FSdate + define.DEVCTR_CMD_SPLITER + Felectused + define.DEVCTR_CMD_SPLITER + Fwaterused + define.DEVCTR_CMD_SPLITER + Fgasused + define.DEVCTR_CMD_SPLITER
-							+ Fhwaterused + define.DEVCTR_CMD_SPLITER + Fenergyused + define.DEVCTR_CMD_SPLITER + Fcarbonused + define.DEVCTR_CMD_SPLITER + Felectread + define.DEVCTR_CMD_SPLITER
-							+ Fgasread + define.DEVCTR_CMD_SPLITER + Fwaterread + define.DEVCTR_CMD_SPLITER + Fhwaterread + define.DEVCTR_CMD_SPLITER + Fenergyread + define.DEVCTR_CMD_SPLITER + Fcarbonread;
-					intent.putExtra(define.NOTIBR_CONTENT, contData);
-					ctx.sendBroadcast(intent);
-				}
-			} catch (RuntimeException re) {
-				LogUtil.errorLogInfo("", TAG, re);
-			}
-			catch (Exception e) {
-				Log.e(TAG , "[Exception] ProcComplite() -> 6");
-				LogUtil.errorLogInfo("", TAG, e);//e.printStackTrace();
-			}
-		}
-		else if (DoWork == NOTIFY_GET_METERING_MONTH) {
-			try {
-				if (doc !=null) {
-					NodeList items = doc.getElementsByTagName("valuelist");
-					Node item;
-					String Sdate      = "0";
-					String electused  = "0";
-					String gasused    = "0";
-					String waterused  = "0";
-					String hwaterused = "0";
-					String energyused = "0";
-					String carbonused = "0";
-					String electread  = "0";
-					String gasread    = "0";
-					String waterread  = "0";
-					String hwaterread = "0";
-					String energyread = "0";
-					String carbonread = "0";
-
-					try {
-						item = items.item(0);
-						NamedNodeMap attrs = item.getAttributes();
-						for (int j = 0; j < attrs.getLength(); j++) {
-							Node attr = attrs.item(j);
-
-							if (attr.getNodeName().equalsIgnoreCase("month")) Sdate = attr.getNodeValue();
-							else if (attr.getNodeName().equalsIgnoreCase("elect_read")) electread = attr.getNodeValue();
-							else if (attr.getNodeName().equalsIgnoreCase("gas_read")) gasread = attr.getNodeValue();
-							else if (attr.getNodeName().equalsIgnoreCase("water_read")) waterread = attr.getNodeValue();
-							else if (attr.getNodeName().equalsIgnoreCase("hotwater_read")) hwaterread = attr.getNodeValue();
-							else if (attr.getNodeName().equalsIgnoreCase("energy_read")) energyread = attr.getNodeValue();
-							else if (attr.getNodeName().equalsIgnoreCase("carbon_read")) carbonread = attr.getNodeValue();
-							else if (attr.getNodeName().equalsIgnoreCase("elect_used")) electused = attr.getNodeValue();
-							else if (attr.getNodeName().equalsIgnoreCase("gas_used")) gasused = attr.getNodeValue();
-							else if (attr.getNodeName().equalsIgnoreCase("water_used")) waterused = attr.getNodeValue();
-							else if (attr.getNodeName().equalsIgnoreCase("hotwater_used")) hwaterused = attr.getNodeValue();
-							else if (attr.getNodeName().equalsIgnoreCase("energy_used")) energyused = attr.getNodeValue();
-							else if (attr.getNodeName().equalsIgnoreCase("carbon_used")) carbonused = attr.getNodeValue();
-						}
-					} catch (RuntimeException re) {
-						LogUtil.errorLogInfo("", TAG, re);
-					}
-					catch (Exception e) {
-						Log.e(TAG , "[Exception] ProcComplite() -> 7");
-						LogUtil.errorLogInfo("", TAG, e);//e.printStackTrace();
-					}
-
-					String deli = define.DEVCTR_CMD_SPLITER;
-					String contData = Sdate + deli + electused + deli + waterused + deli + gasused + deli + hwaterused + deli + energyused + deli + carbonused
-							+ deli+electread+deli+gasread+deli+waterread+deli+hwaterread+deli+energyread+deli+carbonread;
-					WallpadStatusData energyData = new WallpadStatusData(ctx);
-					energyData.SetEnergyMonData(contData);
-					energyData.closeDB();
-				}
-			} catch (RuntimeException re) {
-				LogUtil.errorLogInfo("", TAG, re);
-			}
-			catch (Exception e) {
-				Log.e(TAG , "[Exception] ProcComplite() -> 8");
-				LogUtil.errorLogInfo("", TAG, e);//e.printStackTrace();
-			}
-		}
-	}
-
-	class VistorUploader extends WallPadFTPUploader {
-		public VistorUploader(Context ctx, String ftpPath, String User,	String Passwd, String LocalFile) {
-			super(ctx, ftpPath, User, Passwd, LocalFile);
-		}
-
-		protected void ProcUploadFail() {
-			WallpadVistorPicData Vistor = new WallpadVistorPicData(ctx);
-			Vistor.StatusUpdate(WallpadVistorPicData.VISTOR_PIC_UPLOAD_FTP_FAIL, ArgStr1, ArgStr2);
-			Vistor.closeDB();
-		}
-
-		protected void ProcUploadSuccess() {
-			try {
-				WallpadVistorPicData Vistor = new WallpadVistorPicData(ctx);
-				String VistorPicData[] = Vistor.GetVistorPicData(ArgStr1, ArgStr2);
-				String[] filename = ArgStr1.split("/");
-				String retXML= XMLHeader+
-						"    <service type=\"notice\" name=\"visitor_upload_complete\">\r\n"+
-						"    < upload_info status=\"success\" dong=\"" + myDong + "\" ho=\"" + myHo + "\" distinct=\"" + VistorPicData[3] + "\"  time=\"" + ArgStr2 + "\" filename=\"" + filename[filename.length - 1] + "\"  message=\"null\"/>\r\n" +
-						"</service>\r\n </imap>";
-				Vistor.DeletePic(ArgStr1, ArgStr2);
-				Vistor.closeDB();
-
-				DoWork = UPLOAD_VISTOR_COMPLITE;
-				SendXMLDoc(retXML, false);
-			} catch (RuntimeException re) {
-				LogUtil.errorLogInfo("", TAG, re);
-			}
-			catch (Exception e) {
-				Log.e(TAG, "[Exception] ProcUploadSuccess()");
-				LogUtil.errorLogInfo("", TAG, e);//e.printStackTrace();
-			}
-		}
-	}
-
-	protected void ProcError() {
-		if ((DoWork == NOTIFY_ELEVATOR_UP || DoWork == NOTIFY_ELEVATOR_DN)) {
-			if (ElevatorProc != null)	ElevatorProc.ProcError();
-		}
-		else if (DoWork == NOTIFY_DEVICE_BOOTUP) {
-			Intent intent = new Intent();
-			intent.setAction(define.NOTIFY_ACNAME);
-			intent.putExtra(define.NOTIBR_KIND,define.NOTIFY_SENDBOOTUP_FAIL);
-			ctx.sendBroadcast(intent);
-		}
-		else if (DoWork == OPEN_LOBBY_DOOR){
-			Intent intent = new Intent();
-			intent.setAction(define.NOTIFY_ACNAME);
-			intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_LOBBYOPEN_FAIL);
-			ctx.sendBroadcast(intent);
-		}
-		else if (DoWork == REQ_GET_SET_SYNC) {
-
-		}
-		else if (DoWork == NOTIFY_DEVICE_MODECHANGED) {
-
-		}
-	}
-
-	public void CallElevator(byte updown) {
-		DoWork = (updown==0?NOTIFY_ELEVATOR_DN:NOTIFY_ELEVATOR_UP);
-		//WallpadStatusData wpaddata =  new WallpadStatusData(ctx);
-		//wpaddata.GetLobbyAddress();
-		//wpaddata.closeDB();
-		SetServerIPConfig(ServerIP, SvrPort);
-		SendXMLDoc(GetXML(DoWork), true);
-
-		/**
-		 * 엘리베이터 호출 시 주차정보 요청 하는 코드 추가
-		 * **/
-		Intent iIntent = new Intent();
-		iIntent.setAction(define.NOTIFY_ACNAME);
-		iIntent.putExtra(define.NOTIBR_KIND, define.NOTIFY_GET_CAR_PARKING);
-		ctx.sendBroadcast(iIntent);
-	}
-
-	public static final int DEST_LOBBY = 0;
-	public static final int DEST_DOOR = 1;
-	public void UploadVistorPic(int dest, String filepath, String TimeData, boolean retry) {
-		String[] destStr = new String[]{"lobby","home"};
-		try {
-			String FileName[] = filepath.split("/");
-			String XMLCMD = XMLHeader + "<service type=\"request\" name=\"visitor_access_info\">\r\n"+
-					"    <visitor_info dong=\"" + myDong + "\" ho=\"" + myHo + "\" distinct=\"" + destStr[dest] + "\"  time=\"" + TimeData + "\" filename=\"" + FileName[FileName.length - 1] + "\" message=\"null\"/>\r\n" +
-					"</service>\r\n"+"</imap>";
-			DoWork = UPLOAD_VISTOR_PICTURE;
-			WallpadVistorPicData Vistor = new WallpadVistorPicData(ctx);
-			if (retry == false) {
-				Vistor.InsertPicInfo(TimeData, "NONE", "NONE", "NONE", filepath, destStr[dest]);
-				Vistor.StatusUpdate(WallpadVistorPicData.VISTOR_PIC_UPLOAD_FTP_DOING, filepath, TimeData);
-			}
-			else {
-				Vistor.StatusUpdate(WallpadVistorPicData.VISTOR_PIC_UPLOAD_FTP_DOING, filepath, TimeData);
-			}
-			Vistor.closeDB();
-			ArgStr1 = filepath;
-			ArgStr2 = TimeData;
-			SendXMLDoc(XMLCMD, true);
-		} catch (RuntimeException re) {
-			LogUtil.errorLogInfo("", TAG, re);
-		}
-		catch (Exception e) {
-			Log.e(TAG, "[Exception] UploadVistorPic(int dest, String filepath, String TimeData, boolean retry)");
-			LogUtil.errorLogInfo("", TAG, e);//e.printStackTrace();
-		}
-
-	}
-
-	public void OpenLobbyDoor() {
-		String XMLCMD = XMLHeader+"<service type=\"request\" name=\"lobby_open\"/> \r\n</imap>";
-		DoWork = OPEN_LOBBY_DOOR;
-		String[] IPa = myIP.split("[.]");
-		String LobbyIP = IPa[0]+"."+IPa[1]+"."+"0.99";
-		SetServerIPConfig(LobbyIP, SvrPort);
-		SendXMLDoc(XMLCMD, true);
-	}
-
-	public void OpenLobbyDoor(String IP) {
-		String XMLCMD = XMLHeader+"<service type=\"request\" name=\"lobby_open\"/> \r\n</imap>";
-		DoWork = OPEN_LOBBY_DOOR;
-		SetServerIPConfig(IP, SvrPort);
-		SendXMLDoc(XMLCMD, true);
-	}
-
-	public static class iMAP_RET_DATA {
-		public String TargetIP;
-		public String XML;
-		public String RETVAL;
-	}
-
-	public void ReqGetSet() {
-		String XMLCMD = XMLHeader+"<service type=\"request\" name=\"get_setup_info\"> \r\n"+
-				"   <guidemap devtype=\"homedev\" count=\"1\">\r\n"+
-				"       <variable>\"datetime\"</variable>\r\n"+
-				"   </guidemap>\r\n"+
-				"</service>\r\n</imap>";
-		DoWork = REQ_GET_SET_SYNC;
-		SendXMLDoc(XMLCMD, true);
-	}
-
-	private String Make_Device_Bootup_XML(String MainApp_Version, String Setting_Version , String svr_Version) {
-		String XMLDoc = XMLHeader+
-				"<service type=\"request\" name=\"device_bootup\" dev_type=\"homedev\">\r\n"+
-				"<ver_bsp>  \"" + Build.DISPLAY + "\" </ver_bsp>\r\n"+
-				"<ver_app>  \"" + MainApp_Version + "\" </ver_app>\r\n"+
-				"<ver_setting>  \"" + Setting_Version + "\" </ver_setting>\r\n"+
-				"<ver_server>" + svr_Version + "</ver_server>\r\n"+
-				"</service>\r\n</imap>";
-		return XMLDoc;
-	}
-
-	public void Send_Device_BootUP(String MainApp_Version, String Setting_Version , String svr_Version ) {
-		DoWork = NOTIFY_DEVICE_BOOTUP;
-		SetServerIPConfig(ServerIP, SvrPort);
-		if ((MainApp_Version == null) || (MainApp_Version.equalsIgnoreCase(""))) {
-			MainApp_Version = "0000.00.00";
-		}
-
-		if ((Setting_Version == null) || (Setting_Version.equalsIgnoreCase(""))) {
-			Setting_Version = "0000.00.00";
-		}
-
-		if ((svr_Version == null) || (svr_Version.equalsIgnoreCase(""))) {
-			svr_Version = "1.0";
-		}
-
-		SendXMLDoc(Make_Device_Bootup_XML(MainApp_Version, Setting_Version , svr_Version), true);
-	}
-
-	public void ModeChanged(String mode) {
-		String XMLDoc = XMLHeader+
-				"<service type=\"request\" name=\"mode_changed\">\r\n"+
-				"    <new_mode>\""+mode+"\"</new_mode>\r\n"+
-				"</service>\r\n"+
-				"</imap>\r\n";
-		DoWork = NOTIFY_DEVICE_MODECHANGED;
-		WallpadStatusData  wd = new WallpadStatusData(ctx);
-		SetServerIPConfig(wd.GetManagePCIP(), wd.GetManagePCPort());
-		wd.closeDB();
-		SendXMLDoc(XMLDoc, true);
-	}
-
-	public void GetEnergyUsage() {
-		Calendar now = new GregorianCalendar();
-/*		
-		if (now.get(Calendar.DAY_OF_MONTH) == 1)
-		{
-			if (now.get(Calendar.MONTH)==0)
-			{
-				now.set(Calendar.YEAR, now.get(Calendar.YEAR)-1);
-				now.set(Calendar.MONTH, 11);
-			}
-			else
-			{
-				now.set(Calendar.MONTH, now.get(Calendar.MONTH)-1);
-			}
-		}
-		*/
-		now.add(Calendar.DATE, -1);
-
-		String XMLDoc = XMLHeader+"<service type=\"request\" name=\"get_ems_metering\">\r\n" +
-				"    <guidemap distinguish=\"month\" elect=\"yes\" gas=\"yes\" water=\"yes\" hotwater=\"yes\" energy=\"yes\" carbon=\"yes\" support_ems=\"no\">\r\n" +
-				"    <datelist year=\"" + now.get(Calendar.YEAR) + "\" month=\"" + (now.get(Calendar.MONTH) + 1) + "\"/>\r\n" +
-				"</guidemap>\r\n</service>\r\n</imap>\r\n";
-		DoWork = NOTIFY_GET_METERING;
-		SetServerIPConfig(ServerIP, SvrPort);
-		SendXMLDoc(XMLDoc, true);
-	}
-
-
-	public void GetEnergyUsageMonth() {
-		Calendar now = new GregorianCalendar();
-		now.add(Calendar.MONTH, -1);
-
-		String XMLDoc = XMLHeader+"<service type=\"request\" name=\"get_ems_metering\">\r\n" +
-				"    <guidemap distinguish=\"year\" elect=\"yes\" gas=\"yes\" water=\"yes\" hotwater=\"yes\" energy=\"yes\" carbon=\"yes\" support_ems=\"no\">\r\n" +
-				"    <datelist year=\"" + now.get(Calendar.YEAR) + "\" month=\"0\"/>\r\n" +
-				"</guidemap>\r\n</service>\r\n</imap>\r\n";
-		DoWork = NOTIFY_GET_METERING_MONTH;
-		SetServerIPConfig(ServerIP, SvrPort);
-		SendXMLDoc(XMLDoc, true);
-	}
-}
+package com.artncore.wallpadimap;
+
+import android.content.Context;
+import android.content.Intent;
+import android.os.Build;
+import android.util.Log;
+
+import com.artncore.WallPadDataMgr.WallpadDeviceSet;
+import com.artncore.WallPadDataMgr.WallpadStatusData;
+import com.artncore.WallPadDataMgr.WallpadStatusData.WeatherTable;
+import com.artncore.WallPadDataMgr.WallpadVistorPicData;
+import com.artncore.WallPadDataMgr.wallpaddbmgr.AddressSet;
+import com.artncore.commons.APIErrorCode;
+import com.artncore.commons.define;
+import com.util.LogUtil;
+
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+
+import kr.co.icontrols.wallpadsupport.WpadSound;
+
+public class WallPadiMAPNotifyAPI extends WallPadiMAPClient {
+	final int NOTIFY_ELEVATOR_UP    = 8;
+	final int NOTIFY_ELEVATOR_DN    = 9;
+	final int NOTIFY_DEVICE_BOOTUP  = 13;
+	final int OPEN_LOBBY_DOOR       = 14;
+	final int UPLOAD_VISTOR_PICTURE = 15;
+	final int UPLOAD_VISTOR_COMPLITE= 16;
+	final int REQ_GET_SET_SYNC      = 17;
+	final int NOTIFY_DEVICE_MODECHANGED = 18;
+	final int NOTIFY_GET_METERING 	= 19;
+	final int NOTIFY_GET_METERING_MONTH = 20;
+
+	public APIErrorCode       ErrorCode;
+
+	String[] eventString = {
+			"\"news_arrival\"",            // (새로운 공지사항 존재)
+			"\"box_arrival\"",             // (택배 도착)
+			"\"box_delivered\"",           // (택배 반출)
+			"\"car_arrival\"",             // (등록된 차량 도착)
+			"\"epic_completed\"",          // (전자액자 사진파일 다운로드 완료)
+			"\"epic_down_fail\"",          //  (전자액자 사진파일 다운로드 실패)
+			"\"elevator_arrived\"",        //  (내려가는 방향의 엘리베이터가 도착함)
+			"\"elevator_arrived_up\"",     // (올라가는 방향의 엘리베이터가 도착함)
+			"\"elevator_up\"",             // (엘리베이터 누름 : 올라가는 방향)
+			"\"elevator_dn\"",             // (엘리베이터 누름 : 내려가는 방향)
+			"\"elevator_cancel\"",         // (엘리베이터 누름 취소 : 올라가는 방향, 내려가는 방향 모두)
+			"\"elevator_move_info_set\"",  //(엘리베이터 동작 정보 송신 설정)
+			"\"elevator_move_info_clear\"" //(엘리베이터 동작 정보 송신 해제)
+	};
+
+
+	String myIP="NONE";
+	String myDong="NONE";
+	String myHo="NONE";
+
+	Context ctx;
+	RetProci ElevatorProc;
+	String XMLHeader;
+	int DoWork = -1;
+
+	String ArgStr1;
+	String ArgStr2;
+
+	public iMAP_RET_DATA imapSync;
+
+	public void SetServerIPcfg(String IPa, int port) {
+		ServerIP = IPa;
+		SvrPort = port;
+	}
+
+	public WallPadiMAPNotifyAPI(Context ctx) {
+		super.setContext(ctx);
+		WallpadStatusData DBMGR;
+		DBMGR = new WallpadStatusData(ctx);
+		ErrorCode = new APIErrorCode();
+		AddressSet addc =  DBMGR.getAddressMGR();
+		myDong = addc.Dong;
+		myIP = addc.IPAddress;
+		myHo = addc.Ho;
+		SetServerIPConfig(DBMGR.GetServerIP(), DBMGR.GetServerPort());
+		DBMGR.closeDB();
+		XMLHeader = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n"+
+				"<imap ver=\"1.0\" address=\"" + myIP + "\" sender=\"" + myDong + "동 " + myHo + "호" + "\">\r\n" ;
+		this.ctx = ctx;
+
+		imapSync = new iMAP_RET_DATA();
+	}
+
+	public void SetElevatorRetCtr(RetProci electr)
+	{
+		ElevatorProc = electr;
+	}
+
+	private String GetXML(int event) {
+		String retXML = XMLHeader +
+				"<service type=\"request\" name=\"event_notify\">\r\n"+
+				"<event>" + eventString[event] +"</event>\r\n" +
+				"</service>\r\n </imap>";
+		return retXML;
+	}
+
+	protected void FreeElevatorCall(int Dowork) {
+		WallpadStatusData wdb = new WallpadStatusData(ctx);
+		int elestatus = wdb.GetElevatorStatus();
+		wdb.closeDB();
+
+		if (Dowork == NOTIFY_ELEVATOR_UP) {
+
+		}
+		else if (Dowork == NOTIFY_ELEVATOR_DN) {
+
+		}
+		else return;
+	}
+
+	String strKey = "passwd";
+	protected void ProcComplite() {
+		if ((DoWork == NOTIFY_ELEVATOR_UP || DoWork == NOTIFY_ELEVATOR_DN) && ElevatorProc!=null) {
+			try {
+				if (doc != null) {
+					SetItem("service");
+					String result = GetAttributeVal(0, "result");
+					if (result!=null) {
+						if (result.equalsIgnoreCase("ok")) {
+							WallpadStatusData wdb = new WallpadStatusData(ctx);
+							int elestatus = wdb.GetElevatorStatus();
+							elestatus|=((DoWork == NOTIFY_ELEVATOR_UP)?define.ELE_DIR_UP:define.ELE_DIR_DN);
+
+							wdb.SetElevatorStatus(elestatus);
+							if (DoWork == NOTIFY_ELEVATOR_UP) wdb.SetElevatorCallUpTime();
+							else wdb.SetElevatorCallDnTime();
+							wdb.closeDB();
+
+							ElevatorProc.ProcSuccess();
+						}
+						else {
+							ElevatorProc.ProcError();
+						}
+					}
+					else
+						ElevatorProc.ProcError();
+				}
+			} catch (RuntimeException re) {
+				LogUtil.errorLogInfo("", TAG, re);
+			}
+			catch (Exception e) {
+				Log.e(TAG , "[Exception] ProcComplite() -> 1");
+				LogUtil.errorLogInfo("", TAG, e);//e.printStackTrace();
+			}
+		}
+		else if (DoWork == NOTIFY_DEVICE_BOOTUP) {
+			try {
+				if (doc != null) {
+					boolean SendHeartBeat = false;
+
+					//				<date year = "2007" month = "11" date = "9" week = "fri"/>
+					//				<time hour = "17" min = "22" sec = "35" />
+					SetItem("date");
+					int year  = Integer.parseInt(GetAttributeVal(0, "year"));
+					int month = Integer.parseInt(GetAttributeVal(0, "month"));
+					int date  = Integer.parseInt(GetAttributeVal(0, "date"));
+					SetItem("time");
+					int hour  = Integer.parseInt(GetAttributeVal(0, "hour"));
+					int min   = Integer.parseInt(GetAttributeVal(0, "min"));
+					int sec   = Integer.parseInt(GetAttributeVal(0, "sec"));
+
+					Calendar bootupal = new GregorianCalendar();
+					long settedtime = bootupal.getTimeInMillis();
+					bootupal.set(Calendar.YEAR, year);
+					bootupal.set(Calendar.MONTH, month);
+					bootupal.set(Calendar.DAY_OF_MONTH, date);
+					bootupal.set(Calendar.HOUR_OF_DAY, hour);
+					bootupal.set(Calendar.MINUTE, min);
+					bootupal.set(Calendar.SECOND, sec);
+					long bootupmil = bootupal.getTimeInMillis();
+					WallpadStatusData DBMGR = new WallpadStatusData(ctx);
+					if (Math.abs(bootupmil-settedtime) > 5000) {
+						DBMGR.setSystemTime(year, month, date, hour, min, sec);
+
+						//Intent intent = new Intent();
+						//intent.setAction(define.NOTIFY_ACNAME);
+						//intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_STARTHEARTBEAT);
+						//ctx.sendBroadcast(intent);
+						SendHeartBeat = true;
+
+						Intent Iintent = new Intent();
+						Iintent.setAction(define.NOTIFY_ACNAME);
+						Iintent.putExtra(define.NOTIBR_KIND, define.NOTIFY_SYSTEMTIMESETTED);
+						ctx.sendBroadcast(Iintent);
+					}
+					String[] WeatherVer = DBMGR.GetWeatherVer().split(define.DEVCTR_DATA_SPLITER);
+
+					String[] weatherdate = WeatherVer[0].split("[.]");
+					if (weatherdate.length < 4 || WeatherVer.length < 3) return;
+					if (Integer.parseInt(weatherdate[1]) == month && Integer.parseInt(weatherdate[2]) == date) {
+						try {
+							Intent intent = new Intent();
+							intent.setAction(define.NOTIFY_ACNAME);
+							intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_UPDATEWEATHER);
+							intent.putExtra(define.NOTIBR_CONTENT, WeatherVer[3]+define.DEVCTR_DATA_SPLITER+WeatherVer[6]+define.DEVCTR_DATA_SPLITER+WeatherVer[7]);
+							ctx.sendBroadcast(intent);
+						} catch (RuntimeException re) {
+							LogUtil.errorLogInfo("", TAG, re);
+						}
+						catch (Exception we) {
+							LogUtil.errorLogInfo("", TAG, we);//we.printStackTrace();
+						}
+					}
+					else {
+						WeatherTable WeatherTBL = DBMGR.GetWeatherTableController();
+						if (WeatherTBL.GetWeatherList().size() > 0) {
+							String Curdate = String.format("%02d%02d", month,date);
+							for (int i = 0; i< WeatherTBL.GetWeatherList().size(); i++) {
+								if (WeatherTBL.GetWeatherList().get(i).date.equals(Curdate)) {
+									Intent intent = new Intent();
+									intent.setAction(define.NOTIFY_ACNAME);
+									intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_UPDATEWEATHER);
+									intent.putExtra(define.NOTIBR_CONTENT, WeatherTBL.GetWeatherList().get(i).code+define.DEVCTR_DATA_SPLITER+WeatherTBL.GetWeatherList().get(i).low+define.DEVCTR_DATA_SPLITER+WeatherTBL.GetWeatherList().get(i).high);
+									ctx.sendBroadcast(intent);
+								}
+							}
+						}
+					}
+					DBMGR.closeDB();
+					// 서버 버전에 따른 설정
+					try {
+						Element ele = doc.getDocumentElement();
+						NodeList items = ele.getElementsByTagName("ver_server");
+						if (items != null) {
+							Node item = items.item(0);
+							Node text = item.getFirstChild();
+							String versionInfo = trimquotation(text.getNodeValue());
+							Log.d("bootup", "Bootup replay versionInfo : " + versionInfo );
+
+							WallpadStatusData DBcc = new WallpadStatusData(ctx);
+							DBcc.SetServerVer(versionInfo);
+							DBcc.closeDB();
+
+							WallpadDeviceSet wallpadDeviceSet = new WallpadDeviceSet(ctx);
+							//boolean mNewDanjiServer =  wallpadDeviceSet.GetNewDanjiServer();
+							boolean mNewDanjiServer =  false;
+							int danjiserverType = wallpadDeviceSet.GetNewDanjiServer();
+							if(danjiserverType == 1)
+							{
+								mNewDanjiServer = false;
+							}
+							else if(danjiserverType == 2)
+							{
+								mNewDanjiServer = true;
+							}
+							else
+							{
+
+							}
+
+							wallpadDeviceSet.closeDB();
+
+							// 서버가 교체 되었을 때...
+							if ((mNewDanjiServer == true && versionInfo.equalsIgnoreCase("1.0")) || (mNewDanjiServer == false && versionInfo.indexOf("2.") >= 0)) {
+								Intent intent = new Intent();
+								intent.setAction(define.NOTIFY_ACNAME);
+								intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_SERVER_VERSION);
+								ctx.sendBroadcast(intent);
+							}
+							else {
+								if (SendHeartBeat == true) {
+									Intent intent = new Intent();
+									intent.setAction(define.NOTIFY_ACNAME);
+									intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_STARTHEARTBEAT);
+									ctx.sendBroadcast(intent);
+								}
+							}
+						}
+					} catch (RuntimeException re) {
+						LogUtil.errorLogInfo("", TAG, re);
+					}
+					catch (Exception e) {
+						LogUtil.errorLogInfo("", "", e);
+					}
+				}
+			} catch (RuntimeException re) {
+				LogUtil.errorLogInfo("", TAG, re);
+			}
+			catch (Exception e) {
+				Log.e(TAG , "[Exception] ProcComplite() -> 2");
+				LogUtil.errorLogInfo("", TAG, e);//e.printStackTrace();
+			}
+		}
+		else if (DoWork == OPEN_LOBBY_DOOR) {
+			try {
+				SetItem("service");
+				String userinfo = GetAttributeVal(0, "result");
+				Intent intent = new Intent();
+				intent.setAction(define.NOTIFY_ACNAME);
+				if (userinfo!=null && userinfo.equalsIgnoreCase("ok")) {
+					intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_LOBBYOPEN_SUCCESS);
+					WpadSound SNDMGR = new WpadSound(ctx);
+					SNDMGR.Play(OPEN_LOBBY_DOOR);
+				}
+				else {
+					intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_LOBBYOPEN_FAIL);
+				}
+				ctx.sendBroadcast(intent);
+			} catch (RuntimeException re) {
+				LogUtil.errorLogInfo("", TAG, re);
+			}
+			catch (Exception e) {
+				Log.e(TAG , "[Exception] ProcComplite() -> 3");
+				LogUtil.errorLogInfo("", TAG, e);//e.printStackTrace();
+			}
+		}
+		else if (DoWork == UPLOAD_VISTOR_PICTURE) {
+			try {
+				SetItem("ftp_info");
+				String userinfo = GetAttributeVal(0, "user");
+				String userPasswd = GetAttributeVal(0, strKey);
+				String path = GetAttributeVal(0, "path");
+
+				WallpadVistorPicData Vistor = new WallpadVistorPicData(ctx);
+				Vistor.UpdateFTPInfo(ArgStr1, ArgStr2, userinfo, userPasswd, path);
+				Vistor.closeDB();
+
+				VistorUploader Vistoruploader = new VistorUploader(ctx, path, userinfo, userPasswd, ArgStr1 );
+				Vistoruploader.start();
+			} catch (RuntimeException re) {
+				LogUtil.errorLogInfo("", TAG, re);
+			}
+			catch (Exception e) {
+				Log.e(TAG , "[Exception] ProcComplite() -> 4");
+				LogUtil.errorLogInfo("", TAG, e);//e.printStackTrace();
+			}
+		}
+		else if (DoWork == REQ_GET_SET_SYNC) {
+			try {
+				SetItem("setting");
+				String dateData = GetAttributeVal(0, "value");
+				if(dateData!=null)
+				{
+					int year     = Integer.parseInt(dateData.substring(0,4));
+					int month    = Integer.parseInt(dateData.substring(4,6));
+					int day      = Integer.parseInt(dateData.substring(6,8));
+					int hour     = Integer.parseInt(dateData.substring(8,10));
+					int min      = Integer.parseInt(dateData.substring(10,12));
+					int sec      = Integer.parseInt(dateData.substring(12,14));
+
+					Calendar nowdate =   new GregorianCalendar();
+
+					long settedtime = nowdate.getTimeInMillis();
+					nowdate.set(Calendar.YEAR, year);
+					nowdate.set(Calendar.MONTH, month);
+					nowdate.set(Calendar.DAY_OF_MONTH, day);
+					nowdate.set(Calendar.HOUR_OF_DAY, hour);
+					nowdate.set(Calendar.MINUTE, min);
+					nowdate.set(Calendar.SECOND, sec);
+					long bootupmil = nowdate.getTimeInMillis();
+
+					if (Math.abs(bootupmil-settedtime) > 5000) {
+						WallpadStatusData DBMGR = new WallpadStatusData(ctx);
+						DBMGR.setSystemTime(year, month, day, hour, min, sec);
+						DBMGR.closeDB();
+						Intent intent = new Intent();
+						intent.setAction(define.NOTIFY_ACNAME);
+						intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_STARTHEARTBEAT);
+						ctx.sendBroadcast(intent);
+						Intent Iintent = new Intent();
+						Iintent.setAction(define.NOTIFY_ACNAME);
+						Iintent.putExtra(define.NOTIBR_KIND, define.NOTIFY_SYSTEMTIMESETTED);
+						ctx.sendBroadcast(Iintent);
+					}
+				}
+
+			} catch (RuntimeException re) {
+				LogUtil.errorLogInfo("", TAG, re);
+			}
+			catch (Exception e) {
+				Log.e(TAG , "[Exception] ProcComplite() -> 5");
+				LogUtil.errorLogInfo("", TAG, e);//e.printStackTrace();
+			}
+		}
+		else if (DoWork == NOTIFY_DEVICE_MODECHANGED) {
+
+		}
+		else if (DoWork == NOTIFY_GET_METERING) {
+			try {
+				if (doc !=null) {
+					NodeList items = doc.getElementsByTagName("valuelist");
+					Node item;
+					String Sdate      = "0";
+					String electused  = "0";
+					String gasused    = "0";
+					String waterused  = "0";
+					String hwaterused = "0";
+					String energyused = "0";
+					String carbonused = "0";
+					String electread  = "0";
+					String gasread    = "0";
+					String waterread  = "0";
+					String hwaterread = "0";
+					String energyread = "0";
+					String carbonread = "0";
+
+					String FSdate      = "0";
+					String Felectused  = "0";
+					String Fgasused    = "0";
+					String Fwaterused  = "0";
+					String Fhwaterused = "0";
+					String Fenergyused = "0";
+					String Fcarbonused = "0";
+					String Felectread  = "0";
+					String Fgasread    = "0";
+					String Fwaterread  = "0";
+					String Fhwaterread = "0";
+					String Fenergyread = "0";
+					String Fcarbonread = "0";
+					try {
+						for (int i = 0; i<items.getLength(); i++) {
+							item = items.item(i);
+							NamedNodeMap attrs = item.getAttributes();
+							for (int j = 0; j < attrs.getLength(); j++) {
+								Node attr = attrs.item(j);
+
+								if (attr.getNodeName().equalsIgnoreCase("day")) Sdate = attr.getNodeValue();
+								else if (attr.getNodeName().equalsIgnoreCase("elect_read")) electread = attr.getNodeValue();
+								else if (attr.getNodeName().equalsIgnoreCase("gas_read")) gasread = attr.getNodeValue();
+								else if (attr.getNodeName().equalsIgnoreCase("water_read")) waterread = attr.getNodeValue();
+								else if (attr.getNodeName().equalsIgnoreCase("hotwater_read")) hwaterread = attr.getNodeValue();
+								else if (attr.getNodeName().equalsIgnoreCase("energy_read")) energyread = attr.getNodeValue();
+								else if (attr.getNodeName().equalsIgnoreCase("carbon_read")) carbonread = attr.getNodeValue();
+								else if (attr.getNodeName().equalsIgnoreCase("elect_used")) electused = attr.getNodeValue();
+								else if (attr.getNodeName().equalsIgnoreCase("gas_used")) gasused = attr.getNodeValue();
+								else if (attr.getNodeName().equalsIgnoreCase("water_used")) waterused = attr.getNodeValue();
+								else if (attr.getNodeName().equalsIgnoreCase("hotwater_used")) hwaterused = attr.getNodeValue();
+								else if (attr.getNodeName().equalsIgnoreCase("energy_used")) energyused = attr.getNodeValue();
+								else if (attr.getNodeName().equalsIgnoreCase("carbon_used")) carbonused = attr.getNodeValue();
+							}
+
+							if (Integer.parseInt(FSdate) < Integer.parseInt(Sdate)) {
+								FSdate       = Sdate;
+								Felectused   = electused ;
+								Fgasused     = gasused;
+								Fwaterused   = waterused;
+								Fhwaterused  = hwaterused;
+								Fenergyused  = energyused;
+								Fcarbonused  = carbonused;
+								Felectread   = electread ;
+								Fgasread     = gasread;
+								Fwaterread   = waterread;
+								Fhwaterread  = hwaterread;
+								Fenergyread  = energyread;
+								Fcarbonread  = carbonread;
+							}
+						}
+					} catch (RuntimeException re) {
+						LogUtil.errorLogInfo("", TAG, re);
+					}
+					catch (Exception e) {
+						LogUtil.errorLogInfo("", TAG, e);//e.printStackTrace();
+					}
+
+					Intent intent = new Intent();
+					intent.setAction(define.NOTIFY_ACNAME);
+					intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_ENERGYUPDATE);
+					String contData = FSdate + define.DEVCTR_CMD_SPLITER + Felectused + define.DEVCTR_CMD_SPLITER + Fwaterused + define.DEVCTR_CMD_SPLITER + Fgasused + define.DEVCTR_CMD_SPLITER
+							+ Fhwaterused + define.DEVCTR_CMD_SPLITER + Fenergyused + define.DEVCTR_CMD_SPLITER + Fcarbonused + define.DEVCTR_CMD_SPLITER + Felectread + define.DEVCTR_CMD_SPLITER
+							+ Fgasread + define.DEVCTR_CMD_SPLITER + Fwaterread + define.DEVCTR_CMD_SPLITER + Fhwaterread + define.DEVCTR_CMD_SPLITER + Fenergyread + define.DEVCTR_CMD_SPLITER + Fcarbonread;
+					intent.putExtra(define.NOTIBR_CONTENT, contData);
+					ctx.sendBroadcast(intent);
+				}
+			} catch (RuntimeException re) {
+				LogUtil.errorLogInfo("", TAG, re);
+			}
+			catch (Exception e) {
+				Log.e(TAG , "[Exception] ProcComplite() -> 6");
+				LogUtil.errorLogInfo("", TAG, e);//e.printStackTrace();
+			}
+		}
+		else if (DoWork == NOTIFY_GET_METERING_MONTH) {
+			try {
+				if (doc !=null) {
+					NodeList items = doc.getElementsByTagName("valuelist");
+					Node item;
+					String Sdate      = "0";
+					String electused  = "0";
+					String gasused    = "0";
+					String waterused  = "0";
+					String hwaterused = "0";
+					String energyused = "0";
+					String carbonused = "0";
+					String electread  = "0";
+					String gasread    = "0";
+					String waterread  = "0";
+					String hwaterread = "0";
+					String energyread = "0";
+					String carbonread = "0";
+
+					try {
+						item = items.item(0);
+						NamedNodeMap attrs = item.getAttributes();
+						for (int j = 0; j < attrs.getLength(); j++) {
+							Node attr = attrs.item(j);
+
+							if (attr.getNodeName().equalsIgnoreCase("month")) Sdate = attr.getNodeValue();
+							else if (attr.getNodeName().equalsIgnoreCase("elect_read")) electread = attr.getNodeValue();
+							else if (attr.getNodeName().equalsIgnoreCase("gas_read")) gasread = attr.getNodeValue();
+							else if (attr.getNodeName().equalsIgnoreCase("water_read")) waterread = attr.getNodeValue();
+							else if (attr.getNodeName().equalsIgnoreCase("hotwater_read")) hwaterread = attr.getNodeValue();
+							else if (attr.getNodeName().equalsIgnoreCase("energy_read")) energyread = attr.getNodeValue();
+							else if (attr.getNodeName().equalsIgnoreCase("carbon_read")) carbonread = attr.getNodeValue();
+							else if (attr.getNodeName().equalsIgnoreCase("elect_used")) electused = attr.getNodeValue();
+							else if (attr.getNodeName().equalsIgnoreCase("gas_used")) gasused = attr.getNodeValue();
+							else if (attr.getNodeName().equalsIgnoreCase("water_used")) waterused = attr.getNodeValue();
+							else if (attr.getNodeName().equalsIgnoreCase("hotwater_used")) hwaterused = attr.getNodeValue();
+							else if (attr.getNodeName().equalsIgnoreCase("energy_used")) energyused = attr.getNodeValue();
+							else if (attr.getNodeName().equalsIgnoreCase("carbon_used")) carbonused = attr.getNodeValue();
+						}
+					} catch (RuntimeException re) {
+						LogUtil.errorLogInfo("", TAG, re);
+					}
+					catch (Exception e) {
+						Log.e(TAG , "[Exception] ProcComplite() -> 7");
+						LogUtil.errorLogInfo("", TAG, e);//e.printStackTrace();
+					}
+
+					String deli = define.DEVCTR_CMD_SPLITER;
+					String contData = Sdate + deli + electused + deli + waterused + deli + gasused + deli + hwaterused + deli + energyused + deli + carbonused
+							+ deli+electread+deli+gasread+deli+waterread+deli+hwaterread+deli+energyread+deli+carbonread;
+					WallpadStatusData energyData = new WallpadStatusData(ctx);
+					energyData.SetEnergyMonData(contData);
+					energyData.closeDB();
+				}
+			} catch (RuntimeException re) {
+				LogUtil.errorLogInfo("", TAG, re);
+			}
+			catch (Exception e) {
+				Log.e(TAG , "[Exception] ProcComplite() -> 8");
+				LogUtil.errorLogInfo("", TAG, e);//e.printStackTrace();
+			}
+		}
+	}
+
+	class VistorUploader extends WallPadFTPUploader {
+		public VistorUploader(Context ctx, String ftpPath, String User,	String Passwd, String LocalFile) {
+			super(ctx, ftpPath, User, Passwd, LocalFile);
+		}
+
+		protected void ProcUploadFail() {
+			WallpadVistorPicData Vistor = new WallpadVistorPicData(ctx);
+			Vistor.StatusUpdate(WallpadVistorPicData.VISTOR_PIC_UPLOAD_FTP_FAIL, ArgStr1, ArgStr2);
+			Vistor.closeDB();
+		}
+
+		protected void ProcUploadSuccess() {
+			try {
+				WallpadVistorPicData Vistor = new WallpadVistorPicData(ctx);
+				String VistorPicData[] = Vistor.GetVistorPicData(ArgStr1, ArgStr2);
+				String[] filename = ArgStr1.split("/");
+				String retXML= XMLHeader+
+						"    <service type=\"notice\" name=\"visitor_upload_complete\">\r\n"+
+						"    < upload_info status=\"success\" dong=\"" + myDong + "\" ho=\"" + myHo + "\" distinct=\"" + VistorPicData[3] + "\"  time=\"" + ArgStr2 + "\" filename=\"" + filename[filename.length - 1] + "\"  message=\"null\"/>\r\n" +
+						"</service>\r\n </imap>";
+				Vistor.DeletePic(ArgStr1, ArgStr2);
+				Vistor.closeDB();
+
+				DoWork = UPLOAD_VISTOR_COMPLITE;
+				SendXMLDoc(retXML, false);
+			} catch (RuntimeException re) {
+				LogUtil.errorLogInfo("", TAG, re);
+			}
+			catch (Exception e) {
+				Log.e(TAG, "[Exception] ProcUploadSuccess()");
+				LogUtil.errorLogInfo("", TAG, e);//e.printStackTrace();
+			}
+		}
+	}
+
+	protected void ProcError() {
+		if ((DoWork == NOTIFY_ELEVATOR_UP || DoWork == NOTIFY_ELEVATOR_DN)) {
+			if (ElevatorProc != null)	ElevatorProc.ProcError();
+		}
+		else if (DoWork == NOTIFY_DEVICE_BOOTUP) {
+			Intent intent = new Intent();
+			intent.setAction(define.NOTIFY_ACNAME);
+			intent.putExtra(define.NOTIBR_KIND,define.NOTIFY_SENDBOOTUP_FAIL);
+			ctx.sendBroadcast(intent);
+		}
+		else if (DoWork == OPEN_LOBBY_DOOR){
+			Intent intent = new Intent();
+			intent.setAction(define.NOTIFY_ACNAME);
+			intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_LOBBYOPEN_FAIL);
+			ctx.sendBroadcast(intent);
+		}
+		else if (DoWork == REQ_GET_SET_SYNC) {
+
+		}
+		else if (DoWork == NOTIFY_DEVICE_MODECHANGED) {
+
+		}
+	}
+
+	public void CallElevator(byte updown) {
+		DoWork = (updown==0?NOTIFY_ELEVATOR_DN:NOTIFY_ELEVATOR_UP);
+		//WallpadStatusData wpaddata =  new WallpadStatusData(ctx);
+		//wpaddata.GetLobbyAddress();
+		//wpaddata.closeDB();
+		SetServerIPConfig(ServerIP, SvrPort);
+		SendXMLDoc(GetXML(DoWork), true);
+
+		/**
+		 * 엘리베이터 호출 시 주차정보 요청 하는 코드 추가
+		 * **/
+		Intent iIntent = new Intent();
+		iIntent.setAction(define.NOTIFY_ACNAME);
+		iIntent.putExtra(define.NOTIBR_KIND, define.NOTIFY_GET_CAR_PARKING);
+		ctx.sendBroadcast(iIntent);
+	}
+
+	public static final int DEST_LOBBY = 0;
+	public static final int DEST_DOOR = 1;
+	public void UploadVistorPic(int dest, String filepath, String TimeData, boolean retry) {
+		String[] destStr = new String[]{"lobby","home"};
+		try {
+			String FileName[] = filepath.split("/");
+			String XMLCMD = XMLHeader + "<service type=\"request\" name=\"visitor_access_info\">\r\n"+
+					"    <visitor_info dong=\"" + myDong + "\" ho=\"" + myHo + "\" distinct=\"" + destStr[dest] + "\"  time=\"" + TimeData + "\" filename=\"" + FileName[FileName.length - 1] + "\" message=\"null\"/>\r\n" +
+					"</service>\r\n"+"</imap>";
+			DoWork = UPLOAD_VISTOR_PICTURE;
+			WallpadVistorPicData Vistor = new WallpadVistorPicData(ctx);
+			if (retry == false) {
+				Vistor.InsertPicInfo(TimeData, "NONE", "NONE", "NONE", filepath, destStr[dest]);
+				Vistor.StatusUpdate(WallpadVistorPicData.VISTOR_PIC_UPLOAD_FTP_DOING, filepath, TimeData);
+			}
+			else {
+				Vistor.StatusUpdate(WallpadVistorPicData.VISTOR_PIC_UPLOAD_FTP_DOING, filepath, TimeData);
+			}
+			Vistor.closeDB();
+			ArgStr1 = filepath;
+			ArgStr2 = TimeData;
+			SendXMLDoc(XMLCMD, true);
+		} catch (RuntimeException re) {
+			LogUtil.errorLogInfo("", TAG, re);
+		}
+		catch (Exception e) {
+			Log.e(TAG, "[Exception] UploadVistorPic(int dest, String filepath, String TimeData, boolean retry)");
+			LogUtil.errorLogInfo("", TAG, e);//e.printStackTrace();
+		}
+
+	}
+
+	public void OpenLobbyDoor() {
+		String XMLCMD = XMLHeader+"<service type=\"request\" name=\"lobby_open\"/> \r\n</imap>";
+		DoWork = OPEN_LOBBY_DOOR;
+		String[] IPa = myIP.split("[.]");
+		String LobbyIP = IPa[0]+"."+IPa[1]+"."+"0.99";
+		SetServerIPConfig(LobbyIP, SvrPort);
+		SendXMLDoc(XMLCMD, true);
+	}
+
+	public void OpenLobbyDoor(String IP) {
+		String XMLCMD = XMLHeader+"<service type=\"request\" name=\"lobby_open\"/> \r\n</imap>";
+		DoWork = OPEN_LOBBY_DOOR;
+		SetServerIPConfig(IP, SvrPort);
+		SendXMLDoc(XMLCMD, true);
+	}
+
+	public static class iMAP_RET_DATA {
+		public String TargetIP;
+		public String XML;
+		public String RETVAL;
+	}
+
+	public void ReqGetSet() {
+		String XMLCMD = XMLHeader+"<service type=\"request\" name=\"get_setup_info\"> \r\n"+
+				"   <guidemap devtype=\"homedev\" count=\"1\">\r\n"+
+				"       <variable>\"datetime\"</variable>\r\n"+
+				"   </guidemap>\r\n"+
+				"</service>\r\n</imap>";
+		DoWork = REQ_GET_SET_SYNC;
+		SendXMLDoc(XMLCMD, true);
+	}
+
+	private String Make_Device_Bootup_XML(String MainApp_Version, String Setting_Version , String svr_Version) {
+		String XMLDoc = XMLHeader+
+				"<service type=\"request\" name=\"device_bootup\" dev_type=\"homedev\">\r\n"+
+				"<ver_bsp>  \"" + Build.DISPLAY + "\" </ver_bsp>\r\n"+
+				"<ver_app>  \"" + MainApp_Version + "\" </ver_app>\r\n"+
+				"<ver_setting>  \"" + Setting_Version + "\" </ver_setting>\r\n"+
+				"<ver_server>" + svr_Version + "</ver_server>\r\n"+
+				"</service>\r\n</imap>";
+		return XMLDoc;
+	}
+
+	public void Send_Device_BootUP(String MainApp_Version, String Setting_Version , String svr_Version ) {
+		DoWork = NOTIFY_DEVICE_BOOTUP;
+		SetServerIPConfig(ServerIP, SvrPort);
+		if ((MainApp_Version == null) || (MainApp_Version.equalsIgnoreCase(""))) {
+			MainApp_Version = "0000.00.00";
+		}
+
+		if ((Setting_Version == null) || (Setting_Version.equalsIgnoreCase(""))) {
+			Setting_Version = "0000.00.00";
+		}
+
+		if ((svr_Version == null) || (svr_Version.equalsIgnoreCase(""))) {
+			svr_Version = "1.0";
+		}
+
+		SendXMLDoc(Make_Device_Bootup_XML(MainApp_Version, Setting_Version , svr_Version), true);
+	}
+
+	public void ModeChanged(String mode) {
+		String XMLDoc = XMLHeader+
+				"<service type=\"request\" name=\"mode_changed\">\r\n"+
+				"    <new_mode>\""+mode+"\"</new_mode>\r\n"+
+				"</service>\r\n"+
+				"</imap>\r\n";
+		DoWork = NOTIFY_DEVICE_MODECHANGED;
+		WallpadStatusData  wd = new WallpadStatusData(ctx);
+		SetServerIPConfig(wd.GetManagePCIP(), wd.GetManagePCPort());
+		wd.closeDB();
+		SendXMLDoc(XMLDoc, true);
+	}
+
+	public void GetEnergyUsage() {
+		Calendar now = new GregorianCalendar();
+/*		
+		if (now.get(Calendar.DAY_OF_MONTH) == 1)
+		{
+			if (now.get(Calendar.MONTH)==0)
+			{
+				now.set(Calendar.YEAR, now.get(Calendar.YEAR)-1);
+				now.set(Calendar.MONTH, 11);
+			}
+			else
+			{
+				now.set(Calendar.MONTH, now.get(Calendar.MONTH)-1);
+			}
+		}
+		*/
+		now.add(Calendar.DATE, -1);
+
+		String XMLDoc = XMLHeader+"<service type=\"request\" name=\"get_ems_metering\">\r\n" +
+				"    <guidemap distinguish=\"month\" elect=\"yes\" gas=\"yes\" water=\"yes\" hotwater=\"yes\" energy=\"yes\" carbon=\"yes\" support_ems=\"no\">\r\n" +
+				"    <datelist year=\"" + now.get(Calendar.YEAR) + "\" month=\"" + (now.get(Calendar.MONTH) + 1) + "\"/>\r\n" +
+				"</guidemap>\r\n</service>\r\n</imap>\r\n";
+		DoWork = NOTIFY_GET_METERING;
+		SetServerIPConfig(ServerIP, SvrPort);
+		SendXMLDoc(XMLDoc, true);
+	}
+
+
+	public void GetEnergyUsageMonth() {
+		Calendar now = new GregorianCalendar();
+		now.add(Calendar.MONTH, -1);
+
+		String XMLDoc = XMLHeader+"<service type=\"request\" name=\"get_ems_metering\">\r\n" +
+				"    <guidemap distinguish=\"year\" elect=\"yes\" gas=\"yes\" water=\"yes\" hotwater=\"yes\" energy=\"yes\" carbon=\"yes\" support_ems=\"no\">\r\n" +
+				"    <datelist year=\"" + now.get(Calendar.YEAR) + "\" month=\"0\"/>\r\n" +
+				"</guidemap>\r\n</service>\r\n</imap>\r\n";
+		DoWork = NOTIFY_GET_METERING_MONTH;
+		SetServerIPConfig(ServerIP, SvrPort);
+		SendXMLDoc(XMLDoc, true);
+	}
+}

+ 46 - 9
WallPadCall/src/main/java/kr/co/icontrols/callengine/engine/AutoSaveStrangerPicture.java

@@ -5,6 +5,7 @@ import android.util.Log;
 
 import com.artncore.WallPadDataMgr.WallpadDeviceSet;
 import com.artncore.wallpadimap.RetProci;
+import com.util.LogUtil;
 
 import org.apache.commons.net.ftp.FTP;
 
@@ -35,9 +36,12 @@ public class AutoSaveStrangerPicture {
                 Log.d(TAG, "[startAutoSaveStrangerPicture] =====START =====");
                 mContext = context;
                 mAutoPictureInfo = info;
+            } catch (RuntimeException re) {
+                LogUtil.errorLogInfo("", TAG, re);
             } catch (Exception e) {
                 Log.e(TAG, "[Exception] startAutoSaveStrangerPicture(Context context, AutoPictureInfo Info)");
-                e.printStackTrace();
+                //e.printStackTrace();
+                LogUtil.errorLogInfo("", TAG, e);
             }
         }
 
@@ -58,8 +62,11 @@ public class AutoSaveStrangerPicture {
 
                 send_visitor_access_info_request(mAutoPictureInfo.strDong, mAutoPictureInfo.strHo, strType, strTime, strFileName, mAutoPictureInfo.strMessage);
                 Global.sendVisitorEventBRtoMobileVendor(strType, strTime);
+            } catch (RuntimeException re) {
+                LogUtil.errorLogInfo("", TAG, re);
             } catch (Exception e) {
-                e.printStackTrace();
+                //e.printStackTrace();
+                LogUtil.errorLogInfo("", TAG, e);
                 Log.e(TAG, "[Exception] startAutoSaveStrangerPicture.run()");
             }
         }
@@ -72,12 +79,28 @@ public class AutoSaveStrangerPicture {
             Log.d(TAG, "[UploadStrangerPicture] ===== START =====");
             WallpadDeviceSet wallpadDeviceSet = new WallpadDeviceSet(mContext);
             try {
-                bMainServer2dot0 = wallpadDeviceSet.GetNewDanjiServer();
+                //bMainServer2dot0 = wallpadDeviceSet.GetNewDanjiServer();
+                int danjiserverType = wallpadDeviceSet.GetNewDanjiServer();
+                if(danjiserverType == 1)
+                {
+                    bMainServer2dot0 = false;
+                }
+                else if(danjiserverType == 2)
+                {
+                    bMainServer2dot0 = true;
+                }
+                else
+                {
+
+                }
                 Log.d(TAG, "[UploadStrangerPicture] bMainServer2dot0 [" + bMainServer2dot0 + "]");
                 wallpadDeviceSet.closeDB();
+            } catch (RuntimeException re) {
+                LogUtil.errorLogInfo("", TAG, re);
             } catch (Exception e) {
                 Log.e(TAG, "[Exception] UploadStrangerPicture()");
-                e.printStackTrace();
+                //e.printStackTrace();
+                LogUtil.errorLogInfo("", TAG, e);
                 wallpadDeviceSet.closeDB();
             }
         }
@@ -131,9 +154,12 @@ public class AutoSaveStrangerPicture {
                 disconnectFTP();
                 Log.d(TAG, "[UploadStrangerPicture.run()] Complete upload!!!");
                 send_visitor_upload_complete_notice(true, mAutoPictureInfo.strDong, mAutoPictureInfo.strHo, mAutoPictureInfo.eCallType, mAutoPictureInfo.eCallStatus, strTime, strFileName, "null");
+            } catch (RuntimeException re) {
+                LogUtil.errorLogInfo("", TAG, re);
             } catch (Exception e) {
                 Log.e(TAG, "[Exception] UploadStrangerPicture.run()");
-                e.printStackTrace();
+                //e.printStackTrace();
+                LogUtil.errorLogInfo("", TAG, e);
             }
         }
     }
@@ -148,9 +174,13 @@ public class AutoSaveStrangerPicture {
             }
             Log.d(TAG, "[disconnectFTP] disconnectFTP FAIL!!");
             return false;
+        } catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+            return false;
         } catch (Exception e) {
             Log.e(TAG, "[Exception] disconnectFTP()");
-            e.printStackTrace();
+            //e.printStackTrace();
+            LogUtil.errorLogInfo("", TAG, e);
             return false;
         }
     }
@@ -158,6 +188,7 @@ public class AutoSaveStrangerPicture {
     static String strReply_User = "";
     static String strReply_PW = "";
     static String strReply_Path = "";
+    static private String strPass_key = "passwd";
 
     public static boolean send_visitor_access_info_request(String strDong, String strHo, String strType, String strTime, final String strFileName, String strMessage) {
         try {
@@ -170,7 +201,7 @@ public class AutoSaveStrangerPicture {
                         Log.d(TAG, "[send_visitor_access_info_request] ProcSuccess()");
                         visitor_access_info.SetItem("ftp_info");
                         strReply_User = visitor_access_info.GetAttributeVal(0, "user");
-                        strReply_PW = visitor_access_info.GetAttributeVal(0, "passwd");
+                        strReply_PW = visitor_access_info.GetAttributeVal(0, strPass_key);
                         strReply_Path = visitor_access_info.GetAttributeVal(0, "path");
                         Log.d(TAG, "[send_visitor_access_info_request] Reply!! User [" + strReply_User + "], PW [" + strReply_PW + "], Path [" + strReply_Path + "]");
                         strUserID = strReply_User;
@@ -193,9 +224,12 @@ public class AutoSaveStrangerPicture {
                 });
                 return true;
             }
+        } catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {
             Log.e(TAG, "[Exception] send_visitor_access_info_request(String strDong, String strHo, String strType, String strTime, String strFileName, String strMessage)");
-            e.printStackTrace();
+            //e.printStackTrace();
+            LogUtil.errorLogInfo("", TAG, e);
         }
         return false;
     }
@@ -233,9 +267,12 @@ public class AutoSaveStrangerPicture {
                 });
                 return true;
             }
+        } catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {
             Log.e(TAG, "[Exception] send_visitor_upload_complete_notice(boolean bResult, String strDong, String strHo, String strType, String strTime, String strFileName, String strMessage)");
-            e.printStackTrace();
+            //e.printStackTrace();
+            LogUtil.errorLogInfo("", TAG, e);
         }
         return false;
     }

+ 47 - 9
WallPadCall/src/main/java/kr/co/icontrols/callengine/engine/AutoSaveVisitorPicture.java

@@ -12,6 +12,7 @@ import org.apache.commons.net.ftp.FTP;
 
 import com.artncore.WallPadDataMgr.WallpadDeviceSet;
 import com.artncore.wallpadimap.RetProci;
+import com.util.LogUtil;
 
 import android.content.Context;
 import android.util.Log;
@@ -55,9 +56,12 @@ public class AutoSaveVisitorPicture {
                 mContext = context;
                 mAutoPictureInfo = Info;
                 bRemote_FrontCalled = Remote_FrontCalled;
+            } catch (RuntimeException re) {
+                LogUtil.errorLogInfo("", TAG, re);
             } catch (Exception e) {
                 Log.e(TAG, "[Exception] startAutoSaveVisitorPicture(Context context, AutoPictureInfo Info)");
-                e.printStackTrace();
+                //e.printStackTrace();            
+                LogUtil.errorLogInfo("", TAG, e);
             }
         }
 
@@ -90,9 +94,12 @@ public class AutoSaveVisitorPicture {
 
                 send_visitor_access_info_request(mAutoPictureInfo.strDong, mAutoPictureInfo.strHo, strType, strTime, strFileName, mAutoPictureInfo.strMessage);
                 Global.sendVisitorEventBRtoMobileVendor(strType, strTime);
+            } catch (RuntimeException re) {
+                LogUtil.errorLogInfo("", TAG, re);
             } catch (Exception e) {
                 Log.e(TAG, "[Exception] startAutoSaveVisitorPicture.run()");
-                e.printStackTrace();
+                //e.printStackTrace();            
+                LogUtil.errorLogInfo("", TAG, e);
             }
         }
     }
@@ -105,12 +112,29 @@ public class AutoSaveVisitorPicture {
             LOG_INFO("[UploadVisitorPicture] ===== START =====");
             WallpadDeviceSet wallpadDeviceSet = new WallpadDeviceSet(mContext);
             try {
-                bMainServer2dot0 = wallpadDeviceSet.GetNewDanjiServer();
+                int danjiserverType = wallpadDeviceSet.GetNewDanjiServer();
+                if(danjiserverType == 1)
+                {
+                    bMainServer2dot0 = false;
+                }
+                else if(danjiserverType == 2)
+                {
+                    bMainServer2dot0 = true;
+                }
+                else
+                {
+
+                }
+
+                //bMainServer2dot0 = wallpadDeviceSet.GetNewDanjiServer();
                 LOG_INFO("[UploadVisitorPicture] bMainServer2dot0 [" + bMainServer2dot0 + "]");
                 wallpadDeviceSet.closeDB();
+            } catch (RuntimeException re) {
+                LogUtil.errorLogInfo("", TAG, re);
             } catch (Exception e) {
                 Log.e(TAG, "[Exception] UploadVisitorPicture()");
-                e.printStackTrace();
+                //e.printStackTrace();            
+                LogUtil.errorLogInfo("", TAG, e);
                 wallpadDeviceSet.closeDB();
             }
         }
@@ -164,9 +188,12 @@ public class AutoSaveVisitorPicture {
                 disconnectFTP();
                 LOG_INFO("[UploadVisitorPicture.run()] Complete upload!!!");
                 send_visitor_upload_complete_notice(true, mAutoPictureInfo.strDong, mAutoPictureInfo.strHo, mAutoPictureInfo.eCallType, strTime, strFileName, "null");
+            } catch (RuntimeException re) {
+                LogUtil.errorLogInfo("", TAG, re);
             } catch (Exception e) {
                 Log.e(TAG, "[Exception] UploadVisitorPicture.run()");
-                e.printStackTrace();
+                //e.printStackTrace();            
+                LogUtil.errorLogInfo("", TAG, e);
             }
         }
     }
@@ -181,9 +208,13 @@ public class AutoSaveVisitorPicture {
             }
             LOG_INFO("[disconnectFTP] disconnectFTP FAIL!!");
             return false;
+        } catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+            return false;
         } catch (Exception e) {
             Log.e(TAG, "[Exception] disconnectFTP()");
-            e.printStackTrace();
+            //e.printStackTrace();            
+            LogUtil.errorLogInfo("", TAG, e);
             return false;
         }
     }
@@ -191,6 +222,7 @@ public class AutoSaveVisitorPicture {
     static String strReply_User = "";
     static String strReply_PW = "";
     static String strReply_Path = "";
+    static String strPass_Key = "passwd";
 
     public static boolean send_visitor_access_info_request(String strDong, String strHo, String strType, String strTime, final String strFileName, String strMessage) {
         try {
@@ -203,7 +235,7 @@ public class AutoSaveVisitorPicture {
                         LOG_INFO("[send_visitor_access_info_request] ProcSuccess()");
                         visitor_access_info.SetItem("ftp_info");
                         strReply_User = visitor_access_info.GetAttributeVal(0, "user");
-                        strReply_PW = visitor_access_info.GetAttributeVal(0, "passwd");
+                        strReply_PW = visitor_access_info.GetAttributeVal(0, strPass_Key);
                         strReply_Path = visitor_access_info.GetAttributeVal(0, "path");
                         LOG("[send_visitor_access_info_request] Reply!! User [" + strReply_User + "], PW [" + strReply_PW + "], Path [" + strReply_Path + "]");
                         strUserID = strReply_User;
@@ -226,9 +258,12 @@ public class AutoSaveVisitorPicture {
                 });
                 return true;
             }
+        } catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {
             Log.e(TAG, "[Exception] send_visitor_access_info_request(String strDong, String strHo, String strType, String strTime, String strFileName, String strMessage)");
-            e.printStackTrace();
+            //e.printStackTrace();            
+            LogUtil.errorLogInfo("", TAG, e);
         }
         return false;
     }
@@ -259,9 +294,12 @@ public class AutoSaveVisitorPicture {
                 });
                 return true;
             }
+        } catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {
             Log.e(TAG, "[Exception] send_visitor_upload_complete_notice(boolean bResult, String strDong, String strHo, String strType, String strTime, String strFileName, String strMessage)");
-            e.printStackTrace();
+            //e.printStackTrace();            
+            LogUtil.errorLogInfo("", TAG, e);
         }
         return false;
     }

二进制
WallPadConfig/libs/WallPadAPI.jar


+ 15 - 1
WallPadConfig/src/main/java/kr/co/icontrols/wallpadconfig/screen/ConfigSettingMainScreen.java

@@ -406,7 +406,21 @@ public class ConfigSettingMainScreen extends WpadScreen {
 
 				WallpadDeviceSet wds = new WallpadDeviceSet(getContext());
 				boolean internetUse = wds.Get_NonInternetSupportUse();
-				boolean mNewDanjiServer =  wds.GetNewDanjiServer();
+				//boolean mNewDanjiServer =  wds.GetNewDanjiServer();
+				boolean mNewDanjiServer = false;
+				int danjiserverType = wds.GetNewDanjiServer();
+				if(danjiserverType == 1)
+				{
+					mNewDanjiServer = false;
+				}
+				else if(danjiserverType == 2)
+				{
+					mNewDanjiServer = true;
+				}
+				else
+				{
+
+				}
 				wds.closeDB();
 
 				if (!internetUse) {

+ 15 - 1
WallPadConfig/src/main/java/kr/co/icontrols/wallpadconfig/screen/PopupSmartKeySvrSend.java

@@ -442,7 +442,21 @@ public class PopupSmartKeySvrSend extends WpadScreen
             if(sendList == null) return false;
 
             WallpadDeviceSet wds = new WallpadDeviceSet(getContext());
-            boolean isServer2_0 = wds.GetNewDanjiServer();
+//            boolean isServer2_0 = wds.GetNewDanjiServer();
+            boolean isServer2_0 = false;
+            int danjiserverType = wds.GetNewDanjiServer();
+            if(danjiserverType == 1)
+            {
+                isServer2_0 = false;
+            }
+            else if(danjiserverType == 2)
+            {
+                isServer2_0 = true;
+            }
+            else
+            {
+
+            }
             wds.closeDB();
 
             iMAPSetAccessKey imapClass = new iMAPSetAccessKey(getContext());

二进制
WallPadMain/libs/WallPadAPI.jar


+ 15 - 1
WallPadMain/src/main/java/kr/co/icontrols/wallpadmain/MainActivity.java

@@ -2833,7 +2833,21 @@ public class MainActivity extends WpadActivity {
                             boolean mNewDanjiServer = false;
                             try {
                                 WallpadDeviceSet wallpadDeviceSet = new WallpadDeviceSet(getApplicationContext());
-                                mNewDanjiServer =  wallpadDeviceSet.GetNewDanjiServer();
+                                //mNewDanjiServer =  wallpadDeviceSet.GetNewDanjiServer();
+                                int danjiserverType = wallpadDeviceSet.GetNewDanjiServer();
+                                if(danjiserverType == 1)
+                                {
+                                    mNewDanjiServer = false;
+                                }
+                                else if(danjiserverType == 2)
+                                {
+                                    mNewDanjiServer = true;
+                                }
+                                else
+                                {
+
+                                }
+
                                 wallpadDeviceSet.closeDB();
                             } catch (RuntimeException re) {
                                 LogUtil.errorLogInfo("", TAG, re);

+ 63 - 4
WallPadMain/src/main/java/kr/co/icontrols/wallpadmain/util/iMapServer.java

@@ -1874,7 +1874,23 @@ public class iMapServer extends Service {
                 strTime = time;
                 strFileName = filename;
                 strUploadFile = uploadfile;
-                bMainServer2dot0 = wallpadDeviceSet.GetNewDanjiServer();
+//                bMainServer2dot0 = wallpadDeviceSet.GetNewDanjiServer();
+                int danjiserverType = wallpadDeviceSet.GetNewDanjiServer();
+                if(danjiserverType == 1)
+                {
+                    bMainServer2dot0 = false;
+                }
+                else if(danjiserverType == 2)
+                {
+                    bMainServer2dot0 = true;
+                }
+                else
+                {
+
+                }
+
+
+
                 Log.i(TAG, "[uploadVisitorPicture] bMainServer2dot0 [" + bMainServer2dot0 + "]");
                 wallpadDeviceSet.closeDB();
                 Log.i(TAG, "[uploadVisitorPicture] strUploadFile [" + strUploadFile +"], strFileName [" + strFileName +"], strTime [" + strTime +"]");
@@ -2911,7 +2927,21 @@ public class iMapServer extends Service {
             /////////////////////////////////////////////////////////////////////
             try {
                 WallpadDeviceSet wallpadDeviceSet = new WallpadDeviceSet(getApplicationContext());
-                mNewDanjiServer =  wallpadDeviceSet.GetNewDanjiServer();
+//                mNewDanjiServer =  wallpadDeviceSet.GetNewDanjiServer();
+                int danjiserverType = wallpadDeviceSet.GetNewDanjiServer();
+                if(danjiserverType == 1)
+                {
+                    mNewDanjiServer = false;
+                }
+                else if(danjiserverType == 2)
+                {
+                    mNewDanjiServer = true;
+                }
+                else
+                {
+
+                }
+
                 wallpadDeviceSet.closeDB();
             } catch (RuntimeException re) {
                 LogUtil.errorLogInfo("", TAG, re);
@@ -11244,7 +11274,21 @@ public class iMapServer extends Service {
 
             try {
                 WallpadDeviceSet wallpadDeviceSet = new WallpadDeviceSet(getApplicationContext());
-                mNewDanjiServer =  wallpadDeviceSet.GetNewDanjiServer();
+               // mNewDanjiServer =  wallpadDeviceSet.GetNewDanjiServer();
+                int danjiserverType = wallpadDeviceSet.GetNewDanjiServer();
+                if(danjiserverType == 1)
+                {
+                    mNewDanjiServer = false;
+                }
+                else if(danjiserverType == 2)
+                {
+                    mNewDanjiServer = true;
+                }
+                else
+                {
+
+                }
+
                 wallpadDeviceSet.closeDB();
             } catch (RuntimeException re) {
                 LogUtil.errorLogInfo("", TAG, re);
@@ -11853,7 +11897,22 @@ public class iMapServer extends Service {
 			try {
 			    // 신형 단지서버 사용 유무를 가져온다.
                 WallpadDeviceSet wallpadDeviceSet = new WallpadDeviceSet(getApplicationContext());
-                boolean bNewDanjiServer = wallpadDeviceSet.GetNewDanjiServer();
+//                boolean bNewDanjiServer = wallpadDeviceSet.GetNewDanjiServer();
+                boolean bNewDanjiServer = false;
+                int danjiserverType = wallpadDeviceSet.GetNewDanjiServer();
+                if(danjiserverType == 1)
+                {
+                    bNewDanjiServer = false;
+                }
+                else if(danjiserverType == 2)
+                {
+                    bNewDanjiServer = true;
+                }
+                else
+                {
+
+                }
+
                 wallpadDeviceSet.closeDB();
 
 				WallpadStatusData DBMGR = new WallpadStatusData(getApplicationContext());