Bläddra i källkod

[전체 소스 업데이트]
1. 김수진 선임 작업 한 기준 으로 업그레이드
2. 기존 월패드 소스로 변경한 project
- WallPadAPI, WallPadDevService, WallPadHomeCtrl, WallPadSecurity
3. 최신 WallPadAPI 적용 (WallPadMain은 제외)

DESKTOP-FBA840V\icontrols 4 år sedan
förälder
incheckning
237838d7ac
100 ändrade filer med 29815 tillägg och 31544 borttagningar
  1. 80 80
      AutoPicture/build.gradle
  2. BIN
      AutoPicture/libs/WallPadAPI.jar
  3. BIN
      AutoPicture/libs/WallPadSupport.jar
  4. 1 2
      AutoPicture/src/main/AndroidManifest.xml
  5. 753 914
      AutoPicture/src/main/java/kr/co/icontrols/autopicture/MainActivity.java
  6. 41 141
      AutoPicture/src/main/java/kr/co/icontrols/v40ioctl/V40IF.java
  7. 28 28
      AutoPicture/src/main/java/kr/co/icontrols/v40ioctl/V40IOInterface.java
  8. 11 38
      AutoPicture/src/main/java/kr/co/icontrols/v40ioctl/V40IOInterface2.java
  9. 7 7
      AutoPicture/src/main/res/anim/anim_in.xml
  10. 7 7
      AutoPicture/src/main/res/anim/anim_in_downup.xml
  11. 7 7
      AutoPicture/src/main/res/anim/anim_in_updown.xml
  12. 7 7
      AutoPicture/src/main/res/anim/anim_out.xml
  13. 7 7
      AutoPicture/src/main/res/anim/anim_out_downup.xml
  14. 7 7
      AutoPicture/src/main/res/anim/anim_out_updown.xml
  15. 16 16
      AutoPicture/src/main/res/layout/activity_main.xml
  16. 9 9
      AutoPicture/src/main/res/menu/main.xml
  17. 7 7
      AutoPicture/src/main/res/values-sw600dp/dimens.xml
  18. 8 8
      AutoPicture/src/main/res/values-sw720dp-land/dimens.xml
  19. 10 10
      AutoPicture/src/main/res/values-v11/styles.xml
  20. 10 10
      AutoPicture/src/main/res/values-v14/styles.xml
  21. 7 7
      AutoPicture/src/main/res/values/dimens.xml
  22. 7 7
      AutoPicture/src/main/res/values/strings.xml
  23. 26 26
      AutoPicture/src/main/res/values/styles.xml
  24. 88 88
      LogOutputService/build.gradle
  25. BIN
      LogOutputService/libs/WallPadAPI.jar
  26. BIN
      LogOutputService/libs/WallPadAPIforSVC.jar
  27. BIN
      LogOutputService/libs/WallPadSupport.jar
  28. 28 28
      LogOutputService/src/main/AndroidManifest.xml
  29. 66 70
      LogOutputService/src/main/java/com/artncore/apps/ic_wallpad/service/log/LogOutputService.java
  30. 10 10
      LogOutputService/src/main/res/values-v11/styles.xml
  31. 10 10
      LogOutputService/src/main/res/values-v14/styles.xml
  32. 5 5
      LogOutputService/src/main/res/values/strings.xml
  33. 17 17
      LogOutputService/src/main/res/values/styles.xml
  34. 87 87
      ManagerSetting/build.gradle
  35. BIN
      ManagerSetting/libs/WallPadAPI.jar
  36. BIN
      ManagerSetting/libs/WallPadSupport.jar
  37. 61 61
      ManagerSetting/src/main/AndroidManifest.xml
  38. 6 18
      ManagerSetting/src/main/java/com/artncore/deviceinterface/WallPadInterface.java
  39. 174 189
      ManagerSetting/src/main/java/com/artncore/managersetting/MainApplication.java
  40. 2250 2344
      ManagerSetting/src/main/java/com/artncore/managersetting/dao/MainDatabaseManager.java
  41. 447 459
      ManagerSetting/src/main/java/com/artncore/managersetting/domain/Const.java
  42. 110 110
      ManagerSetting/src/main/java/com/artncore/managersetting/domain/ControllerVO.java
  43. 163 163
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/AdminHeader.java
  44. 3 19
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/AudioRecordController.java
  45. 568 615
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/CameraTestDialog.java
  46. 249 249
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/ControllerListAdapter.java
  47. 14 49
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/RecordTestDialog.java
  48. 200 200
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/SwitchButton.java
  49. 175 175
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/SwitchButtonListAdapter.java
  50. 787 795
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/activities/MainActivity.java
  51. 2538 2686
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/activities/SetAddress.java
  52. 141 141
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/AdminCheckFragment.java
  53. 119 119
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/AdminDeveloperModeFragment.java
  54. 2 10
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/AdminInRoomSensorSetFragment.java
  55. 498 502
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/AdminMenu.java
  56. 209 209
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/AdminMenuFragment.java
  57. 358 370
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/AdminPasswordResetFragment.java
  58. 150 150
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/AdminQueryFragment.java
  59. 701 701
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/AdminSalesSampleFragment.java
  60. 727 727
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/AdminSetIPFragment.java
  61. 237 253
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/AdminSettingFragment.java
  62. 349 356
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/AdminSubMenu.java
  63. 467 498
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/AdminSystemResetFragment.java
  64. 1638 1656
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/CheckControllerFragment.java
  65. 1136 1166
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/CheckEtcFragment.java
  66. 1013 1017
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/CheckNetworkFragment.java
  67. 1502 1527
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/CheckSensorFragment.java
  68. 164 164
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/QueryCCTVInfoFragment.java
  69. 384 384
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/QueryEtcInfoFragment.java
  70. 243 243
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/QueryGuardInfoFragment.java
  71. 389 389
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/QueryStorageInfoFragment.java
  72. 943 953
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/QueryVersionInfoFragment.java
  73. 113 113
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/SetDeveloperPage.java
  74. 752 752
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/SetSeverIPFragment.java
  75. 702 702
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/SettingAdditionalFunctionFragment.java
  76. 1989 2143
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/SettingControllerFragment.java
  77. 1962 2149
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/SettingDebuggingFragment.java
  78. 79 350
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/SettingDetailFunctionFragment.java
  79. 14 54
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/SettingEMLivingRegiFrag.java
  80. 1002 1010
      ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/SettingEnergyManagementFragment.java
  81. 522 522
      ManagerSetting/src/main/java/com/artncore/managersetting/util/DialogUtil.java
  82. 277 277
      ManagerSetting/src/main/java/com/artncore/managersetting/util/NetworkUtil.java
  83. 274 307
      ManagerSetting/src/main/java/com/artncore/managersetting/util/StorageUtil.java
  84. 141 145
      ManagerSetting/src/main/java/com/artncore/managersetting/util/StringUtil.java
  85. 56 56
      ManagerSetting/src/main/java/com/artncore/managersetting/util/TimeUtil.java
  86. 143 143
      ManagerSetting/src/main/java/com/artncore/managersetting/util/ViewUtil.java
  87. 200 200
      ManagerSetting/src/main/java/kr/co/icontrols/a20ioctl/A20IOInterface.java
  88. 154 154
      ManagerSetting/src/main/java/kr/co/icontrols/managersetting/declare/Common.java
  89. 132 143
      ManagerSetting/src/main/java/kr/co/icontrols/managersetting/imap/iMAP_ctrl_config_read.java
  90. 216 226
      ManagerSetting/src/main/java/kr/co/icontrols/managersetting/imap/iMAP_hn_config_read.java
  91. 32 126
      ManagerSetting/src/main/java/kr/co/icontrols/v40ioctl/V40IF.java
  92. 172 202
      ManagerSetting/src/main/java/kr/co/icontrols/v40ioctl/V40IOInterface.java
  93. 11 41
      ManagerSetting/src/main/java/kr/co/icontrols/v40ioctl/V40IOInterface2.java
  94. BIN
      ManagerSetting/src/main/jniLibs/armeabi-v7a/libwpd_v40interface2-jni.so
  95. BIN
      ManagerSetting/src/main/jniLibs/armeabi/libwpd_v40interface2-jni.so
  96. 52 52
      ManagerSetting/src/main/res/layout/activity_item_twopane.xml
  97. 318 318
      ManagerSetting/src/main/res/layout/activity_set_address.xml
  98. 8 12
      ManagerSetting/src/main/res/layout/activity_set_address_1010.xml
  99. 6 10
      ManagerSetting/src/main/res/layout/activity_set_address_1020b_i.xml
  100. 6 10
      ManagerSetting/src/main/res/layout/activity_set_address_1030.xml

+ 80 - 80
AutoPicture/build.gradle

@@ -1,80 +1,80 @@
-// This buildscript{} block configures the code driving the build
-buildscript {
-    /**
-     * The nested repositories{} block declares that this build uses the
-     * jcenter repository.
-     */
-    repositories {
-        jcenter()
-        google()
-    }
-
-    /**
-     * This block declares a dependency on the 2.3.3 version
-     * of the Gradle plugin for the buildscript.
-     */
-    dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.1'
-    }
-}
-
-allprojects {
-    repositories {
-        jcenter()
-        google()
-    }
-}
-
-apply plugin: 'com.android.application'
-
-android {
-    lintOptions {
-        disable "ResourceType"
-        checkReleaseBuilds false
-    }
-
-    compileSdkVersion 28
-
-    signingConfigs {
-        config {
-            keyAlias 'HDC_HN_RELEASE_KEY'
-            keyPassword 'hdchnsys1776'
-            storeFile file('../HDC_HN_RELEASE_KEY.jks')
-            storePassword 'hdchnsys1776'
-        }
-    }
-
-    defaultConfig {
-        applicationId "kr.co.icontrols.autopicture"
-        minSdkVersion 17
-        targetSdkVersion 17
-    }
-
-    applicationVariants.all { variant ->
-        variant.outputs.all { output ->
-            outputFileName = new File("../", "AutoPicture.apk");
-        }
-    }
-
-    buildTypes {
-        release {
-            signingConfig signingConfigs.config
-//            minifyEnabled true
-//            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
-        }
-        release_secured {
-            signingConfig signingConfigs.config
-            minifyEnabled true
-            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
-        }
-        debug {
-            signingConfig signingConfigs.config
-        }
-    }
-}
-
-dependencies {
-    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
-    implementation files('libs/WallPadAPI.jar')
-    implementation files('libs/WallPadSupport.jar')
-}
+// This buildscript{} block configures the code driving the build
+buildscript {
+    /**
+     * The nested repositories{} block declares that this build uses the
+     * jcenter repository.
+     */
+    repositories {
+        jcenter()
+        google()
+    }
+
+    /**
+     * This block declares a dependency on the 2.3.3 version
+     * of the Gradle plugin for the buildscript.
+     */
+    dependencies {
+        classpath 'com.android.tools.build:gradle:4.1.1'
+    }
+}
+
+allprojects {
+    repositories {
+        jcenter()
+        google()
+    }
+}
+
+apply plugin: 'com.android.application'
+
+android {
+    lintOptions {
+        disable "ResourceType"
+        checkReleaseBuilds false
+    }
+
+    compileSdkVersion 28
+
+    signingConfigs {
+        config {
+            keyAlias 'HDC_HN_RELEASE_KEY'
+            keyPassword 'hdchnsys1776'
+            storeFile file('../HDC_HN_RELEASE_KEY.jks')
+            storePassword 'hdchnsys1776'
+        }
+    }
+
+    defaultConfig {
+        applicationId "kr.co.icontrols.autopicture"
+        minSdkVersion 17
+        targetSdkVersion 17
+    }
+
+    applicationVariants.all { variant ->
+        variant.outputs.all { output ->
+            outputFileName = new File("../", "AutoPicture.apk");
+        }
+    }
+
+    buildTypes {
+        release {
+            signingConfig signingConfigs.config
+//            minifyEnabled true
+//            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+        }
+        release_secured {
+            signingConfig signingConfigs.config
+            minifyEnabled true
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+        }
+        debug {
+            signingConfig signingConfigs.config
+        }
+    }
+}
+
+dependencies {
+    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
+    implementation files('libs/WallPadAPI.jar')
+    implementation files('libs/WallPadSupport.jar')
+}

BIN
AutoPicture/libs/WallPadAPI.jar


BIN
AutoPicture/libs/WallPadSupport.jar


+ 1 - 2
AutoPicture/src/main/AndroidManifest.xml

@@ -2,10 +2,9 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="kr.co.icontrols.autopicture"
     android:versionCode="17"
-    android:versionName="2021.03.26.01">
+    android:versionName="2020.11.12.01">
 
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
-    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
 
     <application
         android:allowBackup="true"

+ 753 - 914
AutoPicture/src/main/java/kr/co/icontrols/autopicture/MainActivity.java

@@ -1,915 +1,754 @@
-package kr.co.icontrols.autopicture;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.List;
-
-import com.artncore.WallPadDataMgr.WallpadStatusData;
-import com.artncore.commons.define;
-import com.util.LogUtil;
-//import com.util.LogUtil;
-
-import android.Manifest;
-import android.content.pm.PackageManager;
-import android.graphics.Matrix;
-import android.graphics.drawable.BitmapDrawable;
-import android.media.ExifInterface;
-import android.os.Bundle;
-import android.os.CountDownTimer;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
-import android.os.PowerManager;
-import android.app.Activity;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.graphics.Color;
-import android.graphics.Point;
-import android.util.Log;
-import android.view.Display;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.View.OnTouchListener;
-import android.view.WindowManager;
-import android.view.animation.AnimationUtils;
-import android.widget.ImageView;
-import android.widget.ViewFlipper;
-
-import androidx.core.app.ActivityCompat;
-import androidx.core.content.ContextCompat;
-
-import kr.co.icontrols.v40ioctl.V40IF;
-import kr.co.icontrols.wallpadsupport.Version;
-
-/**
- * @description App 시작 방법<br>
- * Intent intent = new Intent(Intent.ACTION_MAIN);<br>
- * intent.setComponent(new ComponentName("kr.co.icontrols.autopicture",
- * "kr.co.icontrols.autopicture.MainActivity"));<br>
- * intent.putExtra("IMAGE_NEXTSHOW_TIME_UNIT_SEC", AUTOPIC_SETTING_VALUE_SEC);<br>
- * intent.putExtra("IMAGE_NEXTSHOW_ANIMATION", AUTOPIC_SETTING_VALUE_TYPE);     <br>
- * startActivity(intent);<br><br>
- * $AUTOPIC_SETTING_VALUE_SEC 은 이미지 전환 기준 초수<br>
- * $AUTOPIC_SETTING_VALUE_TYPE 은 이미지 전환 에니메이션 효과<br>
- * &nbsp&nbsp$$1. 그 자리에서 서서히 사라지기<br>
- * &nbsp&nbsp$$2. 왼쪽에서 오른쪽으로<br>
- * &nbsp&nbsp$$3. 아래에서 위로 <br>
- * &nbsp&nbsp$$4. 위에서 아래로<br><br>
- * App 종료 방법<br>
- * Intent intent = new Intent();<br>
- * intent.setAction("kr.co.icontrols.autopicture.BR_APP_FINISH");<br>
- * sendBroadcast(intent);<br>
- */
-public class MainActivity extends Activity implements OnTouchListener {
-
-    private final static String TAG = "AutoPictureApp";
-
-    private final boolean DEBUG_LOG_ON = true;
-
-    private void DebugLogOutput(String s) {
-        if (DEBUG_LOG_ON) Log.d(TAG, s);
-    }
-
-    //[DB]
-    WallpadStatusData DBMGR;
-
-    //[Time]
-    Calendar mCal;
-
-    // [Show Picture]
-    ViewFlipper mFlipper;
-
-    ImageView View0;
-    ImageView View1;
-
-    Bitmap mPhotoBitmapNext;
-    Bitmap mPhotoBitmapCenter;
-
-    int mIntCenter;
-    int mIndexOfFillpper = 0;
-
-    List<String> filesList = new ArrayList<String>();
-
-    CounterDown timerAutoPicture = null;
-    TimerAutoPictureChanger mTimerAutoPictureChanger = null;
-
-    int AnimationSec;
-    int AnimationType;
-    boolean isTestShow = false;
-
-    int displayWidth;
-    int displayHeight;
-
-    Boolean PictureMorethanZero = false;
-    private BroadcastReceiver mWpadNotifyBR = null;
-    private final String BR_APP_FINISH = "kr.co.icontrols.wallpad.BR_APP_FINISH";
-
-    V40IF mV40IF;
-
-    // PopupActivityRun
-    private static boolean PopupActivityRun = false;
-
-    public static boolean getPopupActivityRun() {
-        return PopupActivityRun;
-    }
-
-    public static void setPopupActivityRun(boolean run) {
-        PopupActivityRun = run;
-    }
-
-    private static final int REQUEST_EXTERNAL_STORAGE = 100;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        PopupActivityRun = false;
-
-        Log.d(TAG, "[START - AutoPictureApp] --------------------------------------------");
-        if (Version.getPlatformType() == Version.PLATFORM_TYPE.A40i) mV40IF = new V40IF();
-        else Log.w(TAG, "[onCreate] Not Supported PLATFORM_TYPE [" + Version.getPlatformType() + "]");
-
-        // 9. Check Permission
-        DebugLogOutput("[Create] - Step1 : Permission Check");
-        boolean hasPermission = (ContextCompat.checkSelfPermission(this,
-                Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED);
-        Log.d(TAG, "[onCreate] hasPermission: " + hasPermission);
-        if (!hasPermission) {
-            LogUtil.SetConsole();
-        }
-
-        Intent intent = getIntent();
-        if (intent != null) {
-            AnimationSec = intent.getIntExtra("IMAGE_NEXTSHOW_TIME_UNIT_SEC", -1);
-            if (AnimationSec < 0) {
-                AnimationSec = 5;
-            }
-            AnimationType = intent.getIntExtra("IMAGE_NEXTSHOW_ANIMATION", -1);
-            if (AnimationType < 0) {
-                AnimationType = 1;
-            }
-            isTestShow = intent.getBooleanExtra("TEST_SHOW", false);
-            Log.d(TAG, "isTestShow : " + isTestShow);
-            if (isTestShow == true) {
-                ctrlLCDOnOff(true);
-            }
-        }
-
-        ctrlLCDOnOff(true);
-
-        DBMGR = new WallpadStatusData(getApplicationContext());
-        mCal = Calendar.getInstance();
-
-        mWpadNotifyBR = new BroadcastReceiver() {
-            @Override
-            public void onReceive(Context context, Intent intent) {
-                Log.d(TAG, "Receive BR " + intent.getAction());
-                String ActionName = intent.getAction();
-                if (ActionName.equals(BR_APP_FINISH)) {
-                    Log.i(TAG, "AutoPicture finish - BR_APP_FINISH");
-                    finish();
-                } else BrReceive(intent);
-            }
-        };
-
-        IntentFilter filter = new IntentFilter(BR_APP_FINISH);
-        registerReceiver(mWpadNotifyBR, filter);
-
-        Display display = getWindowManager().getDefaultDisplay();
-        Point size = new Point();
-        display.getSize(size);
-
-        displayWidth = size.x;
-        displayHeight = size.y;
-
-        //사진 표시
-        mFlipper = new ViewFlipper(this);
-        mFlipper.setBackgroundColor(Color.BLACK);
-
-        View0 = new ImageView(this);
-        View1 = new ImageView(this);
-
-        File dirUsb = new File("/storage/usb0");
-        File dirInternal = new File(define.ALBUM_PICTURE_LOCATION);
-        if (!dirInternal.isDirectory()) dirInternal.mkdir();
-
-        try {
-            if (dirInternal.isDirectory()) {
-                Log.d(TAG, dirInternal + " is Directory!!");
-                printfiles(dirInternal);
-            }
-            printfiles(dirUsb);
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-        } catch (Exception e) {
-            Log.e(TAG, e.toString());
-        }
-        if (filesList.size() != 0) {
-            PictureMorethanZero = true;
-            mIntCenter = 0;
-            File FileCenter = new File(filesList.get(mIntCenter));
-            mPhotoBitmapCenter = decodeFile(FileCenter, displayWidth, displayHeight);
-
-            if (mPhotoBitmapCenter == null) {
-                Log.w(TAG, "[onCreate] mPhotoBitmapCenter is null");
-                PictureMorethanZero = false;
-                setAutoPictureAnimation(AnimationType);
-                startAutoPictureTimeThread();
-//                SetInfoFromMainUI(1, 1);
-//                timerAutoPicture.start();
-
-                setContentView(mFlipper);
-            }
-
-            View0.setImageBitmap(mPhotoBitmapCenter);
-            View0.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
-            mFlipper.addView(View0);
-            mPhotoBitmapCenter = null;
-
-            Log.i(TAG, "[onCreate] AnimationSec [" + AnimationSec + "], AnimationType [" + AnimationType + "]");
-            setAutoPictureAnimation(AnimationType);
-            startAutoPictureTimeThread();
-
-//            SetInfoFromMainUI(AnimationSec, AnimationType);
-//            timerAutoPicture.start();
-
-            setContentView(mFlipper);
-            mFlipper.setOnTouchListener((OnTouchListener) this);
-        }
-        else {
-            Log.d(TAG, "[Finish!! (There is no Picture) - AutoPictureApp] --------------------------------------------");
-            PictureMorethanZero = false;
-            setAutoPictureAnimation(AnimationType);
-            startAutoPictureTimeThread();
-//            SetInfoFromMainUI(1, 1);
-//            timerAutoPicture.start();
-
-            setContentView(mFlipper);
-        }
-    }
-
-
-    /**
-     * 실제 Permission에 대한 체크가 필요
-     * @param requestCode
-     * @param permissions
-     * @param grantResults
-     */
-    @Override
-    public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
-        Log.d(TAG, "[onRequestPermissionsResult] requestCode: " + requestCode);
-        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
-        switch (requestCode) {
-            case REQUEST_EXTERNAL_STORAGE: {
-                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
-                    Log.d(TAG, "[onRequestPermissionsResult] PERMISSION_GRANTED");
-                } else {
-                    Log.d(TAG, "[onRequestPermissionsResult] PERMISSION_NOT_GRANTED");
-                }
-                return;
-            }
-        }
-    }
-
-
-    @Override
-    protected void onDestroy() {
-        super.onDestroy();
-        Log.d(TAG, "[onDestroy] ========== AutoPictureApp ==========");
-        stopAutoPictureTimeThread();
-//        timerAutoPicture.cancel();
-
-        if (DBMGR != null) DBMGR.closeDB();
-
-        // 1. 등록된 ActionFilter 일괄 해제
-        unregisterReceiver(mWpadNotifyBR);
-
-        ctrlLCDOnOff(false);
-
-        if (mPhotoBitmapNext != null) {
-            mPhotoBitmapNext.recycle();
-            mPhotoBitmapNext = null;
-        }
-        if (mPhotoBitmapCenter != null) {
-            mPhotoBitmapCenter.recycle();
-            mPhotoBitmapCenter = null;
-        }
-    }
-
-    @Override
-    protected void onResume() {
-        super.onResume();
-        Log.d(TAG, "[onResume] ========== AutoPictureApp ==========");
-//        ctrlLCDOnOff(true);
-    }
-
-    /**
-     * onPause<br>
-     */
-    @Override
-    protected void onPause() {
-        super.onPause();
-        Log.d(TAG, "[onPause] ========== AutoPictureApp ==========");
-//        stopAutoPictureTimeThread();
-//        timerAutoPicture.cancel();
-        overridePendingTransition(0, 0);        // 종료시 에니메이션 효과 삭제
-        ctrlLCDOnOff(false);
-    }
-
-    @Override
-    public void finish() {
-        super.finish();
-        Log.d(TAG, "[finish] ========== AutoPictureApp ==========");
-        stopAutoPictureTimeThread();
-//        timerAutoPicture.cancel();
-        ctrlLCDOnOff(false);
-        Intent intent = new Intent();
-        intent.putExtra("Finish_Kind", "HomeButton");
-        setResult(RESULT_OK, intent);
-
-        sendFinishBR();
-    }
-
-    @Override
-    public boolean onTouch(View v, MotionEvent event) {
-
-        if (v != mFlipper)
-            return false;
-
-        if (event.getAction() == MotionEvent.ACTION_DOWN) {
-
-        } else if (event.getAction() == MotionEvent.ACTION_UP) {
-            ctrlLCDOnOff(true);
-            finish();
-        }
-        return true;
-    }
-
-    // =================================================================================================
-    // [[ BroadcastReceiver ]] region
-    // =================================================================================================
-    protected void onBrReceive(Intent intent) {
-    }
-
-    /**
-     * BrReceive
-     *
-     * @param intent - onReceive 시 수신받은 intent
-     */
-    private void BrReceive(Intent intent) {
-        try {
-            onBrReceive(intent);
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-        } catch (Exception e) {
-            Log.e(TAG, "[ExceptionError] - onBrReceive : " + e);
-        }
-    }
-
-    private void sendFinishBR() {
-        try {
-            // 상태가 변경되었다면 상태 변경 BR을 송신한다.
-            Intent notiIntent = new Intent();
-            notiIntent.setAction(define.NOTIFY_ACNAME);
-            notiIntent.putExtra(define.NOTIBR_KIND, define.NOTIFY_AUTOPICTURE_FINISH);
-            getApplicationContext().sendBroadcast(notiIntent);
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-        } catch (Exception e) {
-            Log.e(TAG, "[Exception] sendFinishBR()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
-        }
-    }
-
-    private void setAutoPictureAnimation(int nAniType) {
-        try {
-            Log.d(TAG, "[setAutoPictureAnimation] nAniType [" + nAniType + "]");
-            switch (AnimationType) {
-                case 1:  //그 자리에서 서서히 사라지기
-                default:
-                    mFlipper.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));
-                    mFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));
-                    break;
-
-                case 2:  //왼쪽에서 오른쪽으로
-                    mFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.anim_in));
-                    mFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.anim_out));
-                    break;
-
-                case 3:  //아래에서 위로
-                    mFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.anim_in_downup));
-                    mFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.anim_out_downup));
-                    break;
-
-                case 4:  //위에서 아래로
-                    mFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.anim_in_updown));
-                    mFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.anim_out_updown));
-                    break;
-            }
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-        } catch (Exception e) {
-            Log.e(TAG, "[Exception] setAutoPictureAnimation(int nAniType)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
-        }
-    }
-
-    boolean bAutoPictureTimerRun = false;
-    class TimerAutoPictureChanger extends Thread {
-        int nSec = 5;
-
-        public TimerAutoPictureChanger(int nChangeSec) {
-            nSec = nChangeSec;
-        }
-
-        @Override
-        public void run() {
-            super.run();
-            try {
-                int sec = nSec;
-                Log.d(TAG, "[TimerAutoPictureChanger.run()] bAutoPictureTimerRun [" + bAutoPictureTimerRun + "], PictureMorethanZero [" + PictureMorethanZero + "], sec [" + sec + "]");
-                while (bAutoPictureTimerRun && PictureMorethanZero) {
-                    if (sec > 0) {
-//                        Log.d(TAG, "[TimerAutoPictureChanger.run()] sec [" + sec +"]");
-                        sec--;
-                    }
-                    else {
-                        if (isTestShow == false) {
-                            mCal = Calendar.getInstance();
-                            if (DBMGR.DecideAutoPictureAppEndOrNot(mCal) == true) {
-                                Log.d(TAG, "[TimerAutoPictureChanger.run()] DecideAutoPictureAppEndOrNot(mCal) == true");
-                                Log.d(TAG, "[TimerAutoPictureChanger.run()] LCD will be Off!!!");
-                                bAutoPictureTimerRun = false;
-                                ctrlLCDOnOff(false);
-                            }
-                        }
-
-                        Log.d(TAG, "[TimerAutoPictureChanger.run()] Show the next picture!!");
-                        sec = nSec;
-                        sendHandlerMsg(HANDLERMSG.SHOW_NEXT_PICTURE, 0, 0);
-                    }
-//                    Log.d(TAG, "[TimerAutoPictureChanger.run()] 1 bAutoPictureTimerRun [" + bAutoPictureTimerRun + "], PictureMorethanZero [" + PictureMorethanZero + "], sec [" + sec + "]");
-                    Thread.sleep(1000);
-                }
-//                Log.d(TAG, "[TimerAutoPictureChanger.run()] 2 bAutoPictureTimerRun [" + bAutoPictureTimerRun + "], PictureMorethanZero [" + PictureMorethanZero + "], sec [" + sec + "]");
-                Log.d(TAG, "[TimerAutoPictureChanger.run()] TimerAutoPictureChanger is end!!!");
-            } catch (RuntimeException re) {
-                LogUtil.errorLogInfo("", TAG, re);
-            } catch (Exception e) {
-                Log.e(TAG, "[Exception] TimerAutoPictureChanger.run()");
-                //e.printStackTrace();
-                LogUtil.errorLogInfo("", TAG, e);
-            }
-            finish();
-        }
-    }
-
-    private void startAutoPictureTimeThread() {
-        try {
-            bAutoPictureTimerRun = true;
-            mTimerAutoPictureChanger = new TimerAutoPictureChanger(AnimationSec);
-            mTimerAutoPictureChanger.start();
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-        } catch (Exception e) {
-            Log.e(TAG, "[Exception] startAutoPictureTimeThread()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
-        }
-    }
-
-    private void stopAutoPictureTimeThread() {
-        try {
-            Log.w(TAG, "[stopAutoPictureTimeThread] ===== START =====");
-            if (mTimerAutoPictureChanger != null) {
-                Log.w(TAG, "[stopAutoPictureTimeThread] Stop mTimerAutoPictureChanger!!");
-                bAutoPictureTimerRun = false;
-                mTimerAutoPictureChanger = null;
-            }
-            else {
-                Log.w(TAG, "[stopAutoPictureTimeThread] mTimerAutoPictureChanger is null!!");
-            }
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-        } catch (Exception e) {
-            Log.e(TAG, "[Exception] stopAutoPictureTimeThread()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
-        }
-    }
-
-
-
-
-    private void SetInfoFromMainUI(int Sec, int AnimationType) {
-        Log.d(TAG, "[SetInfoFromMainUI] Sec [" + Sec + "], AnimationType [" + AnimationType + "]");
-        timerAutoPicture = new CounterDown((long) (Sec * 1000), 1000); // 1초 = 1000, 1분 = 60000
-
-        switch (AnimationType) {
-            case 1:  //그 자리에서 서서히 사라지기
-                mFlipper.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));
-                mFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));
-                break;
-
-            case 2:  //왼쪽에서 오른쪽으로
-                mFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.anim_in));
-                mFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.anim_out));
-                break;
-
-            case 3:  //아래에서 위로
-                mFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.anim_in_downup));
-                mFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.anim_out_downup));
-                break;
-
-            case 4:  //위에서 아래로
-                mFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.anim_in_updown));
-                mFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.anim_out_updown));
-                break;
-
-            default:
-                mFlipper.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));
-                mFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));
-                break;
-        }
-    }
-
-    public class CounterDown extends CountDownTimer {
-
-        public CounterDown(long millisInFuture, long countDownInterval) {
-            super(millisInFuture, countDownInterval);
-            Log.d(TAG, "[timerAutoPicture] millisInFuture [" + millisInFuture + "], countDownInterval [" + countDownInterval + "]");
-        }
-
-        @Override
-        public void onFinish() {
-            if (PictureMorethanZero == false) {
-                finish();
-            }
-            else {
-                Log.d(TAG, "[timerAutoPicture.onFinish()] The timer expired!! Show the next picture!!");
-                mCal = Calendar.getInstance();
-
-                if (isTestShow == false) {
-                    if (DBMGR.DecideAutoPictureAppEndOrNot(mCal) == true) {
-                        Log.d(TAG, "[timerAutoPicture.onFinish()] DecideAutoPictureAppEndOrNot(mCal) == true");
-                        Log.d(TAG, "[timerAutoPicture.onFinish()] LCD will be Off!!!");
-                        ctrlLCDOnOff(false);
-                    }
-                }
-                ShowNextImage();
-                timerAutoPicture.start();
-            }
-        }
-
-        @Override
-        public void onTick(long millisUntilFinished) {
-            Log.d(TAG, "[timerAutoPicture.onTick(...)] Remain time(sec) [" + (millisUntilFinished/1000) + "]");
-        }
-    }
-
-    /**
-     * @description USB에 있는 이미지 파일의 목록을 생성하는 함수<br>
-     * 재귀함수로써 모든 폴더를 탐색한다.<br>
-     * USB와 Storage/Bestin/DownloadPicture 내에 있는 파일의 확장자를 검사<br>
-     * 파일 포맷 : jpg, JPG, jpeg, JPEG, png, PNG, bmp, BMP 지원
-     */
-    public void printfiles(File file) {
-        File[] list = file.listFiles();
-//        Log.d(TAG, "[printfiles] list.length: " + list.length);
-
-        if (list == null) {
-            Log.d(TAG, "No File in " + file.getPath());
-            return;
-        }
-        for (int i = 0; i < list.length; i++) {
-            File temp_file = new File(file.getAbsolutePath(), list[i].getName());
-            if (!temp_file.isDirectory()) temp_file.mkdir();
-            if (temp_file.isDirectory() && temp_file.listFiles() != null) {
-                Log.d(TAG, "PATH folder" + temp_file.getAbsolutePath());
-                //I am inside The Directory... Searching:) So i am calling printfiles(File file) function to print the files in the directory
-                printfiles(temp_file);
-            } else {
-                String filename = temp_file.getName();
-                boolean isAccept = false;
-
-                if (filename.toLowerCase().endsWith(".jpg") == true) {
-                    isAccept = true;
-                } else if (filename.toLowerCase().endsWith(".jpeg") == true) {
-                    isAccept = true;
-                } else if (filename.toLowerCase().endsWith(".png") == true) {
-                    isAccept = true;
-                } else if (filename.toLowerCase().endsWith(".bmp") == true) {
-                    isAccept = true;
-                } else {
-                    isAccept = false;
-                }
-
-                if (isAccept == true) {
-                    filesList.add(temp_file.getAbsolutePath());
-                    DebugLogOutput("PATH file" + temp_file.getAbsolutePath());
-                }
-            }
-        }
-    }
-
-    /**
-     * @description 다음 이미지 보여주기 <br>
-     */
-    public void ShowNextImage() {
-        if (mFlipper.getCurrentView() == View0) {
-            LoadNextImage(View1);
-            mFlipper.showNext();
-            mFlipper.removeView(View0);
-        } else if (mFlipper.getCurrentView() == View1) {
-            LoadNextImage(View0);
-            mFlipper.showNext();
-            mFlipper.removeView(View1);
-        }
-    }
-
-    /**
-     * @description Next 이미지 로드<br>
-     */
-    public void LoadNextImage(View v) {
-        mIntCenter++;
-        if (mIntCenter == filesList.size()) {
-            mIntCenter = 0;
-        }
-
-        Log.w(TAG, "[LoadNextImage] filesList.get(mIntCenter) = " + filesList.get(mIntCenter));
-        File TempFileNext = new File(filesList.get(mIntCenter));
-        mPhotoBitmapNext = decodeFile(TempFileNext, displayWidth, displayHeight);
-        if (mPhotoBitmapNext == null) {
-            Log.w(TAG, "[LoadNextImage] mPhotoBitmapNext is null");
-            ctrlLCDOnOff(true);
-            finish();
-        }
-        ((ImageView) v).setImageBitmap(mPhotoBitmapNext);
-        ((ImageView) v).setScaleType(ImageView.ScaleType.CENTER_INSIDE);
-        mFlipper.addView(v);
-        mPhotoBitmapNext = null;
-    }
-
-    /**
-     * @description 사진 미리보기 화면에 표시될 이미지 크기 기반으로 이미지 스케일 및 샘플 사이즈를 조정
-     */
-    public static Bitmap decodeFile(File f, int reqWidth, int reqHeight) {
-        FileInputStream is = null;
-        FileInputStream is_ = null;
-        try {
-            // First decode with inJustDecodeBounds=true to check dimensions
-            final BitmapFactory.Options options = new BitmapFactory.Options();
-            options.inJustDecodeBounds = true;
-            is_ = new FileInputStream(f);
-            BitmapFactory.decodeStream(is_, null, options);
-
-            if (options.outMimeType == null) {
-                Log.e("[AutoPicture]", "[decodeStream] options.outMimeType is null");
-                int pos = f.getAbsoluteFile().toString().lastIndexOf(".");
-                String ext = f.getAbsoluteFile().toString().substring(pos + 1);
-                Log.d("[AutoPicture]", "[decodeStream] ext [" + ext + "]");
-                if (!ext.equalsIgnoreCase("bmp")) return null; // bmp파일은 options.outMimeType == null이므로
-            } else {
-                Log.d("[AutoPicture]", "[decodeStream] options.outMimeType [" + options.outMimeType + "]");
-            }
-
-            // Calculate inSampleSize
-            options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);
-//            Log.d("[AutoPicture]", "[decodeStream] options.inSampleSize [" + options.inSampleSize + "]");
-
-            // Decode bitmap with inSampleSize set
-            options.inJustDecodeBounds = false;
-//            Log.d("[AutoPicture]", "[decodeStream] options.inJustDecodeBounds [" + options.inJustDecodeBounds + "]");
-
-            is = new FileInputStream(f);
-            Bitmap bitmap = BitmapFactory.decodeStream(is , null, options);
-            int degree = GetExifOrientation(f.getAbsolutePath());
-            Bitmap temp_bitmap = GetRotatedBitmap(bitmap, degree);
-            return temp_bitmap;
-        } catch (FileNotFoundException e) {
-            // TODO Auto-generated catch block
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
-            return null;
-        }
-        finally {
-            if(is !=null) {
-                try {
-                    is.close();
-                } catch (IOException e) {
-                    LogUtil.errorLogInfo("", TAG, e);
-                }
-            }
-            is = null;
-
-            if(is_!=null) {
-                try {
-                    is_.close();
-                } catch (IOException e) {
-                    LogUtil.errorLogInfo("", TAG, e);
-                }
-            }
-            is_ = null;
-        }
-    }
-
-    public synchronized static int GetExifOrientation(String filepath) {
-        int degree = 0;
-        ExifInterface exif = null;
-
-        try {
-            exif = new ExifInterface(filepath);
-        } catch (IOException e) {
-            Log.e(TAG, "[Exception] GetExifOrientation()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
-        }
-
-        if (exif != null) {
-            int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, -1);
-
-            if (orientation != -1) {
-                // We only recognize a subset of orientation tag values.
-                switch (orientation) {
-                    case ExifInterface.ORIENTATION_ROTATE_90:
-                        degree = 90;
-                        break;
-                    case ExifInterface.ORIENTATION_ROTATE_180:
-                        degree = 180;
-                        break;
-
-                    case ExifInterface.ORIENTATION_ROTATE_270:
-                        degree = 270;
-                        break;
-                }
-
-            }
-        }
-        Log.d(TAG, "[GetExifOrientation] degree [" + degree + "]");
-        return degree;
-    }
-
-    public synchronized static Bitmap GetRotatedBitmap(Bitmap bitmap, int degrees) {
-        if (degrees != 0 && bitmap != null) {
-            Matrix m = new Matrix();
-            m.setRotate(degrees, (float) bitmap.getWidth() / 2, (float) bitmap.getHeight() / 2);
-            try {
-                Bitmap b2 = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), m, true);
-                if (bitmap != b2) {
-                    bitmap.recycle();
-                    bitmap = b2;
-                }
-                else if(b2!=null)
-                {
-                    b2.recycle();;
-                    b2 = null;
-                }
-            } catch (OutOfMemoryError ex) {
-                Log.e(TAG, "[Exception] GetRotatedBitmap()");
-            }
-        }
-        return bitmap;
-    }
-
-    /**
-     * @description 이미지 Sampling size 확인
-     */
-    public static int calculateInSampleSize(BitmapFactory.Options options, int reqWidth, int reqHeight) {
-        // Raw height and width of image
-        final int height = options.outHeight;
-        final int width = options.outWidth;
-        int inSampleSize = 1;
-
-        if ((reqWidth > 1024) || (reqHeight > 600)) {
-            inSampleSize = 2; // 1280x800 예외처리 추가
-        }
-
-        long tempFreeMemory = Runtime.getRuntime().freeMemory();
-
-        Log.d("AutoPictureApp", "freeMemory : " + tempFreeMemory);
-        if (tempFreeMemory < 100000) {
-            Log.w("AutoPictureApp", "freeMemory is low than 100000");
-            Log.w("AutoPictureApp", "inSampleSize will be * 2");
-            inSampleSize *= 2;
-        }
-        if (tempFreeMemory < 50000) {
-            Log.w("AutoPictureApp", "freeMemory is low than 50000");
-            Log.w("AutoPictureApp", "inSampleSize will be * 2");
-            inSampleSize *= 2;
-        }
-
-        if (height > reqHeight || width > reqWidth) {
-            final int halfHeight = height / 2;
-            final int halfWidth = width / 2;
-
-            // Calculate the largest inSampleSize value that is a power of 2 and
-            // keeps both
-            // height and width larger than the requested height and width.
-            while ((halfHeight / inSampleSize) >= reqHeight && (halfWidth / inSampleSize) >= reqWidth) {
-                inSampleSize *= 2;
-            }
-        }
-
-        Log.i("AutoPictureApp", "inSampleSize : " + inSampleSize);
-        return inSampleSize;
-    }
-
-    public boolean ctrlLCDOnOff(boolean bOn) {
-        try {
-            // 절전모드 사용시 호출수신등의 이벤트로 LCD 화면을 ON한다.
-            // 모든 이벤트가 끝나고, 메인화면으로 전환시 절전모드를 다시 동작시킨다.
-            Log.d(TAG, "[ctrlLCDOnOff] bOn [" + bOn + "]");
-            if (bOn) {
-                PowerManager mPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
-                Log.d(TAG, "[ctrlLCDOnOff] Screen On: " + mPowerManager.isScreenOn());
-                mV40IF.WpdInterfaceOpen();
-                mV40IF.LcdWakeUp(); // 절전상태일 경우, jni LcdWakeUp 먼저 호출
-                mV40IF.WpdInterfaceClose();
-
-                sendHandlerMsg(HANDLERMSG.FLAG_KEEP_SCREEN_ON, 0, 0);
-            }
-            else {
-                sendHandlerMsg(HANDLERMSG.FLAG_KEEP_SCREEN_ON, 0, 0);
-            }
-            return true;
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-            return false;
-        } catch (Exception e) {
-            Log.e(TAG, "[Exception] ctrlLCDOnOff(bOn)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
-            return false;
-        }
-    }
-
-    // MainActivity Handler
-    public final class HANDLERMSG {
-        public final static int FLAG_KEEP_SCREEN_ON = 100;
-        public final static int SHOW_NEXT_PICTURE = 200;
-    }
-
-    public Handler MainHandler = new Handler(Looper.getMainLooper()) {
-        public void handleMessage(Message msg) {
-            Log.d(TAG, "[MainHandler] MainHandler : what [" + msg.what + "], arg1 [" + msg.arg1 + "], arg2 [" + msg.arg2 + "]");
-            switch (msg.what) {
-                case HANDLERMSG.FLAG_KEEP_SCREEN_ON:
-                    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
-                    break;
-
-                case HANDLERMSG.SHOW_NEXT_PICTURE:
-                    ShowNextImage();
-                    break;
-
-                default:
-                    Log.d(TAG, "MainHandler : " + msg.what);
-                    break;
-            }
-        }
-    };
-
-    public void sendHandlerMsg(int what, int arg1, int arg2) {
-        try {
-//            Log.i(TAG, "[sendHandlerMsg] what [" + what + "], arg1 [" + arg1 + "], arg2 [" + arg2 + "]");
-            Message HandleMsg = MainHandler.obtainMessage();
-            HandleMsg.what = what;
-            HandleMsg.arg1 = arg1;
-            HandleMsg.arg2 = arg2;
-            MainHandler.sendMessage(HandleMsg);
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-        } catch (Exception e) {
-            Log.e(TAG, "[Exception] sendHandlerMsg(msg)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
-        }
-    }
-
-    public void sendHandlerMsgDelayed(int what, int arg1, int arg2, long delay) {
-        try {
-//            Log.i(TAG, "[sendHandlerMsgDelayed] what [" + what + "], arg1 [" + arg1 + "], arg2 [" + arg2 + "], delay [" + delay + "]");
-            Message HandleMsg = MainHandler.obtainMessage();
-            HandleMsg.what = what;
-            HandleMsg.arg1 = arg1;
-            HandleMsg.arg2 = arg2;
-            MainHandler.sendMessageDelayed(HandleMsg, delay);
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-        } catch (Exception e) {
-            Log.e(TAG, "[Exception] sendHandlerMsgDelayed(msg)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
-        }
-    }
+package kr.co.icontrols.autopicture;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.List;
+
+import com.artncore.WallPadDataMgr.WallpadStatusData;
+import com.artncore.commons.define;
+
+import android.os.Bundle;
+import android.os.CountDownTimer;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+import android.os.PowerManager;
+import android.app.Activity;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.Color;
+import android.graphics.Point;
+import android.util.Log;
+import android.view.Display;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.View.OnTouchListener;
+import android.view.WindowManager;
+import android.view.animation.AnimationUtils;
+import android.widget.ImageView;
+import android.widget.ViewFlipper;
+
+import kr.co.icontrols.v40ioctl.V40IF;
+import kr.co.icontrols.wallpadsupport.Version;
+
+/**
+ * @description App 시작 방법<br>
+ * Intent intent = new Intent(Intent.ACTION_MAIN);<br>
+ * intent.setComponent(new ComponentName("kr.co.icontrols.autopicture",
+ * "kr.co.icontrols.autopicture.MainActivity"));<br>
+ * intent.putExtra("IMAGE_NEXTSHOW_TIME_UNIT_SEC", AUTOPIC_SETTING_VALUE_SEC);<br>
+ * intent.putExtra("IMAGE_NEXTSHOW_ANIMATION", AUTOPIC_SETTING_VALUE_TYPE);     <br>
+ * startActivity(intent);<br><br>
+ * $AUTOPIC_SETTING_VALUE_SEC 은 이미지 전환 기준 초수<br>
+ * $AUTOPIC_SETTING_VALUE_TYPE 은 이미지 전환 에니메이션 효과<br>
+ * &nbsp&nbsp$$1. 그 자리에서 서서히 사라지기<br>
+ * &nbsp&nbsp$$2. 왼쪽에서 오른쪽으로<br>
+ * &nbsp&nbsp$$3. 아래에서 위로 <br>
+ * &nbsp&nbsp$$4. 위에서 아래로<br><br>
+ * App 종료 방법<br>
+ * Intent intent = new Intent();<br>
+ * intent.setAction("kr.co.icontrols.autopicture.BR_APP_FINISH");<br>
+ * sendBroadcast(intent);<br>
+ */
+public class MainActivity extends Activity implements OnTouchListener {
+
+    private final String TAG = "AutoPictureApp";
+
+    private final boolean DEBUG_LOG_ON = true;
+
+    private void DebugLogOutput(String s) {
+        if (DEBUG_LOG_ON) Log.d(TAG, s);
+    }
+
+    //[DB]
+    WallpadStatusData DBMGR;
+
+    //[Time]
+    Calendar mCal;
+
+    // [Show Picture]
+    ViewFlipper mFlipper;
+
+    ImageView View0;
+    ImageView View1;
+
+    Bitmap mPhotoBitmapNext;
+    Bitmap mPhotoBitmapCenter;
+
+    int mIntCenter;
+    int mIndexOfFillpper = 0;
+
+    List<String> filesList = new ArrayList<String>();
+
+    CounterDown timerAutoPicture = null;
+    TimerAutoPictureChanger mTimerAutoPictureChanger = null;
+
+    int AnimationSec;
+    int AnimationType;
+    boolean isTestShow = false;
+
+    int displayWidth;
+    int displayHeight;
+
+    Boolean PictureMorethanZero = false;
+    private BroadcastReceiver mWpadNotifyBR = null;
+    private final String BR_APP_FINISH = "kr.co.icontrols.wallpad.BR_APP_FINISH";
+
+    V40IF mV40IF;
+
+    // PopupActivityRun
+    private static boolean PopupActivityRun = false;
+
+    public static boolean getPopupActivityRun() {
+        return PopupActivityRun;
+    }
+
+    public static void setPopupActivityRun(boolean run) {
+        PopupActivityRun = run;
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        PopupActivityRun = false;
+
+        Log.d(TAG, "[START - AutoPictureApp] --------------------------------------------");
+        if (Version.getPlatformType() == Version.PLATFORM_TYPE.A40i) mV40IF = new V40IF();
+        else Log.w(TAG, "[onCreate] Not Supported PLATFORM_TYPE [" + Version.getPlatformType() + "]");
+
+        Intent intent = getIntent();
+        if (intent != null) {
+            AnimationSec = intent.getIntExtra("IMAGE_NEXTSHOW_TIME_UNIT_SEC", -1);
+            if (AnimationSec < 0) {
+                AnimationSec = 5;
+            }
+            AnimationType = intent.getIntExtra("IMAGE_NEXTSHOW_ANIMATION", -1);
+            if (AnimationType < 0) {
+                AnimationType = 1;
+            }
+            isTestShow = intent.getBooleanExtra("TEST_SHOW", false);
+            Log.d(TAG, "isTestShow : " + isTestShow);
+            if (isTestShow == true) {
+                ctrlLCDOnOff(true);
+            }
+        }
+
+        ctrlLCDOnOff(true);
+
+        DBMGR = new WallpadStatusData(getApplicationContext());
+        mCal = Calendar.getInstance();
+
+        mWpadNotifyBR = new BroadcastReceiver() {
+            @Override
+            public void onReceive(Context context, Intent intent) {
+                Log.d(TAG, "Receive BR " + intent.getAction());
+                String ActionName = intent.getAction();
+                if (ActionName.equals(BR_APP_FINISH)) {
+                    Log.i(TAG, "AutoPicture finish - BR_APP_FINISH");
+                    finish();
+                } else BrReceive(intent);
+            }
+        };
+
+        IntentFilter filter = new IntentFilter(BR_APP_FINISH);
+        registerReceiver(mWpadNotifyBR, filter);
+
+        Display display = getWindowManager().getDefaultDisplay();
+        Point size = new Point();
+        display.getSize(size);
+
+        displayWidth = size.x;
+        displayHeight = size.y;
+
+        //사진 표시
+        mFlipper = new ViewFlipper(this);
+        mFlipper.setBackgroundColor(Color.BLACK);
+
+        View0 = new ImageView(this);
+        View1 = new ImageView(this);
+
+        File dirUsb = new File("/storage/usb0");
+        File dirInternal = new File(define.ALBUM_PICTURE_LOCATION);
+        if (!dirInternal.isDirectory()) dirInternal.mkdir();
+
+        try {
+            if (dirInternal.isDirectory()) {
+                Log.d(TAG, dirInternal + " is Directory!!");
+                printfiles(dirInternal);
+            }
+            printfiles(dirUsb);
+        } catch (Exception e) {
+            Log.e(TAG, e.toString());
+        }
+        if (filesList.size() != 0) {
+            PictureMorethanZero = true;
+            mIntCenter = 0;
+            File FileCenter = new File(filesList.get(mIntCenter));
+            mPhotoBitmapCenter = decodeFile(FileCenter, displayWidth, displayHeight);
+
+            if (mPhotoBitmapCenter == null) {
+                Log.w(TAG, "[onCreate] mPhotoBitmapCenter is null");
+                PictureMorethanZero = false;
+                setAutoPictureAnimation(AnimationType);
+                startAutoPictureTimeThread();
+//                SetInfoFromMainUI(1, 1);
+//                timerAutoPicture.start();
+
+                setContentView(mFlipper);
+            }
+
+            View0.setImageBitmap(mPhotoBitmapCenter);
+            View0.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
+            mFlipper.addView(View0);
+            mPhotoBitmapCenter = null;
+
+            Log.i(TAG, "[onCreate] AnimationSec [" + AnimationSec + "], AnimationType [" + AnimationType + "]");
+            setAutoPictureAnimation(AnimationType);
+            startAutoPictureTimeThread();
+
+//            SetInfoFromMainUI(AnimationSec, AnimationType);
+//            timerAutoPicture.start();
+
+            setContentView(mFlipper);
+            mFlipper.setOnTouchListener((OnTouchListener) this);
+        }
+        else {
+            Log.d(TAG, "[Finish!! (There is no Picture) - AutoPictureApp] --------------------------------------------");
+            PictureMorethanZero = false;
+            setAutoPictureAnimation(AnimationType);
+            startAutoPictureTimeThread();
+//            SetInfoFromMainUI(1, 1);
+//            timerAutoPicture.start();
+
+            setContentView(mFlipper);
+        }
+    }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        Log.d(TAG, "[onDestroy] ========== AutoPictureApp ==========");
+        stopAutoPictureTimeThread();
+//        timerAutoPicture.cancel();
+
+        if (DBMGR != null) DBMGR.closeDB();
+
+        // 1. 등록된 ActionFilter 일괄 해제
+        unregisterReceiver(mWpadNotifyBR);
+
+        ctrlLCDOnOff(false);
+
+        if (mPhotoBitmapNext != null) {
+            mPhotoBitmapNext.recycle();
+            mPhotoBitmapNext = null;
+        }
+        if (mPhotoBitmapCenter != null) {
+            mPhotoBitmapCenter.recycle();
+            mPhotoBitmapCenter = null;
+        }
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        Log.d(TAG, "[onResume] ========== AutoPictureApp ==========");
+//        ctrlLCDOnOff(true);
+    }
+
+    /**
+     * onPause<br>
+     */
+    @Override
+    protected void onPause() {
+        super.onPause();
+        Log.d(TAG, "[onPause] ========== AutoPictureApp ==========");
+//        stopAutoPictureTimeThread();
+//        timerAutoPicture.cancel();
+        overridePendingTransition(0, 0);        // 종료시 에니메이션 효과 삭제
+        ctrlLCDOnOff(false);
+    }
+
+    @Override
+    public void finish() {
+        super.finish();
+        Log.d(TAG, "[finish] ========== AutoPictureApp ==========");
+        stopAutoPictureTimeThread();
+//        timerAutoPicture.cancel();
+        ctrlLCDOnOff(false);
+        Intent intent = new Intent();
+        intent.putExtra("Finish_Kind", "HomeButton");
+        setResult(RESULT_OK, intent);
+
+        sendFinishBR();
+    }
+
+    @Override
+    public boolean onTouch(View v, MotionEvent event) {
+
+        if (v != mFlipper)
+            return false;
+
+        if (event.getAction() == MotionEvent.ACTION_DOWN) {
+
+        } else if (event.getAction() == MotionEvent.ACTION_UP) {
+            ctrlLCDOnOff(true);
+            finish();
+        }
+        return true;
+    }
+
+    // =================================================================================================
+    // [[ BroadcastReceiver ]] region
+    // =================================================================================================
+    protected void onBrReceive(Intent intent) {
+    }
+
+    /**
+     * BrReceive
+     *
+     * @param intent - onReceive 시 수신받은 intent
+     */
+    private void BrReceive(Intent intent) {
+        try {
+            onBrReceive(intent);
+        } catch (Exception e) {
+            Log.e(TAG, "[ExceptionError] - onBrReceive : " + e);
+        }
+    }
+
+    private void sendFinishBR() {
+        try {
+            // 상태가 변경되었다면 상태 변경 BR을 송신한다.
+            Intent notiIntent = new Intent();
+            notiIntent.setAction(define.NOTIFY_ACNAME);
+            notiIntent.putExtra(define.NOTIBR_KIND, define.NOTIFY_AUTOPICTURE_FINISH);
+            getApplicationContext().sendBroadcast(notiIntent);
+        } catch (Exception e) {
+            Log.e(TAG, "[Exception] sendFinishBR()");
+            e.printStackTrace();
+        }
+    }
+
+    private void setAutoPictureAnimation(int nAniType) {
+        try {
+            Log.d(TAG, "[setAutoPictureAnimation] nAniType [" + nAniType + "]");
+            switch (AnimationType) {
+                case 1:  //그 자리에서 서서히 사라지기
+                default:
+                    mFlipper.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));
+                    mFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));
+                    break;
+
+                case 2:  //왼쪽에서 오른쪽으로
+                    mFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.anim_in));
+                    mFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.anim_out));
+                    break;
+
+                case 3:  //아래에서 위로
+                    mFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.anim_in_downup));
+                    mFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.anim_out_downup));
+                    break;
+
+                case 4:  //위에서 아래로
+                    mFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.anim_in_updown));
+                    mFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.anim_out_updown));
+                    break;
+            }
+        } catch (Exception e) {
+            Log.e(TAG, "[Exception] setAutoPictureAnimation(int nAniType)");
+            e.printStackTrace();
+        }
+    }
+
+    boolean bAutoPictureTimerRun = false;
+    class TimerAutoPictureChanger extends Thread {
+        int nSec = 5;
+
+        public TimerAutoPictureChanger(int nChangeSec) {
+            nSec = nChangeSec;
+        }
+
+        @Override
+        public void run() {
+            super.run();
+            try {
+                int sec = nSec;
+                Log.d(TAG, "[TimerAutoPictureChanger.run()] bAutoPictureTimerRun [" + bAutoPictureTimerRun + "], PictureMorethanZero [" + PictureMorethanZero + "], sec [" + sec + "]");
+                while (bAutoPictureTimerRun && PictureMorethanZero) {
+                    if (sec > 0) {
+//                        Log.d(TAG, "[TimerAutoPictureChanger.run()] sec [" + sec +"]");
+                        sec--;
+                    }
+                    else {
+                        if (isTestShow == false) {
+                            mCal = Calendar.getInstance();
+                            if (DBMGR.DecideAutoPictureAppEndOrNot(mCal) == true) {
+                                Log.d(TAG, "[TimerAutoPictureChanger.run()] DecideAutoPictureAppEndOrNot(mCal) == true");
+                                Log.d(TAG, "[TimerAutoPictureChanger.run()] LCD will be Off!!!");
+                                bAutoPictureTimerRun = false;
+                                ctrlLCDOnOff(false);
+                            }
+                        }
+
+                        Log.d(TAG, "[TimerAutoPictureChanger.run()] Show the next picture!!");
+                        sec = nSec;
+                        sendHandlerMsg(HANDLERMSG.SHOW_NEXT_PICTURE, 0, 0);
+                    }
+//                    Log.d(TAG, "[TimerAutoPictureChanger.run()] 1 bAutoPictureTimerRun [" + bAutoPictureTimerRun + "], PictureMorethanZero [" + PictureMorethanZero + "], sec [" + sec + "]");
+                    Thread.sleep(1000);
+                }
+//                Log.d(TAG, "[TimerAutoPictureChanger.run()] 2 bAutoPictureTimerRun [" + bAutoPictureTimerRun + "], PictureMorethanZero [" + PictureMorethanZero + "], sec [" + sec + "]");
+                Log.d(TAG, "[TimerAutoPictureChanger.run()] TimerAutoPictureChanger is end!!!");
+            } catch (Exception e) {
+                Log.e(TAG, "[Exception] TimerAutoPictureChanger.run()");
+                e.printStackTrace();
+            }
+            finish();
+        }
+    }
+
+    private void startAutoPictureTimeThread() {
+        try {
+            bAutoPictureTimerRun = true;
+            mTimerAutoPictureChanger = new TimerAutoPictureChanger(AnimationSec);
+            mTimerAutoPictureChanger.start();
+        } catch (Exception e) {
+            Log.e(TAG, "[Exception] startAutoPictureTimeThread()");
+            e.printStackTrace();
+        }
+    }
+
+    private void stopAutoPictureTimeThread() {
+        try {
+            Log.w(TAG, "[stopAutoPictureTimeThread] ===== START =====");
+            if (mTimerAutoPictureChanger != null) {
+                Log.w(TAG, "[stopAutoPictureTimeThread] Stop mTimerAutoPictureChanger!!");
+                bAutoPictureTimerRun = false;
+                mTimerAutoPictureChanger = null;
+            }
+            else {
+                Log.w(TAG, "[stopAutoPictureTimeThread] mTimerAutoPictureChanger is null!!");
+            }
+        } catch (Exception e) {
+            Log.e(TAG, "[Exception] stopAutoPictureTimeThread()");
+            e.printStackTrace();
+        }
+    }
+
+
+
+
+    private void SetInfoFromMainUI(int Sec, int AnimationType) {
+        Log.d(TAG, "[SetInfoFromMainUI] Sec [" + Sec + "], AnimationType [" + AnimationType + "]");
+        timerAutoPicture = new CounterDown((long) (Sec * 1000), 1000); // 1초 = 1000, 1분 = 60000
+
+        switch (AnimationType) {
+            case 1:  //그 자리에서 서서히 사라지기
+                mFlipper.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));
+                mFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));
+                break;
+
+            case 2:  //왼쪽에서 오른쪽으로
+                mFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.anim_in));
+                mFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.anim_out));
+                break;
+
+            case 3:  //아래에서 위로
+                mFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.anim_in_downup));
+                mFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.anim_out_downup));
+                break;
+
+            case 4:  //위에서 아래로
+                mFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.anim_in_updown));
+                mFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.anim_out_updown));
+                break;
+
+            default:
+                mFlipper.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));
+                mFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));
+                break;
+        }
+    }
+
+    public class CounterDown extends CountDownTimer {
+
+        public CounterDown(long millisInFuture, long countDownInterval) {
+            super(millisInFuture, countDownInterval);
+            Log.d(TAG, "[timerAutoPicture] millisInFuture [" + millisInFuture + "], countDownInterval [" + countDownInterval + "]");
+        }
+
+        @Override
+        public void onFinish() {
+            if (PictureMorethanZero == false) {
+                finish();
+            }
+            else {
+                Log.d(TAG, "[timerAutoPicture.onFinish()] The timer expired!! Show the next picture!!");
+                mCal = Calendar.getInstance();
+
+                if (isTestShow == false) {
+                    if (DBMGR.DecideAutoPictureAppEndOrNot(mCal) == true) {
+                        Log.d(TAG, "[timerAutoPicture.onFinish()] DecideAutoPictureAppEndOrNot(mCal) == true");
+                        Log.d(TAG, "[timerAutoPicture.onFinish()] LCD will be Off!!!");
+                        ctrlLCDOnOff(false);
+                    }
+                }
+                ShowNextImage();
+                timerAutoPicture.start();
+            }
+        }
+
+        @Override
+        public void onTick(long millisUntilFinished) {
+            Log.d(TAG, "[timerAutoPicture.onTick(...)] Remain time(sec) [" + (millisUntilFinished/1000) + "]");
+        }
+    }
+
+    /**
+     * @description USB에 있는 이미지 파일의 목록을 생성하는 함수<br>
+     * 재귀함수로써 모든 폴더를 탐색한다.<br>
+     * USB와 Storage/Bestin/DownloadPicture 내에 있는 파일의 확장자를 검사<br>
+     * 파일 포맷 : jpg, JPG, jpeg, JPEG, png, PNG, bmp, BMP 지원
+     */
+    public void printfiles(File file) {
+        File[] list = file.listFiles();
+//        Log.d(TAG, "[printfiles] list.length: " + list.length);
+
+        if (list == null) {
+            Log.d(TAG, "No File in " + file.getPath());
+            return;
+        }
+        for (int i = 0; i < list.length; i++) {
+            File temp_file = new File(file.getAbsolutePath(), list[i].getName());
+            if (!temp_file.isDirectory()) temp_file.mkdir();
+            if (temp_file.isDirectory() && temp_file.listFiles() != null) {
+                Log.d(TAG, "PATH folder" + temp_file.getAbsolutePath());
+                //I am inside The Directory... Searching:) So i am calling printfiles(File file) function to print the files in the directory
+                printfiles(temp_file);
+            } else {
+                String filename = temp_file.getName();
+                boolean isAccept = false;
+
+                if (filename.toLowerCase().endsWith(".jpg") == true) {
+                    isAccept = true;
+                } else if (filename.toLowerCase().endsWith(".jpeg") == true) {
+                    isAccept = true;
+                } else if (filename.toLowerCase().endsWith(".png") == true) {
+                    isAccept = true;
+                } else if (filename.toLowerCase().endsWith(".bmp") == true) {
+                    isAccept = true;
+                } else {
+                    isAccept = false;
+                }
+
+                if (isAccept == true) {
+                    filesList.add(temp_file.getAbsolutePath());
+                    DebugLogOutput("PATH file" + temp_file.getAbsolutePath());
+                }
+            }
+        }
+    }
+
+    /**
+     * @description 다음 이미지 보여주기 <br>
+     */
+    public void ShowNextImage() {
+        if (mFlipper.getCurrentView() == View0) {
+            LoadNextImage(View1);
+            mFlipper.showNext();
+            mFlipper.removeView(View0);
+        } else if (mFlipper.getCurrentView() == View1) {
+            LoadNextImage(View0);
+            mFlipper.showNext();
+            mFlipper.removeView(View1);
+        }
+    }
+
+    /**
+     * @description Next 이미지 로드<br>
+     */
+    public void LoadNextImage(View v) {
+        mIntCenter++;
+        if (mIntCenter == filesList.size()) {
+            mIntCenter = 0;
+        }
+
+        Log.w(TAG, "[LoadNextImage] filesList.get(mIntCenter) = " + filesList.get(mIntCenter));
+        File TempFileNext = new File(filesList.get(mIntCenter));
+        mPhotoBitmapNext = decodeFile(TempFileNext, displayWidth, displayHeight);
+        if (mPhotoBitmapNext == null) {
+            Log.w(TAG, "[LoadNextImage] mPhotoBitmapNext is null");
+            ctrlLCDOnOff(true);
+            finish();
+        }
+        ((ImageView) v).setImageBitmap(mPhotoBitmapNext);
+        ((ImageView) v).setScaleType(ImageView.ScaleType.CENTER_INSIDE);
+        mFlipper.addView(v);
+        mPhotoBitmapNext = null;
+    }
+
+    /**
+     * @description 사진 미리보기 화면에 표시될 이미지 크기 기반으로 이미지 스케일 및 샘플 사이즈를 조정
+     */
+    public static Bitmap decodeFile(File f, int reqWidth, int reqHeight) {
+        try {
+            // First decode with inJustDecodeBounds=true to check dimensions
+            final BitmapFactory.Options options = new BitmapFactory.Options();
+            options.inJustDecodeBounds = true;
+            BitmapFactory.decodeStream(new FileInputStream(f), null, options);
+
+            if (options.outMimeType == null) {
+                Log.e("[AutoPicture]", "[decodeStream] options.outMimeType is null");
+                int pos = f.getAbsoluteFile().toString().lastIndexOf(".");
+                String ext = f.getAbsoluteFile().toString().substring(pos + 1);
+                Log.d("[AutoPicture]", "[decodeStream] ext [" + ext + "]");
+                if (!ext.equalsIgnoreCase("bmp")) return null; // bmp파일은 options.outMimeType == null이므로
+            } else {
+                Log.d("[AutoPicture]", "[decodeStream] options.outMimeType [" + options.outMimeType + "]");
+            }
+
+            // Calculate inSampleSize
+            options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);
+//            Log.d("[AutoPicture]", "[decodeStream] options.inSampleSize [" + options.inSampleSize + "]");
+
+            // Decode bitmap with inSampleSize set
+            options.inJustDecodeBounds = false;
+//            Log.d("[AutoPicture]", "[decodeStream] options.inJustDecodeBounds [" + options.inJustDecodeBounds + "]");
+
+            return BitmapFactory.decodeStream(new FileInputStream(f), null, options);
+        } catch (FileNotFoundException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    /**
+     * @description 이미지 Sampling size 확인
+     */
+    public static int calculateInSampleSize(BitmapFactory.Options options, int reqWidth, int reqHeight) {
+        // Raw height and width of image
+        final int height = options.outHeight;
+        final int width = options.outWidth;
+        int inSampleSize = 1;
+
+        if ((reqWidth > 1024) || (reqHeight > 600)) {
+            inSampleSize = 2; // 1280x800 예외처리 추가
+        }
+
+        long tempFreeMemory = Runtime.getRuntime().freeMemory();
+
+        Log.d("AutoPictureApp", "freeMemory : " + tempFreeMemory);
+        if (tempFreeMemory < 100000) {
+            Log.w("AutoPictureApp", "freeMemory is low than 100000");
+            Log.w("AutoPictureApp", "inSampleSize will be * 2");
+            inSampleSize *= 2;
+        }
+        if (tempFreeMemory < 50000) {
+            Log.w("AutoPictureApp", "freeMemory is low than 50000");
+            Log.w("AutoPictureApp", "inSampleSize will be * 2");
+            inSampleSize *= 2;
+        }
+
+        if (height > reqHeight || width > reqWidth) {
+            final int halfHeight = height / 2;
+            final int halfWidth = width / 2;
+
+            // Calculate the largest inSampleSize value that is a power of 2 and
+            // keeps both
+            // height and width larger than the requested height and width.
+            while ((halfHeight / inSampleSize) >= reqHeight && (halfWidth / inSampleSize) >= reqWidth) {
+                inSampleSize *= 2;
+            }
+        }
+
+        Log.i("AutoPictureApp", "inSampleSize : " + inSampleSize);
+        return inSampleSize;
+    }
+
+    public boolean ctrlLCDOnOff(boolean bOn) {
+        try {
+            // 절전모드 사용시 호출수신등의 이벤트로 LCD 화면을 ON한다.
+            // 모든 이벤트가 끝나고, 메인화면으로 전환시 절전모드를 다시 동작시킨다.
+            Log.d(TAG, "[ctrlLCDOnOff] bOn [" + bOn + "]");
+            if (bOn) {
+                PowerManager mPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
+                Log.d(TAG, "[ctrlLCDOnOff] Screen On: " + mPowerManager.isScreenOn());
+                mV40IF.WpdInterfaceOpen();
+                mV40IF.LcdWakeUp(); // 절전상태일 경우, jni LcdWakeUp 먼저 호출
+                mV40IF.WpdInterfaceClose();
+
+                sendHandlerMsg(HANDLERMSG.FLAG_KEEP_SCREEN_ON, 0, 0);
+            }
+            else {
+                sendHandlerMsg(HANDLERMSG.FLAG_KEEP_SCREEN_ON, 0, 0);
+            }
+            return true;
+        } catch (Exception e) {
+            Log.e(TAG, "[Exception] ctrlLCDOnOff(bOn)");
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    // MainActivity Handler
+    public final class HANDLERMSG {
+        public final static int FLAG_KEEP_SCREEN_ON = 100;
+        public final static int SHOW_NEXT_PICTURE = 200;
+    }
+
+    public Handler MainHandler = new Handler(Looper.getMainLooper()) {
+        public void handleMessage(Message msg) {
+            Log.d(TAG, "[MainHandler] MainHandler : what [" + msg.what + "], arg1 [" + msg.arg1 + "], arg2 [" + msg.arg2 + "]");
+            switch (msg.what) {
+                case HANDLERMSG.FLAG_KEEP_SCREEN_ON:
+                    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
+                    break;
+
+                case HANDLERMSG.SHOW_NEXT_PICTURE:
+                    ShowNextImage();
+                    break;
+
+                default:
+                    Log.d(TAG, "MainHandler : " + msg.what);
+                    break;
+            }
+        }
+    };
+
+    public void sendHandlerMsg(int what, int arg1, int arg2) {
+        try {
+//            Log.i(TAG, "[sendHandlerMsg] what [" + what + "], arg1 [" + arg1 + "], arg2 [" + arg2 + "]");
+            Message HandleMsg = MainHandler.obtainMessage();
+            HandleMsg.what = what;
+            HandleMsg.arg1 = arg1;
+            HandleMsg.arg2 = arg2;
+            MainHandler.sendMessage(HandleMsg);
+        } catch (Exception e) {
+            Log.e(TAG, "[Exception] sendHandlerMsg(msg)");
+            e.printStackTrace();
+        }
+    }
+
+    public void sendHandlerMsgDelayed(int what, int arg1, int arg2, long delay) {
+        try {
+//            Log.i(TAG, "[sendHandlerMsgDelayed] what [" + what + "], arg1 [" + arg1 + "], arg2 [" + arg2 + "], delay [" + delay + "]");
+            Message HandleMsg = MainHandler.obtainMessage();
+            HandleMsg.what = what;
+            HandleMsg.arg1 = arg1;
+            HandleMsg.arg2 = arg2;
+            MainHandler.sendMessageDelayed(HandleMsg, delay);
+        } catch (Exception e) {
+            Log.e(TAG, "[Exception] sendHandlerMsgDelayed(msg)");
+            e.printStackTrace();
+        }
+    }
 }

+ 41 - 141
AutoPicture/src/main/java/kr/co/icontrols/v40ioctl/V40IF.java

@@ -3,8 +3,6 @@ package kr.co.icontrols.v40ioctl;
 import android.os.Build;
 import android.util.Log;
 
-import com.util.LogUtil;
-
 public class V40IF {
 
     String TAG = "V40IF";
@@ -34,58 +32,30 @@ public class V40IF {
         try {
             if (Build.VERSION.SDK_INT > 23) mV40IOIF_NOUGAT = new V40IOInterface2();
             else mV40IOIF = new V40IOInterface();
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
         } catch (Exception e) {
             Log.e(TAG, "[Exception] V40IF()");
-            ////e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
     public int WpdInterfaceOpen() {
         try {
-            if (Build.VERSION.SDK_INT > 23) {
-                if(mV40IOIF_NOUGAT!=null)
-                    return mV40IOIF_NOUGAT.WpdInterfaceOpen();
-                else return -99;
-            }
-            else {
-                if(mV40IOIF!=null)
-                    return mV40IOIF.WpdInterfaceOpen();
-                else return -99;
-            }
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-            return -99;
+            if (Build.VERSION.SDK_INT > 23) return mV40IOIF_NOUGAT.WpdInterfaceOpen();
+            else return mV40IOIF.WpdInterfaceOpen();
         } catch (Exception e) {
             Log.e(TAG, "[Exception] WpdInterfaceOpen()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
             return -99;
         }
     }
 
     public int WpdInterfaceClose() {
         try {
-            if (Build.VERSION.SDK_INT > 23) {
-                if(mV40IOIF_NOUGAT!=null)
-                    return mV40IOIF_NOUGAT.WpdInterfaceClose();
-                else return -99;
-            }
-            else {
-                if(mV40IOIF!=null)
-                    return mV40IOIF.WpdInterfaceClose();
-                return -99;
-            }
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-            return -99;
+            if (Build.VERSION.SDK_INT > 23) return mV40IOIF_NOUGAT.WpdInterfaceClose();
+            else return mV40IOIF.WpdInterfaceClose();
         } catch (Exception e) {
             Log.e(TAG, "[Exception] WpdInterfaceClose()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
             return -99;
         }
     }
@@ -94,13 +64,9 @@ public class V40IF {
         try {
             if (Build.VERSION.SDK_INT > 23) return mV40IOIF_NOUGAT.WpdInterfaceControl(cmd, arg);
             else return mV40IOIF.WpdInterfaceControl(cmd, arg);
-        }catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-            return -99;
-        }  catch (Exception e) {
+        } catch (Exception e) {
             Log.e(TAG, "[Exception] WpdInterfaceControl(int cmd, int arg)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
             return -99;
         }
     }
@@ -109,12 +75,9 @@ public class V40IF {
         try {
             if (Build.VERSION.SDK_INT > 23) mV40IOIF_NOUGAT.SetMacAddr(mac);
             else mV40IOIF.SetMacAddr(mac);
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {
             Log.e(TAG, "[Exception] SetMacAddr(String mac)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -122,12 +85,9 @@ public class V40IF {
         try {
             if (Build.VERSION.SDK_INT > 23) mV40IOIF_NOUGAT.IpAddr(ip);
             else mV40IOIF.IpAddr(ip);
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {
             Log.e(TAG, "[Exception] IpAddr(String ip)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -135,12 +95,9 @@ public class V40IF {
         try {
             if (Build.VERSION.SDK_INT > 23) mV40IOIF_NOUGAT.GatewayIp(gw);
             else mV40IOIF.GatewayIp(gw);
-        }catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-        }  catch (Exception e) {
+        } catch (Exception e) {
             Log.e(TAG, "[Exception] GatewayIp(String gw)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -148,12 +105,9 @@ public class V40IF {
         try {
             if (Build.VERSION.SDK_INT > 23) mV40IOIF_NOUGAT.NetMask(mask);
             else mV40IOIF.NetMask(mask);
-        }catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-        }  catch (Exception e) {
+        } catch (Exception e) {
             Log.e(TAG, "[Exception] NetMask(String mask)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -161,12 +115,9 @@ public class V40IF {
         try {
             if (Build.VERSION.SDK_INT > 23) mV40IOIF_NOUGAT.NetAll(ip, mask, gw, mac);
             else mV40IOIF.NetAll(ip, mask, gw, mac);
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {
             Log.e(TAG, "[Exception] NetAll(String ip, String mask, String gw, String mac)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -174,12 +125,9 @@ public class V40IF {
         try {
             if (Build.VERSION.SDK_INT > 23) mV40IOIF_NOUGAT.LiveUpdate();
             else mV40IOIF.LiveUpdate();
-        }catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {
             Log.e(TAG, "[Exception] LiveUpdate()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -187,12 +135,9 @@ public class V40IF {
         try {
             if (Build.VERSION.SDK_INT > 23) mV40IOIF_NOUGAT.UsbUpdate();
             else mV40IOIF.UsbUpdate();
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {
             Log.e(TAG, "[Exception] UsbUpdate()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -200,13 +145,9 @@ public class V40IF {
         try {
             if (Build.VERSION.SDK_INT > 23) return mV40IOIF_NOUGAT.LcdWakeUp();
             else return mV40IOIF.LcdWakeUp();
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-            return -99;
         } catch (Exception e) {
             Log.e(TAG, "[Exception] LcdWakeUp()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
             return -99;
         }
     }
@@ -215,12 +156,9 @@ public class V40IF {
         try {
             if (Build.VERSION.SDK_INT > 23) mV40IOIF_NOUGAT.Reboot(sec);
             else mV40IOIF.Reboot(sec);
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {
             Log.e(TAG, "[Exception] Reboot(int sec)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -228,12 +166,9 @@ public class V40IF {
         try {
             if (Build.VERSION.SDK_INT > 23) mV40IOIF_NOUGAT.NetDns1(dns);
             else mV40IOIF.NetDns1(dns);
-        }catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-        }  catch (Exception e) {
+        } catch (Exception e) {
             Log.e(TAG, "[Exception] NetDns1(String dns)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -241,12 +176,9 @@ public class V40IF {
         try {
             if (Build.VERSION.SDK_INT > 23) mV40IOIF_NOUGAT.NetDns2(dns);
             else mV40IOIF.NetDns2(dns);
-        }catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-        }  catch (Exception e) {
+        } catch (Exception e) {
             Log.e(TAG, "[Exception] NetDns2(String dns)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -254,13 +186,9 @@ public class V40IF {
         try {
             if (Build.VERSION.SDK_INT > 23) return mV40IOIF_NOUGAT.sensorread();
             else return mV40IOIF.sensorread();
-        }catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-            return -99;
-        }  catch (Exception e) {
+        } catch (Exception e) {
             Log.e(TAG, "[Exception] sensorread()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
             return -99;
         }
     }
@@ -269,13 +197,9 @@ public class V40IF {
         try {
             if (Build.VERSION.SDK_INT > 23) return mV40IOIF_NOUGAT.LcdWakeUp();
             else return mV40IOIF.LcdWakeUp();
-        }catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-            return -99;
-        }  catch (Exception e) {
+        } catch (Exception e) {
             Log.e(TAG, "[Exception] setLcdWakeUp()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
             return -99;
         }
     }
@@ -285,12 +209,9 @@ public class V40IF {
             Log.i(TAG, "[setDns] DNS1 : " + dns1 + " / DNS2 : " + dns2);
             NetDns1(dns1);
             NetDns2(dns2);
-        }catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-        }  catch (Exception e) {
+        } catch (Exception e) {
             Log.e(TAG, "[Exception] setDns(String dns1, String dns2)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -298,12 +219,9 @@ public class V40IF {
         try {
             Log.i(TAG, "[setV40Reboot] V40 Device will reboot : " +sec + " second !!!");
             Reboot(sec);
-        }catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-        }  catch (Exception e) {
+        } catch (Exception e) {
             Log.e(TAG, "[Exception] setV40Reboot(int sec)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -311,12 +229,9 @@ public class V40IF {
         try {
             Log.i(TAG, "[setMACAddress] strMAC [" + strMAC+ "]");
             SetMacAddr(strMAC);
-        }catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-        }  catch (Exception e) {
+        } catch (Exception e) {
             Log.e(TAG, "[Exception] setMACAddress(String strMAC)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -324,12 +239,9 @@ public class V40IF {
         try {
             Log.i(TAG, "[setIPAddress] strIP [" + strIP + "]");
             IpAddr(strIP);
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {
             Log.e(TAG, "[Exception] setIPAddress(String strIP)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -337,12 +249,9 @@ public class V40IF {
         try {
             Log.i(TAG, "[setNetmaskAddress] strNetmask [" + strNetmask + "]");
             NetMask(strNetmask);
-        }catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-        }  catch (Exception e) {
+        } catch (Exception e) {
             Log.e(TAG, "[Exception] setNetmaskAddress(String strNetmask)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -350,12 +259,9 @@ public class V40IF {
         try {
             Log.i(TAG, "[setGatewayAddress] strGateway [" + strGateway+ "]");
             GatewayIp(strGateway);
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {
             Log.e(TAG, "[Exception] setGatewayAddress(String strGateway)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -364,12 +270,9 @@ public class V40IF {
             Log.i(TAG, "[setNetworkInterface] strIP [" + strIP+ "], strNetmask [" + strNetmask+ "], strGateway [" + strGateway+ "], strMAC [" + strMAC+ "]");
 
             NetAll(strIP, strNetmask, strGateway, strMAC);
-        }catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-        }  catch (Exception e) {
+        } catch (Exception e) {
             Log.e(TAG, "[Exception] setNetworkInterface(String strIP, String strNetmask, String strGateway, String strDNS, String strMAC)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -382,12 +285,9 @@ public class V40IF {
             GatewayIp(strGateway);
             // DNS 설정 JNI method는 아직 없음(2018.02.26)
             SetMacAddr(strMAC);
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {
             Log.e(TAG, "[Exception] setNetworkInterface(String strIP, String strNetmask, String strGateway, String strDNS, String strMAC)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 

+ 28 - 28
AutoPicture/src/main/java/kr/co/icontrols/v40ioctl/V40IOInterface.java

@@ -1,29 +1,29 @@
-package kr.co.icontrols.v40ioctl;
-
-public class V40IOInterface {
-
-    String TAG = "V40IOInterface";
-
-    static {
-        System.loadLibrary("wpd_v40interface-jni");
-    }
-
-    public native int WpdInterfaceOpen();
-
-    public native int WpdInterfaceClose();
-
-    public native int WpdInterfaceControl(int cmd, int arg);
-
-    public native void SetMacAddr(String mac);
-    public native void IpAddr(String ip);
-    public native void GatewayIp(String gw);
-    public native void NetMask(String mask);
-    public native void NetAll(String ip, String mask, String gw, String mac);
-    public native void LiveUpdate();
-    public native void UsbUpdate();
-    public native int LcdWakeUp();
-    public native void Reboot(int sec);
-    public native void NetDns1(String dns);
-    public native void NetDns2(String dns);
-    public native int sensorread();
+package kr.co.icontrols.v40ioctl;
+
+public class V40IOInterface {
+
+    String TAG = "V40IOInterface";
+
+    static {
+        System.loadLibrary("wpd_v40interface-jni");
+    }
+
+    public native int WpdInterfaceOpen();
+
+    public native int WpdInterfaceClose();
+
+    public native int WpdInterfaceControl(int cmd, int arg);
+
+    public native void SetMacAddr(String mac);
+    public native void IpAddr(String ip);
+    public native void GatewayIp(String gw);
+    public native void NetMask(String mask);
+    public native void NetAll(String ip, String mask, String gw, String mac);
+    public native void LiveUpdate();
+    public native void UsbUpdate();
+    public native int LcdWakeUp();
+    public native void Reboot(int sec);
+    public native void NetDns1(String dns);
+    public native void NetDns2(String dns);
+    public native int sensorread();
 }

+ 11 - 38
AutoPicture/src/main/java/kr/co/icontrols/v40ioctl/V40IOInterface2.java

@@ -2,8 +2,6 @@ package kr.co.icontrols.v40ioctl;
 
 import android.util.Log;
 
-import com.util.LogUtil;
-
 public class V40IOInterface2 {
 
     private static final String TAG = "V40IOInterface2";
@@ -55,14 +53,10 @@ public class V40IOInterface2 {
             SetMacAddr(strMAC);
 
         }
-		catch (RuntimeException re) {
-			Log.e(TAG, re.toString());
-		}
-		catch (Exception e)
+        catch (Exception e)
 		{
             Log.e(TAG, "[Exception] setMACAddress(String strMAC)");
-            //e.printStackTrace();            
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -72,14 +66,10 @@ public class V40IOInterface2 {
 			Log.i(TAG, "[setIPAddress] strIP [" + strIP + "]");
 			IpAddr(strIP);
 		}
-		catch (RuntimeException re) {
-			Log.e(TAG, re.toString());
-		}
-		catch (Exception e)
+        catch (Exception e)
 		{
             Log.e(TAG, "[Exception] setIPAddress(String strIP)");
-            //e.printStackTrace();            
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -89,14 +79,10 @@ public class V40IOInterface2 {
 			Log.i(TAG, "[setNetmaskAddress] strNetmask [" + strNetmask + "]");
 			NetMask(strNetmask);
 		}
-		catch (RuntimeException re) {
-			Log.e(TAG, re.toString());
-		}
 		catch (Exception e)
 		{
             Log.e(TAG, "[Exception] setNetmaskAddress(String strNetmask)");
-            //e.printStackTrace();            
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -106,14 +92,10 @@ public class V40IOInterface2 {
             Log.i(TAG, "[setGatewayAddress] strGateway [" + strGateway+ "]");
 			GatewayIp(strGateway);
         }
-		catch (RuntimeException re) {
-			Log.e(TAG, re.toString());
-		}
-		catch (Exception e)
+        catch (Exception e)
 		{
             Log.e(TAG, "[Exception] setGatewayAddress(String strGateway)");
-            //e.printStackTrace();            
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -130,8 +112,7 @@ public class V40IOInterface2 {
         catch (Exception e)
 		{
             Log.e(TAG, "[Exception] setNetworkInterface(String strIP, String strNetmask, String strGateway, String strDNS)");
-            //e.printStackTrace();            
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }*/
 
@@ -152,14 +133,10 @@ public class V40IOInterface2 {
 
 			NetAll(strIP, strNetmask, strGateway, strMAC);
 		}
-		catch (RuntimeException re) {
-			Log.e(TAG, re.toString());
-		}
 		catch (Exception e)
 		{
 			Log.e(TAG, "[Exception] setNetworkInterface(String strIP, String strNetmask, String strGateway, String strDNS, String strMAC)");
-			//e.printStackTrace();            
-            LogUtil.errorLogInfo("", TAG, e);
+			e.printStackTrace();
 		}
 	}
 
@@ -185,14 +162,10 @@ public class V40IOInterface2 {
             // DNS 설정 JNI method는 아직 없음(2018.02.26)
             SetMacAddr(strMAC);
         }
-		catch (RuntimeException re) {
-			Log.e(TAG, re.toString());
-		}
-		catch (Exception e)
+        catch (Exception e)
 		{
             Log.e(TAG, "[Exception] setNetworkInterface(String strIP, String strNetmask, String strGateway, String strDNS, String strMAC)");
-            //e.printStackTrace();            
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 

+ 7 - 7
AutoPicture/src/main/res/anim/anim_in.xml

@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="utf-8"?>
-<set xmlns:android="http://schemas.android.com/apk/res/android">
-    <translate
-        android:interpolator="@android:anim/accelerate_interpolator"
-        android:fromXDelta="-100%"
-        android:toXDelta="0"
-        android:duration="1300"/>
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+    <translate
+        android:interpolator="@android:anim/accelerate_interpolator"
+        android:fromXDelta="-100%"
+        android:toXDelta="0"
+        android:duration="1300"/>
 </set>

+ 7 - 7
AutoPicture/src/main/res/anim/anim_in_downup.xml

@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="utf-8"?>
-<set xmlns:android="http://schemas.android.com/apk/res/android">
-    <translate
-        android:interpolator="@android:anim/accelerate_interpolator"
-        android:fromYDelta="100%"
-        android:toYDelta="0"
-        android:duration="1300"/>
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+    <translate
+        android:interpolator="@android:anim/accelerate_interpolator"
+        android:fromYDelta="100%"
+        android:toYDelta="0"
+        android:duration="1300"/>
 </set>

+ 7 - 7
AutoPicture/src/main/res/anim/anim_in_updown.xml

@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="utf-8"?>
-<set xmlns:android="http://schemas.android.com/apk/res/android">
-    <translate
-        android:interpolator="@android:anim/accelerate_interpolator"
-        android:fromYDelta="-100%"
-        android:toYDelta="0"
-        android:duration="1300"/>
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+    <translate
+        android:interpolator="@android:anim/accelerate_interpolator"
+        android:fromYDelta="-100%"
+        android:toYDelta="0"
+        android:duration="1300"/>
 </set>

+ 7 - 7
AutoPicture/src/main/res/anim/anim_out.xml

@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="utf-8"?>
-<set xmlns:android="http://schemas.android.com/apk/res/android">
-    <translate
-        android:interpolator="@android:anim/accelerate_interpolator"
-        android:fromXDelta="0"
-        android:toXDelta="100%"
-        android:duration="1300"/>
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+    <translate
+        android:interpolator="@android:anim/accelerate_interpolator"
+        android:fromXDelta="0"
+        android:toXDelta="100%"
+        android:duration="1300"/>
 </set>

+ 7 - 7
AutoPicture/src/main/res/anim/anim_out_downup.xml

@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="utf-8"?>
-<set xmlns:android="http://schemas.android.com/apk/res/android">
-    <translate
-        android:interpolator="@android:anim/accelerate_interpolator"
-        android:fromYDelta="0"
-        android:toYDelta="-100%"
-        android:duration="1300"/>
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+    <translate
+        android:interpolator="@android:anim/accelerate_interpolator"
+        android:fromYDelta="0"
+        android:toYDelta="-100%"
+        android:duration="1300"/>
 </set>

+ 7 - 7
AutoPicture/src/main/res/anim/anim_out_updown.xml

@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="utf-8"?>
-<set xmlns:android="http://schemas.android.com/apk/res/android">
-    <translate
-        android:interpolator="@android:anim/accelerate_interpolator"
-        android:fromYDelta="0"
-        android:toYDelta="100%"
-        android:duration="1300"/>
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+    <translate
+        android:interpolator="@android:anim/accelerate_interpolator"
+        android:fromYDelta="0"
+        android:toYDelta="100%"
+        android:duration="1300"/>
 </set>

+ 16 - 16
AutoPicture/src/main/res/layout/activity_main.xml

@@ -1,17 +1,17 @@
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:paddingBottom="@dimen/activity_vertical_margin"
-    android:paddingLeft="@dimen/activity_horizontal_margin"
-    android:paddingRight="@dimen/activity_horizontal_margin"
-    android:paddingTop="@dimen/activity_vertical_margin"
-    tools:context=".MainActivity" >
-
-    <RelativeLayout
-        android:layout_width="fill_parent"
-        android:layout_height="fill_parent" >
-
-    </RelativeLayout>
-
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:paddingBottom="@dimen/activity_vertical_margin"
+    android:paddingLeft="@dimen/activity_horizontal_margin"
+    android:paddingRight="@dimen/activity_horizontal_margin"
+    android:paddingTop="@dimen/activity_vertical_margin"
+    tools:context=".MainActivity" >
+
+    <RelativeLayout
+        android:layout_width="fill_parent"
+        android:layout_height="fill_parent" >
+
+    </RelativeLayout>
+
 </RelativeLayout>

+ 9 - 9
AutoPicture/src/main/res/menu/main.xml

@@ -1,9 +1,9 @@
-<menu xmlns:android="http://schemas.android.com/apk/res/android" >
-
-    <item
-        android:id="@+id/action_settings"
-        android:orderInCategory="100"
-        android:showAsAction="never"
-        android:title="@string/action_settings"/>
-
-</menu>
+<menu xmlns:android="http://schemas.android.com/apk/res/android" >
+
+    <item
+        android:id="@+id/action_settings"
+        android:orderInCategory="100"
+        android:showAsAction="never"
+        android:title="@string/action_settings"/>
+
+</menu>

+ 7 - 7
AutoPicture/src/main/res/values-sw600dp/dimens.xml

@@ -1,8 +1,8 @@
-<resources>
-
-    <!--
+<resources>
+
+    <!--
          Customize dimensions originally defined in res/values/dimens.xml (such as
-         screen margins) for sw600dp devices (e.g. 7" tablets) here.
-    -->
-
-</resources>
+         screen margins) for sw600dp devices (e.g. 7" tablets) here.
+    -->
+
+</resources>

+ 8 - 8
AutoPicture/src/main/res/values-sw720dp-land/dimens.xml

@@ -1,9 +1,9 @@
-<resources>
-
-    <!--
+<resources>
+
+    <!--
          Customize dimensions originally defined in res/values/dimens.xml (such as
-         screen margins) for sw720dp devices (e.g. 10" tablets) in landscape here.
-    -->
-    <dimen name="activity_horizontal_margin">128dp</dimen>
-
-</resources>
+         screen margins) for sw720dp devices (e.g. 10" tablets) in landscape here.
+    -->
+    <dimen name="activity_horizontal_margin">128dp</dimen>
+
+</resources>

+ 10 - 10
AutoPicture/src/main/res/values-v11/styles.xml

@@ -1,11 +1,11 @@
-<resources>
-
-    <!--
+<resources>
+
+    <!--
         Base application theme for API 11+. This theme completely replaces
-        AppBaseTheme from res/values/styles.xml on API 11+ devices.
-    -->
-    <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
-        <!-- API 11 theme customizations can go here. -->
-    </style>
-
-</resources>
+        AppBaseTheme from res/values/styles.xml on API 11+ devices.
+    -->
+    <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
+        <!-- API 11 theme customizations can go here. -->
+    </style>
+
+</resources>

+ 10 - 10
AutoPicture/src/main/res/values-v14/styles.xml

@@ -1,12 +1,12 @@
-<resources>
-
-    <!--
+<resources>
+
+    <!--
         Base application theme for API 14+. This theme completely replaces
         AppBaseTheme from BOTH res/values/styles.xml and
-        res/values-v11/styles.xml on API 14+ devices.
-    -->
-    <style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
-        <!-- API 14 theme customizations can go here. -->
-    </style>
-
-</resources>
+        res/values-v11/styles.xml on API 14+ devices.
+    -->
+    <style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
+        <!-- API 14 theme customizations can go here. -->
+    </style>
+
+</resources>

+ 7 - 7
AutoPicture/src/main/res/values/dimens.xml

@@ -1,7 +1,7 @@
-<resources>
-
-    <!-- Default screen margins, per the Android Design guidelines. -->
-    <dimen name="activity_horizontal_margin">16dp</dimen>
-    <dimen name="activity_vertical_margin">16dp</dimen>
-
-</resources>
+<resources>
+
+    <!-- Default screen margins, per the Android Design guidelines. -->
+    <dimen name="activity_horizontal_margin">16dp</dimen>
+    <dimen name="activity_vertical_margin">16dp</dimen>
+
+</resources>

+ 7 - 7
AutoPicture/src/main/res/values/strings.xml

@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
-<resources>
-
-    <string name="app_name">AutoPicture</string>
-    <string name="action_settings">Settings</string>
-    <string name="hello_world">Hello world!</string>
-
-</resources>
+<resources>
+
+    <string name="app_name">AutoPicture</string>
+    <string name="action_settings">Settings</string>
+    <string name="hello_world">Hello world!</string>
+
+</resources>

+ 26 - 26
AutoPicture/src/main/res/values/styles.xml

@@ -1,26 +1,26 @@
-<resources>
-
-    <!--
-        Base application theme, dependent on API level. This theme is replaced
-        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-    -->
-    <style name="AppBaseTheme" parent="android:Theme.Light">
-        <!--
-            Theme customizations available in newer API levels can go in
-            res/values-vXX/styles.xml, while customizations related to
-            backward-compatibility can go here.
-        -->
-    </style>
-
-    <!-- Application theme. -->
-    <style name="AppTheme" parent="AppBaseTheme">
-        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
-    </style>
-
-    <style name="Theme.PopupActivity" parent="android:style/Theme.Dialog">
-        <item name="android:windowBackground">@android:color/transparent</item>
-        <item name="android:windowNoTitle">true</item>
-        <item name="android:windowIsFloating">true</item>
-    </style>
-
-</resources>
+<resources>
+
+    <!--
+        Base application theme, dependent on API level. This theme is replaced
+        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
+    -->
+    <style name="AppBaseTheme" parent="android:Theme.Light">
+        <!--
+            Theme customizations available in newer API levels can go in
+            res/values-vXX/styles.xml, while customizations related to
+            backward-compatibility can go here.
+        -->
+    </style>
+
+    <!-- Application theme. -->
+    <style name="AppTheme" parent="AppBaseTheme">
+        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
+    </style>
+
+    <style name="Theme.PopupActivity" parent="android:style/Theme.Dialog">
+        <item name="android:windowBackground">@android:color/transparent</item>
+        <item name="android:windowNoTitle">true</item>
+        <item name="android:windowIsFloating">true</item>
+    </style>
+
+</resources>

+ 88 - 88
LogOutputService/build.gradle

@@ -1,88 +1,88 @@
-apply plugin: 'com.android.application'
-
-// This buildscript{} block configures the code driving the build
-buildscript {
-    /**
-     * The nested repositories{} block declares that this build uses the
-     * jcenter repository.
-     */
-    repositories {
-        jcenter()
-        google()
-    }
-
-    /**
-     * This block declares a dependency on the 2.3.3 version
-     * of the Gradle plugin for the buildscript.
-     */
-    dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.1'
-    }
-}
-
-allprojects {
-    repositories {
-        jcenter()
-        google()
-    }
-}
-
-apply plugin: 'com.android.application'
-
-android {
-    signingConfigs {
-        config {
-            keyAlias 'HDC_HN_RELEASE_KEY'
-            keyPassword 'hdchnsys1776'
-            storeFile file('../HDC_HN_RELEASE_KEY.jks')
-            storePassword 'hdchnsys1776'
-        }
-    }
-
-
-    compileSdkVersion 28
-
-    defaultConfig {
-        applicationId "com.artncore.apps.ic_wallpad.service.log"
-        minSdkVersion 17
-        targetSdkVersion 17
-    }
-
-    applicationVariants.all { variant ->
-        variant.outputs.all { output ->
-            outputFileName = new File("../", "LogOutputService.apk");
-        }
-    }
-
-    buildTypes {
-        release {
-            lintOptions {
-                disable 'MissingTranslation'
-                checkReleaseBuilds false
-                abortOnError false
-            }
-            signingConfig signingConfigs.config
-//            minifyEnabled true
-//            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
-        }
-        release_secured {
-            lintOptions {
-                disable 'MissingTranslation'
-                checkReleaseBuilds false
-                abortOnError false
-            }
-            signingConfig signingConfigs.config
-            minifyEnabled true
-            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
-        }
-        debug {
-            signingConfig signingConfigs.config
-        }
-    }
-}
-
-dependencies {
-    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
-    implementation files('libs/WallPadAPI.jar')
-    implementation files('libs/WallPadSupport.jar')
-}
+apply plugin: 'com.android.application'
+
+// This buildscript{} block configures the code driving the build
+buildscript {
+    /**
+     * The nested repositories{} block declares that this build uses the
+     * jcenter repository.
+     */
+    repositories {
+        jcenter()
+        google()
+    }
+
+    /**
+     * This block declares a dependency on the 2.3.3 version
+     * of the Gradle plugin for the buildscript.
+     */
+    dependencies {
+        classpath 'com.android.tools.build:gradle:4.1.1'
+    }
+}
+
+allprojects {
+    repositories {
+        jcenter()
+        google()
+    }
+}
+
+apply plugin: 'com.android.application'
+
+android {
+    signingConfigs {
+        config {
+            keyAlias 'HDC_HN_RELEASE_KEY'
+            keyPassword 'hdchnsys1776'
+            storeFile file('../HDC_HN_RELEASE_KEY.jks')
+            storePassword 'hdchnsys1776'
+        }
+    }
+
+
+    compileSdkVersion 28
+
+    defaultConfig {
+        applicationId "com.artncore.apps.ic_wallpad.service.log"
+        minSdkVersion 17
+        targetSdkVersion 17
+    }
+
+    applicationVariants.all { variant ->
+        variant.outputs.all { output ->
+            outputFileName = new File("../", "LogOutputService.apk");
+        }
+    }
+
+    buildTypes {
+        release {
+            lintOptions {
+                disable 'MissingTranslation'
+                checkReleaseBuilds false
+                abortOnError false
+            }
+            signingConfig signingConfigs.config
+//            minifyEnabled true
+//            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+        }
+        release_secured {
+            lintOptions {
+                disable 'MissingTranslation'
+                checkReleaseBuilds false
+                abortOnError false
+            }
+            signingConfig signingConfigs.config
+            minifyEnabled true
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+        }
+        debug {
+            signingConfig signingConfigs.config
+        }
+    }
+}
+
+dependencies {
+    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
+    implementation files('libs/WallPadAPI.jar')
+    implementation files('libs/WallPadSupport.jar')
+}

BIN
LogOutputService/libs/WallPadAPI.jar


BIN
LogOutputService/libs/WallPadAPIforSVC.jar


BIN
LogOutputService/libs/WallPadSupport.jar


+ 28 - 28
LogOutputService/src/main/AndroidManifest.xml

@@ -1,28 +1,28 @@
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.artncore.apps.ic_wallpad.service.log"
-    android:versionCode="24"
-    android:versionName="2021.03.26.01">
-
-    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
-    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
-
-    <application
-        android:allowBackup="true"
-        android:icon="@mipmap/ic_launcher"
-        android:label="@string/app_name"
-        android:theme="@style/AppTheme" >
-
-        <service
-            android:name=".LogOutputService"
-            android:enabled="true" 
-            android:exported="true"
-            android:process=":remote"
-            >
-            <intent-filter>
-                <action android:name="com.artncore.apps.ic_wallpad.service.log.remotestub.RemoteInterface" />
-            </intent-filter>
-        </service>
-
-    </application>
-
-</manifest>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.artncore.apps.ic_wallpad.service.log"
+    android:versionCode="24"
+    android:versionName="2020.11.12.01">
+
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
+    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+
+    <application
+        android:allowBackup="true"
+        android:icon="@mipmap/ic_launcher"
+        android:label="@string/app_name"
+        android:theme="@style/AppTheme" >
+
+        <service
+            android:name=".LogOutputService"
+            android:enabled="true" 
+            android:exported="true"
+            android:process=":remote"
+            >
+            <intent-filter>
+                <action android:name="com.artncore.apps.ic_wallpad.service.log.remotestub.RemoteInterface" />
+            </intent-filter>
+        </service>
+
+    </application>
+
+</manifest>

+ 66 - 70
LogOutputService/src/main/java/com/artncore/apps/ic_wallpad/service/log/LogOutputService.java

@@ -1,70 +1,66 @@
-package com.artncore.apps.ic_wallpad.service.log;
-
-
-import android.app.Service;
-import android.content.Intent;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.os.IBinder;
-import android.util.Log;
-
-import com.artncore.commons.define;
-
-import kr.co.icontrols.wallpadsupport.Version;
-
-
-public class LogOutputService extends Service
-{
-    private static final String TAG = "LogOutputService";
-
-    /**
-     * 생성자
-     */
-    @Override
-    public void onCreate()
-    {
-        super.onCreate();
-
-        // 1. 로그메시지 출력
-        Log.i("Version", "START - WallPadDevService");
-        String version = null;
-        try {
-            PackageInfo i =  this.getPackageManager().getPackageInfo(this.getPackageName(), 0);
-            version = i.versionName;
-        } catch(NameNotFoundException e) {
-            Log.i("Version", "NameNotFoundException");
-        }
-        Log.i("Version", "<><><><>  Applications   Version = [" + version + "] " + "<><><><>");
-        Version.LogOut();
-        Log.i("Version", "<><><><>  WallPadAPI     Version = [" + define.WALLPADAPI_VERSION + "] " + "<><><><>");
-    }
-
-    /**
-     * onStartCommand
-     */
-    @Override
-    public int onStartCommand(Intent intent, int flags, int startId)
-    {
-        return START_STICKY; // run until explicitly stopped.
-    }
-
-    /**
-     * onDestroy
-     */
-    @Override
-    public void onDestroy()
-    {
-        super.onDestroy();
-
-        Log.i(TAG, "onDestroy()");
-    }
-
-    /**
-     * onBind
-     */
-    @Override
-    public IBinder onBind(Intent intent)
-    {
-        return null;
-    }
-}
+package com.artncore.apps.ic_wallpad.service.log;
+
+
+import kr.co.icontrols.wallpadsupport.Version;
+import com.artncore.commons.define;
+import android.os.IBinder;
+import android.app.Service;
+import android.content.Intent;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager.NameNotFoundException;
+import android.util.Log;
+
+
+public class LogOutputService extends Service
+{
+    private static final String TAG = "LogOutputService";
+
+    /**
+     * 생성자
+     */
+    @Override
+    public void onCreate()
+    {
+        super.onCreate();
+
+        // 1. 로그메시지 출력
+        Log.i("Version", "START - WallPadDevService");
+        String version = null;
+        try {
+            PackageInfo i =  this.getPackageManager().getPackageInfo(this.getPackageName(), 0);
+            version = i.versionName;
+        } catch(NameNotFoundException e) { }
+        Log.i("Version", "<><><><>  Applications   Version = [" + version + "] " + "<><><><>");
+        Version.LogOut();
+        Log.i("Version", "<><><><>  WallPadAPI     Version = [" + define.WALLPADAPI_VERSION + "] " + "<><><><>");
+    }
+
+    /**
+     * onStartCommand
+     */
+    @Override
+    public int onStartCommand(Intent intent, int flags, int startId)
+    {
+        return START_STICKY; // run until explicitly stopped.
+    }
+
+    /**
+     * onDestroy
+     */
+    @Override
+    public void onDestroy()
+    {
+        super.onDestroy();
+
+        Log.i(TAG, "onDestroy()");
+    }
+
+    /**
+     * onBind
+     */
+    @Override
+    public IBinder onBind(Intent intent)
+    {
+        return null;
+    }
+}

+ 10 - 10
LogOutputService/src/main/res/values-v11/styles.xml

@@ -1,11 +1,11 @@
-<resources>
-
-    <!--
+<resources>
+
+    <!--
         Base application theme for API 11+. This theme completely replaces
-        AppBaseTheme from res/values/styles.xml on API 11+ devices.
-    -->
-    <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
-        <!-- API 11 theme customizations can go here. -->
-    </style>
-
-</resources>
+        AppBaseTheme from res/values/styles.xml on API 11+ devices.
+    -->
+    <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
+        <!-- API 11 theme customizations can go here. -->
+    </style>
+
+</resources>

+ 10 - 10
LogOutputService/src/main/res/values-v14/styles.xml

@@ -1,12 +1,12 @@
-<resources>
-
-    <!--
+<resources>
+
+    <!--
         Base application theme for API 14+. This theme completely replaces
         AppBaseTheme from BOTH res/values/styles.xml and
-        res/values-v11/styles.xml on API 14+ devices.
-    -->
-    <style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
-        <!-- API 14 theme customizations can go here. -->
-    </style>
-
-</resources>
+        res/values-v11/styles.xml on API 14+ devices.
+    -->
+    <style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
+        <!-- API 14 theme customizations can go here. -->
+    </style>
+
+</resources>

+ 5 - 5
LogOutputService/src/main/res/values/strings.xml

@@ -1,5 +1,5 @@
-<resources>
-
-    <string name="app_name">LogOutputService</string>
-
-</resources>
+<resources>
+
+    <string name="app_name">LogOutputService</string>
+
+</resources>

+ 17 - 17
LogOutputService/src/main/res/values/styles.xml

@@ -1,20 +1,20 @@
-<resources>
-
-    <!--
+<resources>
+
+    <!--
         Base application theme, dependent on API level. This theme is replaced
-        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-    -->
-    <style name="AppBaseTheme" parent="android:Theme.Light">
-        <!--
+        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
+    -->
+    <style name="AppBaseTheme" parent="android:Theme.Light">
+        <!--
             Theme customizations available in newer API levels can go in
             res/values-vXX/styles.xml, while customizations related to
-            backward-compatibility can go here.
-        -->
-    </style>
-
-    <!-- Application theme. -->
-    <style name="AppTheme" parent="AppBaseTheme">
-        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
-    </style>
-
-</resources>
+            backward-compatibility can go here.
+        -->
+    </style>
+
+    <!-- Application theme. -->
+    <style name="AppTheme" parent="AppBaseTheme">
+        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
+    </style>
+
+</resources>

+ 87 - 87
ManagerSetting/build.gradle

@@ -1,87 +1,87 @@
-// This buildscript{} block configures the code driving the build
-buildscript {
-    /**
-     * The nested repositories{} block declares that this build uses the
-     * jcenter repository.
-     */
-    repositories {
-        jcenter()
-        google()
-    }
-
-    /**
-     * This block declares a dependency on the 2.3.3 version
-     * of the Gradle plugin for the buildscript.
-     */
-    dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.1'
-    }
-}
-
-allprojects {
-    repositories {
-        google()
-        jcenter()
-    }
-}
-
-apply plugin: 'com.android.application'
-
-android {
-    signingConfigs {
-        config {
-            keyAlias 'HDC_HN_RELEASE_KEY'
-            keyPassword 'hdchnsys1776'
-            storeFile file('../HDC_HN_RELEASE_KEY.jks')
-            storePassword 'hdchnsys1776'
-        }
-    }
-
-    compileSdkVersion 28
-
-    defaultConfig {
-        applicationId "com.artncore.managersetting"
-        minSdkVersion 19 // 방문객원격통화 API 적용으로 upgrade
-        targetSdkVersion 19
-    }
-
-    applicationVariants.all { variant ->
-        variant.outputs.all { output ->
-            outputFileName = new File("../", "ManagerSetting.apk")
-        }
-    }
-    buildTypes {
-        release {
-            lintOptions {
-                disable 'MissingTranslation'
-                checkReleaseBuilds false
-                abortOnError false
-            }
-            signingConfig signingConfigs.config
-//            minifyEnabled true
-//            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
-        }
-        release_secured {
-            lintOptions {
-                disable 'MissingTranslation'
-                checkReleaseBuilds false
-                abortOnError false
-            }
-            signingConfig signingConfigs.config
-            minifyEnabled true
-            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
-        }
-        debug {
-            signingConfig signingConfigs.config
-        }
-    }
-
-}
-
-dependencies {
-    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
-    implementation files('libs/WallPadAPI.jar')
-    implementation files('libs/WallPadSupport.jar')
-    implementation files('libs\\WallPadAPI.jar')
-    implementation files('libs\\WallPadAPI.jar')
-}
+// This buildscript{} block configures the code driving the build
+buildscript {
+    /**
+     * The nested repositories{} block declares that this build uses the
+     * jcenter repository.
+     */
+    repositories {
+        jcenter()
+        google()
+    }
+
+    /**
+     * This block declares a dependency on the 2.3.3 version
+     * of the Gradle plugin for the buildscript.
+     */
+    dependencies {
+        classpath 'com.android.tools.build:gradle:4.1.1'
+    }
+}
+
+allprojects {
+    repositories {
+        google()
+        jcenter()
+    }
+}
+
+apply plugin: 'com.android.application'
+
+android {
+    signingConfigs {
+        config {
+            keyAlias 'HDC_HN_RELEASE_KEY'
+            keyPassword 'hdchnsys1776'
+            storeFile file('../HDC_HN_RELEASE_KEY.jks')
+            storePassword 'hdchnsys1776'
+        }
+    }
+
+    compileSdkVersion 28
+
+    defaultConfig {
+        applicationId "com.artncore.managersetting"
+        minSdkVersion 19 // 방문객원격통화 API 적용으로 upgrade
+        targetSdkVersion 19
+    }
+
+    applicationVariants.all { variant ->
+        variant.outputs.all { output ->
+            outputFileName = new File("../", "ManagerSetting.apk")
+        }
+    }
+    buildTypes {
+        release {
+            lintOptions {
+                disable 'MissingTranslation'
+                checkReleaseBuilds false
+                abortOnError false
+            }
+            signingConfig signingConfigs.config
+//            minifyEnabled true
+//            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+        }
+        release_secured {
+            lintOptions {
+                disable 'MissingTranslation'
+                checkReleaseBuilds false
+                abortOnError false
+            }
+            signingConfig signingConfigs.config
+            minifyEnabled true
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+        }
+        debug {
+            signingConfig signingConfigs.config
+        }
+    }
+
+}
+
+dependencies {
+    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
+    implementation files('libs/WallPadAPI.jar')
+    implementation files('libs/WallPadSupport.jar')
+    implementation files('libs\\WallPadAPI.jar')
+    implementation files('libs\\WallPadAPI.jar')
+}

BIN
ManagerSetting/libs/WallPadAPI.jar


BIN
ManagerSetting/libs/WallPadSupport.jar


+ 61 - 61
ManagerSetting/src/main/AndroidManifest.xml

@@ -1,61 +1,61 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.artncore.managersetting"
-    android:versionCode="23"
-    android:versionName="2021.04.01.01">
-
-    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
-    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
-    <uses-permission android:name="android.permission.CALL_PHONE" />
-    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
-    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
-    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
-    <uses-permission android:name="android.permission.RECORD_AUDIO"/>
-    <uses-permission android:name="android.permission.CAMERA"/>
-    <uses-permission android:name="android.permission.INTERNET"/>
-    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
-
-
-    <application
-        android:name="MainApplication"
-        android:allowBackup="true"
-        android:icon="@mipmap/ic_launcher"
-        android:label="@string/app_name"
-        android:theme="@style/AppTheme" >
-        <activity
-            android:name="com.artncore.managersetting.ui.activities.MainActivity"
-            android:label="@string/app_name" 
-            android:launchMode="singleTop"
-            android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen"
-            android:screenOrientation="landscape"
-            >
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.LAUNCHER" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="com.artncore.managersetting.ui.activities.SetAddress"
-            android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen"
-            android:screenOrientation="landscape"
-            >
-
-             <intent-filter>
-                <action android:name="android.intent.action.ADDRESS" />
-                <category android:name="android.intent.category.LAUNCHER" />
-            </intent-filter>
-        </activity>
-
-        <activity
-            android:name=".ui.logfileviewer.LogFileViewer"
-            android:label="@string/title_item_detail"
-            android:excludeFromRecents="true"
-            android:theme="@android:style/Theme.Holo.Panel"
-            android:configChanges="orientation|screenSize"
-            android:screenOrientation="landscape" 
-            >
-        </activity>
-
-    </application>
-
-</manifest>
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.artncore.managersetting"
+    android:versionCode="23"
+    android:versionName="2020.11.18.01">
+
+    <uses-permission android:name="android.permission.CALL_PHONE" />
+    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
+    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
+    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
+    <uses-permission android:name="android.permission.RECORD_AUDIO"/>
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
+    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.CAMERA"/>
+    <uses-permission android:name="android.permission.INTERNET"/>
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
+
+
+    <application
+        android:name="MainApplication"
+        android:allowBackup="true"
+        android:icon="@mipmap/ic_launcher"
+        android:label="@string/app_name"
+        android:theme="@style/AppTheme" >
+        <activity
+            android:name="com.artncore.managersetting.ui.activities.MainActivity"
+            android:label="@string/app_name" 
+            android:launchMode="singleTop"
+            android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen"
+            android:screenOrientation="landscape"
+            >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+
+        <activity android:name="com.artncore.managersetting.ui.activities.SetAddress"
+            android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen"
+            android:screenOrientation="landscape"
+            >
+
+             <intent-filter>
+                <action android:name="android.intent.action.ADDRESS" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+
+        <activity
+            android:name=".ui.logfileviewer.LogFileViewer"
+            android:label="@string/title_item_detail"
+            android:excludeFromRecents="true"
+            android:theme="@android:style/Theme.Holo.Panel"
+            android:configChanges="orientation|screenSize"
+            android:screenOrientation="landscape" 
+            >
+        </activity>
+
+    </application>
+
+</manifest>

+ 6 - 18
ManagerSetting/src/main/java/com/artncore/deviceinterface/WallPadInterface.java

@@ -13,7 +13,6 @@ import com.artncore.managersetting.ui.fragments.CheckEtcFragment;
 import com.artncore.wallpadapi.IGW300API;
 import com.artncore.wallpadapi.SmartKeyRfDoorAPI;
 import com.artncore.wallpadapi.WallPadAPI;
-import com.util.LogUtil;
 
 import kr.co.icontrols.v40ioctl.V40IF;
 import kr.co.icontrols.wallpadsupport.Version;
@@ -600,18 +599,14 @@ public class WallPadInterface {
         }
         else if (Version.getPlatformType() == Version.PLATFORM_TYPE.A40i) {
             // 스마트현관카메라
-            if (CheckEtcFragment.doorCamType == WallpadDeviceSet.DOORTYPE_IOT_SMART
-                    || CheckEtcFragment.doorCamType == WallpadDeviceSet.DOORTYPE_HYOSUNG_SMART
-                    || CheckEtcFragment.doorCamType == WallpadDeviceSet.DOORTYPE_DAEWOO_SMART) {
+            if (CheckEtcFragment.doorCamType == WallpadDeviceSet.DOORTYPE_IOT_SMART) {
                 mWallPadAPI = MainActivity.getWallPadAPI();
                 if (onOff) {
                     mAPICheckHandler.sendEmptyMessage(0);
                 }
                 else {
-                    if (mIGW300API != null) {
-                        mIGW300API.ControlOutput((byte) 0x18, false);
-                        mIGW300API.ControlOutput((byte) 0x1B, false);
-                    }
+                    mIGW300API.ControlOutput((byte) 0x18, false);
+                    mIGW300API.ControlOutput((byte) 0x1B, false);
                     ctrlSmartIOTCamStatusMode(false);
                     ctrlSmartIOTCamLEDMode(false);
                 }
@@ -791,12 +786,9 @@ public class WallPadInterface {
             Log.d(TAG, "[ctrlSmartIOTCamStatusMode] hMode [" + hMode + "]");
             if (mSmartKeyRfDoorAPI != null) mSmartKeyRfDoorAPI.SetCAMERAmode(hMode);
             else Log.w(TAG, "[ctrlSmartIOTCamStatusMode] mSmartKeyRfDoorAPI is null!");
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
         } catch (Exception e) {
             Log.e(TAG, "[Exception] ctrlSmartIOTCamStatusMode(byte mode)");
-            //e.printStackTrace();            
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -808,12 +800,9 @@ public class WallPadInterface {
             else hMode = 0x00;
             if (mSmartKeyRfDoorAPI != null) mSmartKeyRfDoorAPI.SetLEDmode(hMode);
             else Log.w(TAG, "[ctrlSmartIOTCamLEDMode] mSmartKeyRfDoorAPI is null!");
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
         } catch (Exception e) {
             Log.e(TAG, "[Exception] ctrlSmartIOTCamLEDMode(byte mode)");
-            //e.printStackTrace();            
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -1189,8 +1178,7 @@ public class WallPadInterface {
 
             ret = setMonoOutSubPhoneGain(value);
         } catch (IndexOutOfBoundsException e) {
-            //e.printStackTrace();            
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
 
         if (DEBUG)  Log.d(TAG, "setMonoOutSubPhoneLevelGain() level : " + level

+ 174 - 189
ManagerSetting/src/main/java/com/artncore/managersetting/MainApplication.java

@@ -1,189 +1,174 @@
-package com.artncore.managersetting;
-
-import android.app.Application;
-import android.util.Log;
-
-import com.util.LogUtil;
-
-import java.net.Inet4Address;
-import java.net.InetAddress;
-import java.net.InterfaceAddress;
-import java.net.NetworkInterface;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.List;
-
-public class MainApplication extends Application {
-
-    private static final String TAG = "MainApplication";
-
-    private final boolean DEBUG = true;
-
-    private static MainApplication sMainApp = null;
-
-    @Override
-    public void onCreate() {
-        if (DEBUG)  Log.d(TAG, "onCreate() ");
-
-        super.onCreate();
-
-        sMainApp = this;
-
-        Log.i(TAG, "local IP = " + getLocalIpAddress());
-        Log.i(TAG, "mac add = " + getMacAddr());
-
-        printNetworks();
-    }
-
-
-    @Override
-    public void onTerminate() {
-        if (DEBUG)  Log.d(TAG, "onTerminate() ");
-
-        super.onTerminate();
-    }
-
-
-    // return MainApplication
-    synchronized public static MainApplication getApplication() {
-        return sMainApp;
-    }
-
-
-    private boolean bSetReboot = false;
-
-    // set reboot
-    public void setReboot() {
-        bSetReboot = true;
-    }
-
-    // reboot 설정여부 return
-    public boolean isSetReboot() {
-        return bSetReboot;
-    }
-
-    public static String getLocalIpAddress()
-    {
-        try {
-            for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();)
-            {
-                NetworkInterface intf = en.nextElement();
-
-                for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();)
-                {
-                    InetAddress inetAddress = enumIpAddr.nextElement();
-                    if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address)
-                    {
-                        String ip = inetAddress.getHostAddress();
-                        return inetAddress.getHostAddress();
-                    }
-                }
-            }
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
-        } catch (Exception ex) {
-            //ex.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, ex);
-        }
-        return null;
-    }
-
-    public static String getMacAddr() {
-        try {
-            List<NetworkInterface> all = Collections.list(NetworkInterface.getNetworkInterfaces());
-
-            for (NetworkInterface nif : all) {
-                if (!nif.getName().equalsIgnoreCase("eth0")) continue;
-
-                byte[] macBytes = nif.getHardwareAddress();
-                if (macBytes == null) {
-                    return "";
-                }
-
-                StringBuilder res1 = new StringBuilder();
-                for (byte b : macBytes) {
-                    res1.append(String.format("%02X:",b));
-                }
-
-                if (res1.length() > 0) {
-                    res1.deleteCharAt(res1.length() - 1);
-                }
-                return res1.toString();
-            }
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
-        } catch (Exception ex) {
-            LogUtil.errorLogInfo("", TAG, ex);
-        }
-        return "02:00:00:00:00:00";
-    }
-
-    public void printNetworks()
-    {
-        // This works both in tethering and when connected to an Access Point
-        try
-        {
-            Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
-
-            while (interfaces.hasMoreElements())
-            {
-                NetworkInterface networkInterface = interfaces.nextElement();
-
-                try
-                {
-                    if (networkInterface.isLoopback())
-                        continue; // Don't want to broadcast to the loopback interface
-
-                    for (InterfaceAddress interfaceAddress : networkInterface.getInterfaceAddresses())
-                    {
-                        InetAddress ip = interfaceAddress.getAddress();
-                        Log.i(TAG, "ip = " + ip);
-                        Log.i(TAG, "subnet = " + interfaceAddress.getNetworkPrefixLength() );
-                        Log.i(TAG, "broadcast = " + interfaceAddress.getBroadcast());
-                        // interfaceAddress.getNetworkPrefixLength() is another way to express subnet mask
-
-                        String ips = interfaceAddress.getAddress().toString();
-                        Log.i(TAG,"ips 123 = " + ips.substring(1,4));
-
-                        if(ips.substring(1,4).equals("10."))
-                        {
-                            String subnetmask = "";
-                            int len = interfaceAddress.getNetworkPrefixLength();
-                            int netmaskLen = len / 8;
-
-                            for (int i = 0; i < 4; i++) {
-                                if (i < netmaskLen) {
-                                    subnetmask += "255";
-                                } else {
-                                    subnetmask += "0";
-                                }
-                                if (i != 3) {
-                                    subnetmask += ".";
-                                }
-                            }
-                            Log.i(TAG, "subnetmask = " + subnetmask);
-                        }
-
-                    }
-                }
-                catch (RuntimeException re) {
-                    LogUtil.errorLogInfo("", TAG, re);
-                }
-                catch(Exception e)
-                {
-                    //e.printStackTrace();
-                    LogUtil.errorLogInfo("", TAG, e);
-                }
-
-            }
-
-        }catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
-        } catch (Exception e)
-        {
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
-        }
-
-    }
-}
+package com.artncore.managersetting;
+
+import android.app.Application;
+import android.util.Log;
+
+import java.net.Inet4Address;
+import java.net.InetAddress;
+import java.net.InterfaceAddress;
+import java.net.NetworkInterface;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.List;
+
+public class MainApplication extends Application {
+
+    private static final String TAG = "MainApplication";
+
+    private final boolean DEBUG = true;
+
+    private static MainApplication sMainApp = null;
+
+    @Override
+    public void onCreate() {
+        if (DEBUG)  Log.d(TAG, "onCreate() ");
+
+        super.onCreate();
+
+        sMainApp = this;
+
+        Log.i(TAG, "local IP = " + getLocalIpAddress());
+        Log.i(TAG, "mac add = " + getMacAddr());
+
+        printNetworks();
+    }
+
+
+    @Override
+    public void onTerminate() {
+        if (DEBUG)  Log.d(TAG, "onTerminate() ");
+
+        super.onTerminate();
+    }
+
+
+    // return MainApplication
+    synchronized public static MainApplication getApplication() {
+        return sMainApp;
+    }
+
+
+    private boolean bSetReboot = false;
+
+    // set reboot
+    public void setReboot() {
+        bSetReboot = true;
+    }
+
+    // reboot 설정여부 return
+    public boolean isSetReboot() {
+        return bSetReboot;
+    }
+
+    public static String getLocalIpAddress()
+    {
+        try {
+            for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();)
+            {
+                NetworkInterface intf = en.nextElement();
+
+                for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();)
+                {
+                    InetAddress inetAddress = enumIpAddr.nextElement();
+                    if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address)
+                    {
+                        String ip = inetAddress.getHostAddress();
+                        return inetAddress.getHostAddress();
+                    }
+                }
+            }
+        } catch (Exception ex) {
+            ex.printStackTrace();
+        }
+        return null;
+    }
+
+    public static String getMacAddr() {
+        try {
+            List<NetworkInterface> all = Collections.list(NetworkInterface.getNetworkInterfaces());
+
+            for (NetworkInterface nif : all) {
+                if (!nif.getName().equalsIgnoreCase("eth0")) continue;
+
+                byte[] macBytes = nif.getHardwareAddress();
+                if (macBytes == null) {
+                    return "";
+                }
+
+                StringBuilder res1 = new StringBuilder();
+                for (byte b : macBytes) {
+                    res1.append(String.format("%02X:",b));
+                }
+
+                if (res1.length() > 0) {
+                    res1.deleteCharAt(res1.length() - 1);
+                }
+                return res1.toString();
+            }
+        } catch (Exception ex) {
+        }
+        return "02:00:00:00:00:00";
+    }
+
+    public void printNetworks()
+    {
+        // This works both in tethering and when connected to an Access Point
+        try
+        {
+            Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
+
+            while (interfaces.hasMoreElements())
+            {
+                NetworkInterface networkInterface = interfaces.nextElement();
+
+                try
+                {
+                    if (networkInterface.isLoopback())
+                        continue; // Don't want to broadcast to the loopback interface
+
+                    for (InterfaceAddress interfaceAddress : networkInterface.getInterfaceAddresses())
+                    {
+                        InetAddress ip = interfaceAddress.getAddress();
+                        Log.i(TAG, "ip = " + ip);
+                        Log.i(TAG, "subnet = " + interfaceAddress.getNetworkPrefixLength() );
+                        Log.i(TAG, "broadcast = " + interfaceAddress.getBroadcast());
+                        // interfaceAddress.getNetworkPrefixLength() is another way to express subnet mask
+
+                        String ips = interfaceAddress.getAddress().toString();
+                        Log.i(TAG,"ips 123 = " + ips.substring(1,4));
+
+                        if(ips.substring(1,4).equals("10."))
+                        {
+                            String subnetmask = "";
+                            int len = interfaceAddress.getNetworkPrefixLength();
+                            int netmaskLen = len / 8;
+
+                            for (int i = 0; i < 4; i++) {
+                                if (i < netmaskLen) {
+                                    subnetmask += "255";
+                                } else {
+                                    subnetmask += "0";
+                                }
+                                if (i != 3) {
+                                    subnetmask += ".";
+                                }
+                            }
+                            Log.i(TAG, "subnetmask = " + subnetmask);
+                        }
+
+                    }
+                }
+                catch(Exception e)
+                {
+                    e.printStackTrace();
+                }
+
+            }
+
+        }catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+
+    }
+}

+ 2250 - 2344
ManagerSetting/src/main/java/com/artncore/managersetting/dao/MainDatabaseManager.java

@@ -1,2344 +1,2250 @@
-package com.artncore.managersetting.dao;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import kr.co.icontrols.v40ioctl.V40IF;
-import kr.co.icontrols.wallpadsupport.Version;
-import android.content.Context;
-import android.os.Handler;
-import android.util.Log;
-
-import com.artncore.WallPadDataMgr.WallpadDeviceSet;
-import com.artncore.WallPadDataMgr.WallpadSalesSampleData;
-import com.artncore.WallPadDataMgr.WallpadStatusData;
-import com.artncore.WallPadDataMgr.wallpaddbmgr;
-import com.artncore.WallPadDataMgr.wallpaddbmgr.AddressSet;
-import com.artncore.managersetting.domain.Const;
-import com.artncore.managersetting.util.NetworkUtil;
-import com.artncore.managersetting.util.StringUtil;
-import com.artncore.managersetting.R;
-import com.util.LogUtil;
-
-public class MainDatabaseManager {
-
-    private static final String TAG = "MainDatabaseManager";
-
-    private final boolean DEBUG = true;
-
-
-    public static final int SETTING_ITEM_TYPE_BASE = 101;
-    public static final int SETTING_ITEM_GUARD_LIST         = SETTING_ITEM_TYPE_BASE + 0;
-    public static final int SETTING_ITEM_VER_SETTING        = SETTING_ITEM_TYPE_BASE + 1;
-    public static final int SETTING_ITEM_LOG_ENABLE         = SETTING_ITEM_TYPE_BASE + 2;
-    public static final int SETTING_ITEM_BEAT_TIME          = SETTING_ITEM_TYPE_BASE + 3;
-    public static final int SETTING_ITEM_DATETIME           = SETTING_ITEM_TYPE_BASE + 4;
-
-
-    public static final int SETTING_ITEM_IP_TABLE_LIST      = SETTING_ITEM_TYPE_BASE + 5;
-    //    public static final int SETTING_ITEM_SECURITY_STATE  = SETTING_ITEM_TYPE_BASE + 6;
-    public static final int SETTING_ITEM_SENSOR_STATE_LIST  = SETTING_ITEM_TYPE_BASE + 7;
-    public static final int SETTING_ITEM_SITE_CODE          = SETTING_ITEM_TYPE_BASE + 8;
-    public static final int SETTING_ITEM_SUB_DEVICE_LIST    = SETTING_ITEM_TYPE_BASE + 9;
-
-
-    public static final int SETTING_ITEM_SUB_DEVICE_GAS                         = SETTING_ITEM_TYPE_BASE + 100;
-    public static final int SETTING_ITEM_SUB_DEVICE_DOOR_LOCK                   = SETTING_ITEM_TYPE_BASE + 101;
-    public static final int SETTING_ITEM_SUB_DEVICE_HEATER                      = SETTING_ITEM_TYPE_BASE + 102;
-    public static final int SETTING_ITEM_SUB_DEVICE_LIGHT                       = SETTING_ITEM_TYPE_BASE + 103;
-    public static final int SETTING_ITEM_SUB_DEVICE_VENTILATION                 = SETTING_ITEM_TYPE_BASE + 104;
-    public static final int SETTING_ITEM_SUB_DEVICE_SYSTEM_AIRCON               = SETTING_ITEM_TYPE_BASE + 105;
-    public static final int SETTING_ITEM_SUB_DEVICE_ELECTRONICALLY_CURTAIN      = SETTING_ITEM_TYPE_BASE + 106;
-    public static final int SETTING_ITEM_SUB_DEVICE_REALTIME_MEASURING_METER    = SETTING_ITEM_TYPE_BASE + 107;
-    public static final int SETTING_ITEM_SUB_DEVICE_SMART_SWITCH_LIGHT_AND_BATCH_CONTROL                = SETTING_ITEM_TYPE_BASE + 108;
-    public static final int SETTING_ITEM_SUB_DEVICE_WIRELESS_REMOCON            = SETTING_ITEM_TYPE_BASE + 109;
-    public static final int SETTING_ITEM_SUB_DEVICE_DOOR_CAMERA                 = SETTING_ITEM_TYPE_BASE + 110;
-    public static final int SETTING_ITEM_SUB_DEVICE_NOTICE                      = SETTING_ITEM_TYPE_BASE + 111;
-    public static final int SETTING_ITEM_SUB_DEVICE_WEATHER                     = SETTING_ITEM_TYPE_BASE + 112;
-    public static final int SETTING_ITEM_SUB_DEVICE_MENO                        = SETTING_ITEM_TYPE_BASE + 113;
-    public static final int SETTING_ITEM_SUB_DEVICE_ELECTRONIC_PICTURE_FRAMES   = SETTING_ITEM_TYPE_BASE + 114;
-    public static final int SETTING_ITEM_SUB_DEVICE_SCHEDULE                    = SETTING_ITEM_TYPE_BASE + 115;
-    public static final int SETTING_ITEM_SUB_DEVICE_PARKING                     = SETTING_ITEM_TYPE_BASE + 116;
-    public static final int SETTING_ITEM_SUB_DEVICE_TIME_SETTING                = SETTING_ITEM_TYPE_BASE + 117;
-    public static final int SETTING_ITEM_SUB_DEVICE_REMOTE_MESURING_METER       = SETTING_ITEM_TYPE_BASE + 118;
-    public static final int SETTING_ITEM_SUB_DEVICE_MUSIC                       = SETTING_ITEM_TYPE_BASE + 119;
-    public static final int SETTING_ITEM_SUB_DEVICE_VIDEO_PLAY                  = SETTING_ITEM_TYPE_BASE + 120;
-    public static final int SETTING_ITEM_SUB_DEVICE_CCTV                        = SETTING_ITEM_TYPE_BASE + 121;
-    public static final int SETTING_ITEM_SUB_DEVICE_SET_NAMING                  = SETTING_ITEM_TYPE_BASE + 122;
-    public static final int SETTING_ITEM_SUB_DEVICE_CUSTOMER_SERVICE_GUARD      = SETTING_ITEM_TYPE_BASE + 123;
-    public static final int SETTING_ITEM_SUB_DEVICE_GUARD_VIDEO_CALL            = SETTING_ITEM_TYPE_BASE + 124;
-    public static final int SETTING_ITEM_SUB_DEVICE_ELEVATOR                    = SETTING_ITEM_TYPE_BASE + 125;
-    public static final int SETTING_ITEM_SUB_DEVICE_FIELD_TYPE                  = SETTING_ITEM_TYPE_BASE + 126;
-    public static final int SETTING_ITEM_SUB_DEVICE_WALLPAD_CAMERA              = SETTING_ITEM_TYPE_BASE + 127;
-    public static final int SETTING_ITEM_SUB_DEVICE_MOOD_LIGHT                  = SETTING_ITEM_TYPE_BASE + 128;
-    public static final int SETTING_ITEM_SUB_DEVICE_ESCAPE_LADDER               = SETTING_ITEM_TYPE_BASE + 129;
-    public static final int SETTING_ITEM_SUB_DEVICE_MOTION_SETTING              = SETTING_ITEM_TYPE_BASE + 130;
-    public static final int SETTING_ITEM_SUB_DEVICE_ALART_ALARM                 = SETTING_ITEM_TYPE_BASE + 131;
-
-    public static final int SETTING_ITEM_SUB_DEVICE_PSTN_CALL                   = SETTING_ITEM_TYPE_BASE + 132;
-
-    public static final int SETTING_ITEM_SUB_DEVICE_DOOR_PHONE_OUTPUT_VOLUME    = SETTING_ITEM_TYPE_BASE + 133;
-
-    public static final int SETTING_ITEM_SUB_DEVICE_IPARK_ENERGY                = SETTING_ITEM_TYPE_BASE + 134;
-    public static final int SETTING_ITEM_SUB_DEVICE_IDLE_POWER_SAVING_SWITCH    = SETTING_ITEM_TYPE_BASE + 135;
-    public static final int SETTING_ITEM_SUB_DEVICE_ENERGY_MODULE               = SETTING_ITEM_TYPE_BASE + 136;
-
-    public static final int SETTING_ITEM_SUB_DEVICE_ENERGY_DEVICES              = SETTING_ITEM_TYPE_BASE + 137;
-    public static final int SETTING_ITEM_SUB_DEVICE_SMART_KEY                   = SETTING_ITEM_TYPE_BASE + 138;
-    public static final int SETTING_ITEM_SUB_DEVICE_MULTI_SWITCH                = SETTING_ITEM_TYPE_BASE + 139;
-    public static final int SETTING_ITEM_SUB_DEVICE_ELECTRIC_CAR                = SETTING_ITEM_TYPE_BASE + 140;
-
-    public static final int SETTING_ITEM_SUB_DEVICE_LH_ADD_FUNCTION             = SETTING_ITEM_TYPE_BASE + 141;
-    public static final int SETTING_ITEM_SUB_DEVICE_LH_U_CITY                   = SETTING_ITEM_TYPE_BASE + 142;
-    public static final int SETTING_ITEM_SUB_DEVICE_ENERGY_SERVER_CONNECT       = SETTING_ITEM_TYPE_BASE + 143;
-    public static final int SETTING_ITEM_SUB_DEVICE_ZERO_ENERGY_HOUSE           = SETTING_ITEM_TYPE_BASE + 144;
-    public static final int SETTING_ITEM_SUB_DEVICE_SECURITY_INDOORMODE_SENSOR_USE = SETTING_ITEM_TYPE_BASE + 145; //재택모드 시 동체센서 사용
-    public static final int SETTING_ITEM_SUB_DEVICE_HANDICAPPED                 = SETTING_ITEM_TYPE_BASE + 146; //부가기능 - 장애인모드
-    public static final int SETTING_ITEM_SUB_DEVICE_ELEVATOR_MAINSCREEN_USE     = SETTING_ITEM_TYPE_BASE + 147;
-    public static final int SETTING_ITEM_SUB_DEVICE_BOOKMARK_TYPE               = SETTING_ITEM_TYPE_BASE + 148;
-    public static final int SETTING_ITEM_SUB_DEVICE_CALL_TIMEOUT                = SETTING_ITEM_TYPE_BASE + 149; //통화 타임아웃
-    public static final int SETTING_ITEM_SUB_DEVICE_DANJI_CONFIG                = SETTING_ITEM_TYPE_BASE + 150; //단지설정
-    public static final int SETTING_ITEM_SUB_DEVICE_WIRELESS_DOORLOCK_OPENDELAY = SETTING_ITEM_TYPE_BASE + 151; //무선 도어락 문열림 대기모드 사용
-    public static final int SETTING_ITEM_SUB_DEVICE_RENT_HOME                   = SETTING_ITEM_TYPE_BASE + 152; //임대세대(분리세대)
-    public static final int SETTING_ITEM_SUB_DEVICE_DANJI_RENT_HOME_USE         = SETTING_ITEM_TYPE_BASE + 153; //단지내 임대세대 사용
-    public static final int SETTING_ITEM_SUB_DEVICE_BLE_SMARTKEY                = SETTING_ITEM_TYPE_BASE + 154; //BLE스마트키
-    public static final int SETTING_ITEM_SUB_DEVICE_GATEWAY                     = SETTING_ITEM_TYPE_BASE + 155; //게이트웨이
-    public static final int SETTING_ITEM_SUB_DEVICE_DIMMING_KCC                 = SETTING_ITEM_TYPE_BASE + 156; //KCC디밍제어기
-
-    public static final int SETTING_ITEM_SUB_DEVICE_MANUAL		                = SETTING_ITEM_TYPE_BASE + 157; //매뉴얼
-    public static final int SETTING_ITEM_SUB_DEVICE_NEWSERVER		            = SETTING_ITEM_TYPE_BASE + 158; //신형단지서버 사용 유무
-    public static final int SETTING_ITEM_SUB_DEVICE_ESCAPE_LADDER_NOTI		    = SETTING_ITEM_TYPE_BASE + 159; //피난사다리 방송정보 알림(DB에는 피난사다리방송알림)
-    public static final int SETTING_ITEM_SUB_DEVICE_BAND_LOCATION               = SETTING_ITEM_TYPE_BASE + 160; // 밴드위치확인
-    public static final int SETTING_ITEM_SUB_DEVICE_CTR_SEQUENCE_LIMIT		    = SETTING_ITEM_TYPE_BASE + 161; //제어 시퀀스 제한(0~127)
-    public static final int SETTING_ITEM_SUB_DEVICE_HEAT_ONEDEVICE      		= SETTING_ITEM_TYPE_BASE + 162; //난방일체형
-    public static final int SETTING_ITEM_SUB_DEVICE_GAS_DETECT_5TIME			= SETTING_ITEM_TYPE_BASE + 163; //가스감지5회알람
-    public static final int SETTING_ITEM_SUB_DEVICE_SUBPHONE_BAUDRATE			= SETTING_ITEM_TYPE_BASE + 164; //서브폰통신속도
-    public static final int SETTING_ITEM_SUB_DEVICE_MAIN_GUI_SELECT 			= SETTING_ITEM_TYPE_BASE + 165; //메인 GUI 선택
-    public static final int SETTING_ITEM_SUB_DEVICE_DISTRIBUTION 			    = SETTING_ITEM_TYPE_BASE + 166; //분전반
-    public static final int SETTING_ITEM_SUB_DEVICE_SENSOR_AP        			= SETTING_ITEM_TYPE_BASE + 167; //센서 AP (미세먼지, CO2 센서)
-    public static final int SETTING_ITEM_SUB_DEVICE_INTERLAYER_NOISE 			= SETTING_ITEM_TYPE_BASE + 168; //층간소음 센서
-    public static final int SETTING_ITEM_SUB_DEVICE_RELIEF_CALL                 = SETTING_ITEM_TYPE_BASE + 169; //안심통화
-    public static final int SETTING_ITEM_SUB_DEVICE_REMOTE_CALL                 = SETTING_ITEM_TYPE_BASE + 170; //방문객원격통화
-    public static final int SETTING_ITEM_SUB_DEVICE_INNERROOM_DETECT_SENSOR     = SETTING_ITEM_TYPE_BASE + 171; //재실센서
-    public static final int SETTING_ITEM_SUB_DEVICE_GATEWAY_MODEL_KIND			= SETTING_ITEM_TYPE_BASE + 172; //게이트웨이모델 종류 선택
-    public static final int SETTING_ITEM_SUB_DEVICE_CARGUEST        			= SETTING_ITEM_TYPE_BASE + 173; //방문객차량등록
-    public static final int SETTING_ITEM_SUB_DEVICE_MOBILE_APP_USER_AUTH        = SETTING_ITEM_TYPE_BASE + 174; //모바일 앱 사용자 인증기능
-    public static final int SETTING_ITEM_SUB_DEVICE_INTEGRATED_SWITCH           = SETTING_ITEM_TYPE_BASE + 175; //통합스위치
-    public static final int SETTING_ITEM_SUB_DEVICE_ELECTRIC_RANGE              = SETTING_ITEM_TYPE_BASE + 176; //전기레인지
-    public static final int SETTING_ITEM_SUB_DEVICE_NON_INTERNET_SUPPORT        = SETTING_ITEM_TYPE_BASE + 177; //인터넷미지원
-    public static final int SETTING_ITEM_SUB_DEVICE_COOKTOP_CONCENT             = SETTING_ITEM_TYPE_BASE + 178; //쿡탑콘센트
-    public static final int SETTING_ITEM_SUB_DEVICE_SMARTPOST_USE               = SETTING_ITEM_TYPE_BASE + 179; //스마트우편함
-    public static final int SETTING_ITEM_SUB_DEVICE_SMARTKITCHEN_USE            = SETTING_ITEM_TYPE_BASE + 180; //스마트키친
-    public static final int SETTING_ITEM_SUB_DEVICE_EASYMODEUX_USE              = SETTING_ITEM_TYPE_BASE + 181; //간편모드UX지원
-    public static final int SETTING_ITEM_SUB_DEVICE_ESCAPELADDER_DOWN_SEND		= SETTING_ITEM_TYPE_BASE + 182; //피난사다리전송
-    public static final int SETTING_ITEM_SUB_DEVICE_LIVINGEM_KITCHEN_LIGHT		= SETTING_ITEM_TYPE_BASE + 183; //거실EM주방등
-    public static final int SETTING_ITEM_SUB_DEVICE_FACIAL_RECOG_MODULE 		= SETTING_ITEM_TYPE_BASE + 184; //안면인식 모듈
-    public static final int SETTING_ITEM_SUB_DEVICE_REMOTECALL_DOOROPEN_USE     = SETTING_ITEM_TYPE_BASE + 185; //방문객원격통화 - 현관문열림
-    public static final int SETTING_ITEM_SUB_DEVICE_REMOTECALL_HOMEVIEWER_USE   = SETTING_ITEM_TYPE_BASE + 186; //방문객원격통화 - 홈뷰어
-
-    public static final int SETTING_ITEM_SUB_DEVICE_SUBWALLPAD					= SETTING_ITEM_TYPE_BASE + 187; //서브월패드 설정
-    public static final int SETTING_ITEM_SUB_DEVICE_SUBWALLPAD_PSTN				= SETTING_ITEM_TYPE_BASE + 188; //서브월패드국선전화연동
-    public static final int SETTING_ITEM_SUB_DEVICE_SUBWALLPAD_LIGHT  			= SETTING_ITEM_TYPE_BASE + 189; //서브월패드조명연동
-    public static final int SETTING_ITEM_SUB_DEVICE_SUBWALLPAD_HEATER  			= SETTING_ITEM_TYPE_BASE + 190; //서브월패드난방연동
-    public static final int SETTING_ITEM_SUB_DEVICE_SUBWALLPAD_GAS  			= SETTING_ITEM_TYPE_BASE + 191; //서브월패드가스연동
-    public static final int SETTING_ITEM_SUB_DEVICE_SUBWALLPAD_DOORLOCK  		= SETTING_ITEM_TYPE_BASE + 192; //서브월패드도어락연동
-    public static final int SETTING_ITEM_SUB_DEVICE_SUBWALLPAD_VENTI  			= SETTING_ITEM_TYPE_BASE + 193; //서브월패드환기연동
-
-    public static final int SETTING_ITEM_SUB_DEVICE_STRANGER_RECORDING_USE      = SETTING_ITEM_TYPE_BASE + 194; //거동수상자녹화
-    public static final int SETTING_ITEM_SUB_DEVICE_EMERGENCY_CONTACT_SWITCH_USE = SETTING_ITEM_TYPE_BASE + 195; //비상접점스위치
-    public static final int SETTING_ITEM_SUB_DEVICE_SENDWEATHER_REVERSRE        = SETTING_ITEM_TYPE_BASE + 196; //서브폰날씨정보역순전송
-    public static final int SETTING_ITEM_SUB_DEVICE_SAFESTREETLIGHT_USE         = SETTING_ITEM_TYPE_BASE + 197; //안전가로등
-    public static final int SETTING_ITEM_SUB_DEVICE_BATHSENSOR_USE              = SETTING_ITEM_TYPE_BASE + 198; //욕실센서등
-    public static final int SETTING_ITEM_SUB_DEVICE_FRONT                       = SETTING_ITEM_TYPE_BASE + 199; //현관통화
-    public static final int SETTING_ITEM_SUB_DEVICE_LOBBY                       = SETTING_ITEM_TYPE_BASE + 200; //로비통화
-    public static final int SETTING_ITEM_SUB_DEVICE_GUARD                       = SETTING_ITEM_TYPE_BASE + 201; //경비통화
-    public static final int SETTING_ITEM_SUB_DEVICE_RESIDENCE                   = SETTING_ITEM_TYPE_BASE + 202; //이웃통화
-    public static final int SETTING_ITEM_SUB_DEVICE_PSTN                        = SETTING_ITEM_TYPE_BASE + 203; //국선통화
-    public static final int SETTING_ITEM_SUB_DEVICE_CALLHISTORY                 = SETTING_ITEM_TYPE_BASE + 204; //통화내역
-    public static final int SETTING_ITEM_SUB_DEVICE_VISITORPIC                  = SETTING_ITEM_TYPE_BASE + 205; //방문자사진
-    public static final int SETTING_ITEM_SUB_DEVICE_REMOTECALLSVR_WEBPORT       = SETTING_ITEM_TYPE_BASE + 206; //방문객원격통화WEB포트
-    public static final int SETTING_ITEM_SUB_DEVICE_LCDKEEPER_USE               = SETTING_ITEM_TYPE_BASE + 207; //LCD Keeper
-    public static final int SETTING_ITEM_SUB_DEVICE_VENTI_SERVICE_QR            = SETTING_ITEM_TYPE_BASE + 208; //환기케어서비스QR
-    public static final int SETTING_ITEM_SUB_DEVICE_THEDISABLED_HOME            = SETTING_ITEM_TYPE_BASE + 209; //장애인세대
-    public static final int SETTING_ITEM_SUB_DEVICE_CO2_REDUCTION               = SETTING_ITEM_TYPE_BASE + 210; // 이산화탄소절감률
-    public static final int SETTING_ITEM_SUB_DEVICE_HEATLIGHTROOM_NAMESET       = SETTING_ITEM_TYPE_BASE + 211; //난방조명방명칭설정
-    public static final int SETTING_ITEM_SUB_DEVICE_SMARTSWITCH_ENERGY          = SETTING_ITEM_TYPE_BASE + 212; //스마트스위치에너지종류
-    public static final int SETTING_ITEM_SUB_DEVICE_PURITY                      = SETTING_ITEM_TYPE_BASE + 213; //청정환기
-    public static final int SETTING_ITEM_SUB_DEVICE_LOUVER                      = SETTING_ITEM_TYPE_BASE + 214; //전동루버
-    public static final int SETTING_ITEM_SUB_DEVICE_BIOMETICS                   = SETTING_ITEM_TYPE_BASE + 215; //생체인식
-    public static final int SETTING_ITEM_SUB_DEVICE_POWERCONTROLLER             = SETTING_ITEM_TYPE_BASE + 216; //통합전력제어기
-    public static final int SETTING_ITEM_SUB_DEVICE_LH_GATEWAY                  = SETTING_ITEM_TYPE_BASE + 217; //LH게이트웨이
-    public static final int SETTING_ITEM_SUB_DEVICE_KAKAO_HOME                  = SETTING_ITEM_TYPE_BASE + 218; //카카오홈설정
-    public static final int SETTING_ITEM_SUB_DEVICE_SMARTIOTCAM_FLIP            = SETTING_ITEM_TYPE_BASE + 219; //스마트현관카메라좌우반전
-    public static final int SETTING_ITEM_SUB_DEVICE_CONSTRUCTION_SPECIAL_FUNC   = SETTING_ITEM_TYPE_BASE + 220; //건설사특화기능
-    public static final int SETTING_ITEM_SUB_DEVICE_MAIN_GUI_CTRL_USE           = SETTING_ITEM_TYPE_BASE + 221; //제어기능
-
-    public static final String[] SUB_DEVICE_ITEM_ID = {
-            "가스밸브"
-            , "디지털도어락"
-            , "온도조절기"
-            , "조명제어기"
-            , "환기시스템"
-            , "시스템에어컨"
-            , "전동커튼"
-            , "실시간검침기"
-            , "스마트스위치&일괄소등"
-            , "무선리모컨"
-            , "현관카메라"
-            , "공지사항"
-            , "날씨"
-            , "메모"
-            , "전자액자"
-            , "일정표"
-            , "주차확인"
-            , "시간설정"
-            , "원격검침"
-            , "뮤직"
-            , "영상재생"
-            , "CCTV"
-            , "명칭설정"
-            , "출동경비"
-            , "경비실영상통화"
-            , "엘리베이터"
-            , "현장특화기능"
-            , "월패드카메라"
-            , "무드등"
-            , "피난사다리"
-            , "동체설정"
-            , "알람발생"
-            , "서브폰국선연동"
-            , "현관폰사운드출력음량"
-            , "아이파크에너지"
-            , "대기전력차단스위치"
-            , "에너지모듈"
-            , "에너지제품군"
-            , "스마트키"
-            , "멀티스위치"
-            , "전기차충전"
-            , "LH특화기능"
-            , "U-City"
-            , "에너지관리서버"
-            , "제로에너지하우스"
-            , "재택모드시동체센서사용"
-            , "장애인모드"
-            , "엘리베이터핫키"
-            , "즐겨찾기아이콘종류"
-            , "통화타임아웃"
-            , "IP대역확장"
-            , "무선도어락문열림대기모드"
-            , "임대세대"
-            , "단지내임대세대"
-            , "BLE스마트키"
-            , "게이트웨이"
-            , "KCC디밍제어기"
-            , "매뉴얼"
-            , "신형단지서버"
-            , "피난사다리방송알림"
-            , "밴드위치확인"
-            , "제어시퀀스제한"
-            , "난방일체형"
-            , "가스감지5회알람"
-            , "서브폰통신속도"
-            , "메인GUI선택"
-            , "분전반"
-            , "센서AP"
-            , "층간소음센서"
-            , "안심통화"
-            , "방문객원격통화"
-            , "재실센서"
-            , "게이트웨이모델"
-            , "방문객차량등록"
-            , "모바일앱사용자인증"
-            , "통합스위치"
-            , "전기레인지"
-            , "인터넷미지원"
-            , "쿡탑콘센트"
-            , "스마트우편함"
-            , "스마트키친"
-            , "간편모드UX지원"
-            , "피난사다리전송"
-            , "거실EM주방등"
-            , "안면인식모듈"
-            , "방문객원격통화-현관문열림"
-            , "방문객원격통화-홈뷰어"
-            , "서브월패드"
-            , "서브월패드국선전화연동"
-            , "서브월패드조명연동"
-            , "서브월패드난방연동"
-            , "서브월패드가스연동"
-            , "서브월패드도어락연동"
-            , "서브월패드환기연동"
-            , "거동수상자녹화"
-            , "비상접점스위치"
-            , "서브폰날씨정보역순전송"
-            , "안전가로등"
-            , "욕실센서등"
-            , "현관"
-            , "로비"
-            , "경비"
-            , "이웃"
-            , "국선"
-            , "통화내역"
-            , "방문자사진"
-            , "방문객원격통화WEB포트"
-            , "LCDKEEPER"
-            , "환기케어서비스QR"
-            , "장애인세대"
-            , "이산화탄소절감률"
-            , "난방조명방명칭설정"
-            , "스마트스위치에너지종류"
-            , "청정환기"
-            , "전동루버"
-            , "생체인식"
-            , "통합전력제어기"
-            , "LH게이트웨이"
-            , "카카오홈"
-            , "스마트현관카메라좌우반전"
-            , "건설사특화기능"
-            , "제어기능"
-    };
-
-
-
-    public static final int SETTING_ITEM_APP_BASE = 201;
-    public static final int SETTING_ITEM_APP_WALLPADCONFIG      = SETTING_ITEM_APP_BASE + 0;
-    public static final int SETTING_ITEM_APP_DEVICESERVICE      = SETTING_ITEM_APP_BASE + 1;
-    public static final int SETTING_ITEM_APP_WALLPADEMERGENCY   = SETTING_ITEM_APP_BASE + 2;
-    public static final int SETTING_ITEM_APP_WALLPADENERGYCTRL  = SETTING_ITEM_APP_BASE + 3;
-    public static final int SETTING_ITEM_APP_WALLPADHOMECTRL    = SETTING_ITEM_APP_BASE + 4;
-    public static final int SETTING_ITEM_APP_WALLPADMAIN        = SETTING_ITEM_APP_BASE + 5;
-    public static final int SETTING_ITEM_APP_WALLPADOUTMODERUN  = SETTING_ITEM_APP_BASE + 6;
-    public static final int SETTING_ITEM_APP_WALLPADSECURITY    = SETTING_ITEM_APP_BASE + 7;
-    public static final int SETTING_ITEM_APP_IC_WALLPAD         = SETTING_ITEM_APP_BASE + 8;
-    public static final int SETTING_ITEM_APP_MANAGERSETTING     = SETTING_ITEM_APP_BASE + 9;
-    public static final int SETTING_ITEM_APP_WALLPADADDSERVICE  = SETTING_ITEM_APP_BASE + 10;
-
-    public static final int SETTING_ITEM_APP_WALLPADAUTOPICTURE = SETTING_ITEM_APP_BASE + 11;
-    public static final int SETTING_ITEM_APP_WALLPADLOGOUTPUT   = SETTING_ITEM_APP_BASE + 12;
-    public static final int SETTING_ITEM_APP_WALLPADUPDATER     = SETTING_ITEM_APP_BASE + 13;
-    public static final int SETTING_ITEM_APP_WALLPADAPPUPDATER  = SETTING_ITEM_APP_BASE + 14;
-
-
-
-    private Context mContext;
-    private Handler mHandler;
-    private int ModelType = Version.getModelType();
-
-    // constructor
-    public MainDatabaseManager(Context context, Handler handler, Object obj) {
-        mContext = context;
-        mHandler = handler;
-
-
-        if (mContext == null)
-            if (DEBUG)  Log.d(TAG, "MainDatabaseManager() (mContext == null)");
-            else
-            if (DEBUG)  Log.d(TAG, "MainDatabaseManager() (mContext != null)");
-
-        loadGuardList();
-    }
-
-
-    // return Context
-    public Context getContext() {
-        return mContext;
-    }
-
-
-    // return 동 BaseNumber
-    public int getDongBaseNumber() {
-        int ret = -1;
-
-        wallpaddbmgr dbmgr = new wallpaddbmgr(mContext);
-        AddressSet addc =  dbmgr.getAddressMGR();
-        dbmgr.closeDB();
-
-        int nDong = StringUtil.getInt(addc.Dong, false);
-        if (nDong > -1)
-            ret = (nDong/100) * 100;
-
-        return ret;
-    }
-
-
-    // return 동
-    public String getDongString() {
-        String result = "";
-
-        wallpaddbmgr dbmgr = new wallpaddbmgr(mContext);
-        AddressSet addc =  dbmgr.getAddressMGR();
-        dbmgr.closeDB();
-
-        result = addc.Dong;
-
-        if (DEBUG)  Log.d(TAG, "Dong : " + addc.Dong);
-        return result;
-    }
-
-
-    // return 호
-    public String getHoString() {
-        String result = "";
-
-        wallpaddbmgr dbmgr = new wallpaddbmgr(mContext);
-        AddressSet addc =  dbmgr.getAddressMGR();
-        dbmgr.closeDB();
-
-        result = addc.Ho;
-
-        if (DEBUG)  Log.d(TAG, "Ho : " + addc.Ho);
-        return result;
-    }
-
-
-
-
-
-
-
-
-
-    private List<GuardInfo> mGuardList = new ArrayList<GuardInfo>();
-
-    public class GuardInfo {
-        public static final int GUARD_TYPE_JURISDICTION         = 1;    //GuardAction.ACTION_JURISDICTION_GUARD;
-        public static final int GUARD_TYPE_FRONT_GATE           = 2;    //GuardAction.ACTION_FRONT_GATE_GUARD;
-        public static final int GUARD_TYPE_BACK_GATE            = 3;    //GuardAction.ACTION_BACK_GATE_GUARD;
-        public static final int GUARD_TYPE_MANAGEMENT_OFFICE    = 4;    //GuardAction.ACTION_MANAGEMENT_OFFICE;
-        public static final int GUARD_TYPE_ETC                  = 9;
-
-        private String mName;
-        private String mDong;
-        private String mHo;
-        private String mIP;
-        private int mType = GUARD_TYPE_ETC;
-        private String mSipID;
-
-        // constructor
-        public GuardInfo(String name, String dong, String ho, String ip, int type, String sipID) {
-            mName = name;
-            mDong = dong;
-            mHo = ho;
-            mIP = ip;
-            mType = type;
-            mSipID = sipID;
-        }
-
-        // set IP
-        public void setIP(String ip) {
-            mIP = ip;
-        }
-
-        // set Type
-        public void setType(int type) {
-            mType= type;
-        }
-
-        // set SipID
-        public void setSipID(String sipID) {
-            mSipID = sipID;
-        }
-
-
-        // get Name
-        public String getName() {
-            return mName;
-        }
-
-        // get IP
-        public String getIP() {
-            return mIP;
-        }
-
-        // get Type
-        public int getType() {
-            return mType;
-        }
-
-        // get SipID
-        public String getSipID() {
-            return mSipID;
-        }
-
-        // get 동
-        public String getDong() {
-            return mDong;
-        }
-
-        // get 호
-        public String getHo() {
-            return mHo;
-        }
-    }
-
-
-    // Forward Call을 수행할 GuardInfo를 return
-    public GuardInfo getForwardGuard() {
-        if (DEBUG)  Log.d(TAG, " getForwardGuard()");
-
-        if (mGuardList.size() > 0) {
-            for (int i=0; i<mGuardList.size(); i++) {
-                if (mGuardList.get(i).getType() == GuardInfo.GUARD_TYPE_JURISDICTION)
-                    return mGuardList.get(i);
-            }
-
-            return mGuardList.get(0);
-        }
-
-        return null;
-    }
-
-
-    // return GuardList
-    public List<GuardInfo>  getGuardList() {
-        return mGuardList;
-    }
-
-
-    // load GuardList
-    public void  loadGuardList() {
-        mGuardList.clear();
-
-        List<String[]> guardList = getSettingDataList(SETTING_ITEM_GUARD_LIST);
-        if (guardList != null) {
-            for (int i=0; i<guardList.size(); i++) {
-                GuardInfo guardInfo = createGuardInfo(guardList.get(i)[0], guardList.get(i)[1]);
-                if (guardInfo != null)
-                    mGuardList.add(guardInfo);
-            }
-        }
-        else {
-            GuardInfo guardInfo = getDefaultGuardInfo();
-            if (guardInfo != null)
-                mGuardList.add(guardInfo);
-        }
-
-        if (DEBUG)  {
-            Log.d(TAG, " mGuardList.size() : " + mGuardList.size());
-
-            for (int i=0; i<mGuardList.size(); i++) {
-                Log.d(TAG, " mGuardList.get(" + i + ") name : " + mGuardList.get(i).getName()
-                        + ", ip : " + mGuardList.get(i).getIP()
-                        + ", type : " + mGuardList.get(i).getType()
-                        + ", sipID : " + mGuardList.get(i).getSipID()
-                );
-            }
-        }
-    }
-
-
-    // get GuardName By Type
-    public String getGuardNameByType(int guardType) {
-        String strName = null;
-
-        switch (guardType) {
-            case GuardInfo.GUARD_TYPE_JURISDICTION:
-                strName = mContext.getString(R.string.guard_jurisdiction_name);
-                break;
-
-            case GuardInfo.GUARD_TYPE_FRONT_GATE:
-                strName = mContext.getString(R.string.guard_front_gate_name);
-                break;
-
-            case GuardInfo.GUARD_TYPE_BACK_GATE:
-                strName = mContext.getString(R.string.guard_back_gate_name);
-                break;
-
-            case GuardInfo.GUARD_TYPE_MANAGEMENT_OFFICE:
-                strName = mContext.getString(R.string.guard_management_office_name);
-                break;
-
-            case GuardInfo.GUARD_TYPE_ETC:
-                strName = mContext.getString(R.string.guard_etc_name);
-                break;
-        }
-
-        return strName;
-    }
-
-
-    // get GuardType By Name
-    public int getGuardTypeByName(String strName) {
-        int guardType = GuardInfo.GUARD_TYPE_ETC;
-
-        if (mContext.getString(R.string.guard_jurisdiction_name).equals(strName)) {
-            guardType = GuardInfo.GUARD_TYPE_JURISDICTION;
-        }
-        else if (mContext.getString(R.string.guard_front_gate_name).equals(strName)) {
-            guardType = GuardInfo.GUARD_TYPE_FRONT_GATE;
-        }
-        else if (mContext.getString(R.string.guard_back_gate_name).equals(strName)) {
-            guardType = GuardInfo.GUARD_TYPE_BACK_GATE;
-        }
-        else if (mContext.getString(R.string.guard_management_office_name).equals(strName)) {
-            guardType = GuardInfo.GUARD_TYPE_MANAGEMENT_OFFICE;
-        }
-
-        return guardType;
-    }
-
-
-    // get GuardType By SipID
-    public int getGuardTypeByID(String strSipID) {
-        int guardType = GuardInfo.GUARD_TYPE_ETC;
-
-
-        if (mGuardList != null) {
-            for (int i=0; i < mGuardList.size(); i++) {
-                if (mGuardList.get(i).getSipID().equals(strSipID)) {
-                    guardType = mGuardList.get(i).getType();
-                    break;
-                }
-            }
-        }
-
-        return guardType;
-    }
-
-
-    // get GuardInfo By SipID
-    public GuardInfo getGuardByID(String strSipID) {
-        GuardInfo guardInfo = null;
-
-        if (mGuardList != null) {
-            for (int i=0; i < mGuardList.size(); i++) {
-                if (mGuardList.get(i).getSipID().equals(strSipID)) {
-                    guardInfo = mGuardList.get(i);
-                    break;
-                }
-            }
-        }
-
-        return guardInfo;
-    }
-
-
-
-
-    // get default GuardInfo
-    private GuardInfo getDefaultGuardInfo() {
-        if (DEBUG)  Log.d(TAG, " getDefaultGuardInfo()");
-
-        GuardInfo guardInfo = null;
-
-        if (mContext == null)
-            if (DEBUG)  Log.d(TAG, " (mContext == null)");
-            else
-            if (DEBUG)  Log.d(TAG, " (mContext != null)");
-
-
-        String strName = "";
-        if(mContext!=null)
-            strName = mContext.getString(R.string.guard_jurisdiction_name);
-        int baseDongIP = -1;
-        if(mContext!=null)
-            baseDongIP = NetworkUtil.getDongBaseNumber(mContext);
-
-        if (baseDongIP > -1) {
-            String myIP =  NetworkUtil.getMyIP(mContext);
-            String[] arrString = StringUtil.split(myIP, ".");
-            if (arrString!=null && arrString.length > 3) {
-
-                if (DEBUG)  Log.d(TAG, " arrString.length : " + arrString.length);
-
-                if (DEBUG)  Log.d(TAG, " arrString[0] : " + arrString[0]);
-                if (DEBUG)  Log.d(TAG, " arrString[1] : " + arrString[1]);
-                if (DEBUG)  Log.d(TAG, " arrString[2] : " + arrString[2]);
-                if (DEBUG)  Log.d(TAG, " arrString[3] : " + arrString[3]);
-
-                int nDongIP = Const.DEFAULT_GUARD_IP_SECOND; //StringUtil.getInt(arrString[1], false);
-                if (nDongIP > -1) {
-                    String strDong = String.valueOf(nDongIP + baseDongIP);
-
-                    String strIP = arrString[0] + "."
-                            + nDongIP + "."
-                            + Const.DEFAULT_GUARD_IP_THIRD+ "."
-                            + Const.DEFAULT_GUARD_IP_FORTH;
-
-                    if (DEBUG)  Log.d(TAG, " strIP : " + strIP);
-
-                    String strSipID = makeSipID(Const.CALL_TYPE_GUARD, strDong, String.valueOf(Const.DEFAULT_GUARD_IP_FORTH));
-
-                    guardInfo = new GuardInfo(strName
-                            , strDong
-                            , "" + Const.DEFAULT_GUARD_IP_FORTH
-                            , strIP
-                            , GuardInfo.GUARD_TYPE_JURISDICTION
-                            , strSipID
-                    );
-                }
-            }
-        }
-
-        return guardInfo;
-    }
-
-
-
-    // create GuardInfo
-    private GuardInfo createGuardInfo(String strName, String strID) {
-        if (DEBUG)  Log.d(TAG, " createGuardInfo() strName : " + strName
-                + ", strID : " + strID
-        );
-
-        GuardInfo guardInfo = null;
-        boolean UseIP_Expantion = isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DANJI_CONFIG);
-
-        if(UseIP_Expantion == false) //IP대역 확장 사용하지 않는 경우
-        {
-            if ((strID.length() <= 2) || (strID.length() > 4)) {
-                return null;
-            }
-
-            int baseDongIP = NetworkUtil.getDongBaseNumber(mContext);
-            int guardType = getGuardTypeByName(strName);
-
-            int splitIdx = 2;
-            if (strID.length() == 3)
-                splitIdx = 1;
-
-            String strDongIP = strID.substring(0, splitIdx);
-            String strHo = strID.substring(splitIdx, strID.length());
-
-            int nDongIP = StringUtil.getInt(strDongIP, false);
-
-            if ((baseDongIP > -1) && (nDongIP > -1)) {
-                String myIP =  NetworkUtil.getMyIP(mContext);
-                String[] arrString = StringUtil.split(myIP, ".");
-                if (arrString!=null && arrString.length > 3) {
-
-                    if (DEBUG)  Log.d(TAG, " arrString.length : " + arrString.length);
-
-                    if (DEBUG)  Log.d(TAG, " arrString[0] : " + arrString[0]);
-                    if (DEBUG)  Log.d(TAG, " arrString[1] : " + arrString[1]);
-                    if (DEBUG)  Log.d(TAG, " arrString[2] : " + arrString[2]);
-                    if (DEBUG)  Log.d(TAG, " arrString[3] : " + arrString[3]);
-
-                    String strDong = String.valueOf(nDongIP + baseDongIP);
-                    String strIP = arrString[0] + "."
-                            + nDongIP + "."
-                            + Const.DEFAULT_GUARD_IP_THIRD+ "."
-                            + strHo;
-
-                    if (DEBUG)  Log.d(TAG, strName + " : " + strIP);
-
-                    String strSipID = makeSipID(Const.CALL_TYPE_GUARD, strDong, strHo);
-
-                    guardInfo = new GuardInfo(strName
-                            , strDong
-                            , strHo
-                            , strIP
-                            , guardType
-                            , strSipID);
-                }
-            }
-
-            return guardInfo;
-        }
-        else // IP확장 사용 하는 경우
-        {
-            int guardType = getGuardTypeByName(strName);
-
-            String[] arrString = StringUtil.split(strID, ".");
-            String strDong = null;
-            String strHo = null;
-
-            if (arrString.length > 3)
-            {
-                int[] tempInt = new int[4];
-                tempInt[0] = Integer.parseInt(arrString[0]);
-                tempInt[1] = Integer.parseInt(arrString[1]);
-                tempInt[2] = Integer.parseInt(arrString[2]);
-                tempInt[3] = Integer.parseInt(arrString[3]);
-
-                int IntDong = (tempInt[0] * 100) + tempInt[1];
-                strDong = String.valueOf(IntDong);
-                strHo = arrString[3];
-
-                String strSipID = makeSipID(Const.CALL_TYPE_GUARD, strDong, strHo);
-                String strIP = strID;
-
-                guardInfo = new GuardInfo(strName, strDong, strHo, strIP, guardType, strSipID);
-            }
-        }
-
-        return guardInfo;
-
-    }
-
-
-
-    // make GuardInfo
-    public GuardInfo makeGuardInfo(int guardType, String strSipID) {
-        if (DEBUG)  Log.d(TAG, " makeGuardInfo() guardType : " + guardType
-                + ", strSipID : " + strSipID
-        );
-
-        if ((strSipID == null) || (strSipID.length() < 20)) {
-            return null;
-        }
-
-        GuardInfo guardInfo = null;
-
-
-        String[] arrDongHo = StringUtil.getDongHo(mContext, strSipID);
-        if ((arrDongHo != null) && (arrDongHo.length > 4)) {
-            String strDong = "" + StringUtil.getInt(arrDongHo[2], false);
-            String strHo = "" + StringUtil.getInt(arrDongHo[3], false);
-
-            int baseDongIP = NetworkUtil.getDongBaseNumber(mContext);
-            String strName = getGuardNameByType(guardType);
-
-            if (DEBUG)  Log.d(TAG, " strName : " + strName);
-
-            int splitIdx = 2;
-
-            int nDongIP = StringUtil.getInt(strDong, false);
-
-            if ((baseDongIP > -1) && (nDongIP > -1)) {
-                String myIP =  NetworkUtil.getMyIP(mContext);
-                String[] arrString = StringUtil.split(myIP, ".");
-                if (arrString!=null && arrString.length > 3) {
-
-                    if (DEBUG)  Log.d(TAG, " arrString.length : " + arrString.length);
-
-                    if (DEBUG)  Log.d(TAG, " arrString[0] : " + arrString[0]);
-                    if (DEBUG)  Log.d(TAG, " arrString[1] : " + arrString[1]);
-                    if (DEBUG)  Log.d(TAG, " arrString[2] : " + arrString[2]);
-                    if (DEBUG)  Log.d(TAG, " arrString[3] : " + arrString[3]);
-
-                    nDongIP = nDongIP - baseDongIP;
-                    String strIP = arrString[0] + "."
-                            + nDongIP + "."
-                            + Const.DEFAULT_GUARD_IP_THIRD+ "."
-                            + strHo;
-
-                    if (DEBUG)  Log.d(TAG, strName + " : " + strIP);
-
-                    guardInfo = new GuardInfo(strName
-                            , strDong
-                            , strHo
-                            , strIP
-                            , guardType
-                            , strSipID);
-                }
-            }
-        }
-
-        return guardInfo;
-    }
-
-
-/*
-    public String getSipIPByID(String strSipID) {
-        String strIP = null;
-
-        int sipCallType = SipCallController.getSipCallTypeByID(strSipID);
-        switch (sipCallType) {
-            case Const.CALL_TYPE_LOBBY:
-                strIP = getLobbyIPByID(strSipID);
-                break;
-
-            case Const.CALL_TYPE_GUARD:
-                strIP = getGuardIPByID(strSipID);
-                break;
-
-            case Const.CALL_TYPE_NEIB:
-                strIP = getNeiIPByID(strSipID);
-                break;
-        }
-
-        return strIP;
-    }
-*/
-
-
-    // get LobbyIP By SipID
-    public String getLobbyIPByID(String strSipID) {
-        if (DEBUG)  Log.d(TAG, " getLobbyIPByID() strSipID : " + strSipID);
-
-        if ((strSipID == null) || (strSipID.length() < 20)) {
-            return null;
-        }
-
-        String strIP = null;
-
-        String[] arrDongHo = StringUtil.getDongHo(mContext, strSipID);
-        if ((arrDongHo != null) && (arrDongHo.length > 4)) {
-            int nDongIP = StringUtil.getInt(arrDongHo[2], false);
-            int nHo = StringUtil.getInt(arrDongHo[3], false);
-
-            int nIP_Third = -1;
-            int nIP_Forth = -1;
-            if (nHo > -1) {
-                nIP_Third = (nHo/100);
-                nIP_Forth = (nHo - (nIP_Third *100));
-            }
-
-            int baseDongIP = getDongBaseNumber();
-
-            if ((baseDongIP > -1) && (nDongIP > -1) && (nIP_Third > -1) && (nIP_Forth > -1)) {
-                String myIP =  NetworkUtil.getMyIP(mContext);
-                String[] arrString = StringUtil.split(myIP, ".");
-                if (arrString!=null && arrString.length > 3) {
-
-                    if (DEBUG)  Log.d(TAG, " arrString.length : " + arrString.length);
-
-                    if (DEBUG)  Log.d(TAG, " arrString[0] : " + arrString[0]);
-                    if (DEBUG)  Log.d(TAG, " arrString[1] : " + arrString[1]);
-                    if (DEBUG)  Log.d(TAG, " arrString[2] : " + arrString[2]);
-                    if (DEBUG)  Log.d(TAG, " arrString[3] : " + arrString[3]);
-
-                    nDongIP = nDongIP - baseDongIP;
-                    strIP = arrString[0] + "."
-                            + nDongIP + "."
-                            + Const.DEFAULT_LOBBY_IP_THIRD+ "."
-                            + nIP_Forth;
-
-                }
-            }
-        }
-
-        return strIP;
-    }
-
-
-    // get NeiIP By SipID
-    public String getNeiIPByID(String strSipID) {
-        if (DEBUG)  Log.d(TAG, " getNeiIPByID() strSipID : " + strSipID);
-
-        if ((strSipID == null) || (strSipID.length() < 20)) {
-            return null;
-        }
-
-        String strIP = null;
-
-        String[] arrDongHo = StringUtil.getDongHo(mContext, strSipID);
-        if ((arrDongHo != null) && (arrDongHo.length > 4)) {
-            int nDongIP = StringUtil.getInt(arrDongHo[2], false);
-            int nHo = StringUtil.getInt(arrDongHo[3], false);
-
-            int nIP_Third = -1;
-            int nIP_Forth = -1;
-            if (nHo > -1) {
-                nIP_Third = (nHo/100);
-                nIP_Forth = (nHo - (nIP_Third *100));
-            }
-
-            int baseDongIP = getDongBaseNumber();
-
-            if ((baseDongIP > -1) && (nDongIP > -1) && (nIP_Third > -1) && (nIP_Forth > -1)) {
-                String myIP =  NetworkUtil.getMyIP(mContext);
-                String[] arrString = StringUtil.split(myIP, ".");
-                if (arrString!=null && arrString.length > 3) {
-
-                    if (DEBUG)  Log.d(TAG, " arrString.length : " + arrString.length);
-
-                    if (DEBUG)  Log.d(TAG, " arrString[0] : " + arrString[0]);
-                    if (DEBUG)  Log.d(TAG, " arrString[1] : " + arrString[1]);
-                    if (DEBUG)  Log.d(TAG, " arrString[2] : " + arrString[2]);
-                    if (DEBUG)  Log.d(TAG, " arrString[3] : " + arrString[3]);
-
-                    nDongIP = nDongIP - baseDongIP;
-                    strIP = arrString[0] + "."
-                            + nDongIP + "."
-                            + nIP_Third + "."
-                            + nIP_Forth;
-
-                }
-            }
-        }
-
-        return strIP;
-    }
-
-
-    // get GuardIP By SipID
-    public String getGuardIPByID(String strSipID) {
-        if (DEBUG)  Log.d(TAG, " getGuardIPByID() strSipID : " + strSipID);
-
-        if ((strSipID == null) || (strSipID.length() < 20)) {
-            return null;
-        }
-
-        String strIP = null;
-
-        GuardInfo GuardInfo = getGuardByID(strSipID);
-        if (GuardInfo != null)
-            strIP = GuardInfo.getIP();
-
-        return strIP;
-    }
-
-
-    // make SipID
-    public String makeSipID(int sipCallType, String strDong, String strHo) {
-        if (DEBUG)  Log.d(TAG, " makeSipID() sipCallType : " + sipCallType
-                + ", strDong : " + strDong
-                + ", strHo : " + strHo
-        );
-
-        String ret = "";
-
-        String strSiteCode = getSettingData(SETTING_ITEM_SITE_CODE);
-        if ((strSiteCode == null) || (strSiteCode.length() == 0))
-            strSiteCode = Const.SITE_CODE_DEFAULT_VALUE;
-
-        String strType = "";
-        switch(sipCallType) {
-            case Const.CALL_TYPE_LOBBY:
-                strType = Const.SIP_LOBBY_DEVICE_TYPE;
-                break;
-
-            case Const.CALL_TYPE_GUARD:
-                strType = Const.SIP_GUARD_DEVICE_TYPE;
-                break;
-
-            default:
-            case Const.CALL_TYPE_NEIB:
-                strType = Const.SIP_NEI_DEVICE_TYPE;
-                break;
-        }
-
-        for (int i = 4 - strDong.length(); i > 0; i--) {
-            strDong = "0" + strDong;
-        }
-
-        for (int i = 4 - strHo.length(); i > 0; i--) {
-            strHo = "0" + strHo;
-        }
-
-        String strPostNumber = "01";
-
-        ret = strSiteCode + "_"
-                + strType + "_"
-                + strDong + "_"
-                + strHo + "_"
-                + strPostNumber
-        ;
-
-        if (DEBUG)  Log.d(TAG, " makeSipID() ret : " + ret);
-
-        return ret;
-    }
-
-
-
-
-
-
-
-
-
-    // 외출모드 여부
-    public boolean isGoOutMode() {
-        boolean ret = false;
-
-        WallpadStatusData wallpadStatusData = new WallpadStatusData(mContext);
-
-        try {
-            if (wallpadStatusData.GetAlarmStatus() == WallpadStatusData.GUARD_OUT)
-                ret = true;
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
-        }
-        catch (Exception e) {
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
-        }
-
-        wallpadStatusData.closeDB();
-
-        if (DEBUG)  Log.d(TAG, " isGoOutMode() " + ret);
-
-        return ret;
-    }
-
-
-
-/*
-        public String[] GetSettingData(String Name)
-        {
-               String query = "select name, value from "+SettingTBL+" where name = \""+Name+"\";";
-               Cursor cursor = wdb.rawQuery(query, null);
-               while (cursor.moveToNext())
-               {
-                       String[] getdata = new String[]{cursor.getString(0),cursor.getString(1)};
-                       return getdata;
-               }
-               return null;
-        }
-*/
-
-
-    // get SettingData
-    public String getSettingData(int itemType) {
-        if (DEBUG)  Log.d(TAG, " getSettingData() itemType : " + itemType);
-
-        int Data_or_Version = 0; //1이면 APP버전정보, 0이면 기타.
-        String ret = null;
-        String[] getData = null;
-        String getVersion = null;
-        wallpaddbmgr WallpadDBMGR = new wallpaddbmgr(mContext);
-        WallpadDeviceSet devset = new WallpadDeviceSet(mContext);
-
-        if (devset != null) {
-            switch (itemType) {
-                case SETTING_ITEM_VER_SETTING:
-                    getData = devset.GetSettingData("ver_setting");
-                    break;
-
-                case SETTING_ITEM_LOG_ENABLE:
-                    getData = devset.GetSettingData("log_enable");
-                    break;
-
-                case SETTING_ITEM_BEAT_TIME:
-                    getData = devset.GetSettingData("beat_time");
-                    break;
-
-                case SETTING_ITEM_DATETIME:
-                    getData = devset.GetSettingData("datetime");
-                    break;
-
-//                case SETTING_ITEM_SECURITY_STATE:
-//                    getData = devset.GetSettingData("security_state");
-//                    break;
-
-                case SETTING_ITEM_SITE_CODE:
-                    getData = devset.GetSettingData("site_code");
-                    break;
-
-
-                case SETTING_ITEM_APP_WALLPADCONFIG:
-                    getVersion = WallpadDBMGR.GetVersionData(Const.AppName_WallPadConfig);
-                    Data_or_Version = 1;
-                    break;
-
-                case SETTING_ITEM_APP_DEVICESERVICE:
-                    getVersion = WallpadDBMGR.GetVersionData(Const.AppName_WallPadDeviceService);
-                    Data_or_Version = 1;
-                    break;
-
-                case SETTING_ITEM_APP_WALLPADEMERGENCY:
-                    getVersion = WallpadDBMGR.GetVersionData(Const.AppName_WallPadEmergency);
-                    Data_or_Version = 1;
-                    break;
-
-                case SETTING_ITEM_APP_WALLPADENERGYCTRL:
-                    getVersion = WallpadDBMGR.GetVersionData(Const.AppName_WallPadEnergyCtrl);
-                    Data_or_Version = 1;
-                    break;
-
-                case SETTING_ITEM_APP_WALLPADHOMECTRL:
-                    getVersion = WallpadDBMGR.GetVersionData(Const.AppName_WallPadHomeCtrl);
-                    Data_or_Version = 1;
-                    break;
-
-                case SETTING_ITEM_APP_WALLPADMAIN:
-                    getVersion = WallpadDBMGR.GetVersionData(Const.AppName_WallPadMain);
-                    Data_or_Version = 1;
-                    break;
-
-                case SETTING_ITEM_APP_WALLPADOUTMODERUN:
-                    getVersion = WallpadDBMGR.GetVersionData(Const.AppName_WallPadOutModerun);
-                    Data_or_Version = 1;
-                    break;
-
-                case SETTING_ITEM_APP_WALLPADSECURITY:
-                    getVersion = WallpadDBMGR.GetVersionData(Const.AppName_WallPadSecurity);
-                    Data_or_Version = 1;
-                    break;
-
-                case SETTING_ITEM_APP_IC_WALLPAD:
-                    getVersion = WallpadDBMGR.GetVersionData(Const.AppName_WallPadCall_hdc);
-                    Data_or_Version = 1;
-                    break;
-
-                case SETTING_ITEM_APP_MANAGERSETTING:
-                    getVersion = WallpadDBMGR.GetVersionData(Const.AppName_WallPadManagerSetting);
-                    Data_or_Version = 1;
-                    break;
-
-                case SETTING_ITEM_APP_WALLPADADDSERVICE:
-                    getVersion = WallpadDBMGR.GetVersionData(Const.AppName_WallPadAddservice);
-                    Data_or_Version = 1;
-                    break;
-
-                case SETTING_ITEM_APP_WALLPADAUTOPICTURE:
-                    getVersion = WallpadDBMGR.GetVersionData(Const.AppName_WallPadAutopicture);
-                    Data_or_Version = 1;
-                    break;
-
-                case SETTING_ITEM_APP_WALLPADLOGOUTPUT:
-                    getVersion = WallpadDBMGR.GetVersionData(Const.AppName_WallPadLogOutput);
-                    Data_or_Version = 1;
-                    break;
-
-                case SETTING_ITEM_APP_WALLPADUPDATER:
-                    getVersion = WallpadDBMGR.GetVersionData(Const.AppName_WallPadUpdater);
-                    Data_or_Version = 1;
-                    break;
-
-                case SETTING_ITEM_APP_WALLPADAPPUPDATER:
-                    getVersion = WallpadDBMGR.GetVersionData(Const.AppName_WallPadAppUpdater);
-                    Data_or_Version = 1;
-                    break;
-
-            }
-
-            devset.closeDB();
-            WallpadDBMGR.closeDB();
-        }
-
-        if(Data_or_Version == 0)
-        {
-            if ((getData != null) && getData.length > 1) {
-                ret = getData[1];
-            }
-        }
-        else if (Data_or_Version == 1)
-        {
-            ret = getVersion;
-        }
-
-        return ret;
-    }
-
-
-    // get SettingDataList
-    public List<String[]> getSettingDataList(int itemType) {
-        if (DEBUG)  Log.d(TAG, " getSettingDataList() itemType : " + itemType);
-
-        List<String[]> ret = null;
-
-        WallpadDeviceSet devset = new WallpadDeviceSet(mContext);
-        if (devset != null) {
-            switch (itemType) {
-                case SETTING_ITEM_GUARD_LIST:
-                    ret = devset.GetSettingGroupData("guard_list");
-                    break;
-
-                case SETTING_ITEM_IP_TABLE_LIST:
-                    ret = devset.GetSettingGroupData("ip_table");
-                    break;
-
-                case SETTING_ITEM_SENSOR_STATE_LIST:
-                    ret = devset.GetSettingGroupData("sensor_state");
-                    break;
-
-                case SETTING_ITEM_SUB_DEVICE_LIST:
-                    ret = devset.GetSettingGroupData("subdev_list");
-                    break;
-            }
-
-            devset.closeDB();
-        }
-
-        if ((ret == null) || (ret.size() <= 0))
-            return null;
-
-        return ret;
-    }
-
-
-    // get SubDevID
-    public String getSubDevID(int itemType) {
-        String result = null;
-
-        switch (itemType) {
-            case SETTING_ITEM_SUB_DEVICE_GAS:
-            case SETTING_ITEM_SUB_DEVICE_DOOR_LOCK:
-            case SETTING_ITEM_SUB_DEVICE_HEATER:
-            case SETTING_ITEM_SUB_DEVICE_LIGHT:
-            case SETTING_ITEM_SUB_DEVICE_VENTILATION:
-            case SETTING_ITEM_SUB_DEVICE_SYSTEM_AIRCON:
-            case SETTING_ITEM_SUB_DEVICE_ELECTRONICALLY_CURTAIN:
-            case SETTING_ITEM_SUB_DEVICE_REALTIME_MEASURING_METER:
-            case SETTING_ITEM_SUB_DEVICE_SMART_SWITCH_LIGHT_AND_BATCH_CONTROL:
-            case SETTING_ITEM_SUB_DEVICE_WIRELESS_REMOCON:
-            case SETTING_ITEM_SUB_DEVICE_DOOR_CAMERA:
-            case SETTING_ITEM_SUB_DEVICE_NOTICE:
-            case SETTING_ITEM_SUB_DEVICE_WEATHER:
-            case SETTING_ITEM_SUB_DEVICE_MENO:
-            case SETTING_ITEM_SUB_DEVICE_ELECTRONIC_PICTURE_FRAMES:
-            case SETTING_ITEM_SUB_DEVICE_SCHEDULE:
-            case SETTING_ITEM_SUB_DEVICE_PARKING:
-            case SETTING_ITEM_SUB_DEVICE_TIME_SETTING:
-            case SETTING_ITEM_SUB_DEVICE_REMOTE_MESURING_METER:
-            case SETTING_ITEM_SUB_DEVICE_MUSIC:
-            case SETTING_ITEM_SUB_DEVICE_VIDEO_PLAY:
-            case SETTING_ITEM_SUB_DEVICE_CCTV:
-            case SETTING_ITEM_SUB_DEVICE_SET_NAMING:
-            case SETTING_ITEM_SUB_DEVICE_CUSTOMER_SERVICE_GUARD:
-            case SETTING_ITEM_SUB_DEVICE_GUARD_VIDEO_CALL:
-            case SETTING_ITEM_SUB_DEVICE_ELEVATOR:
-            case SETTING_ITEM_SUB_DEVICE_FIELD_TYPE:
-            case SETTING_ITEM_SUB_DEVICE_WALLPAD_CAMERA:
-            case SETTING_ITEM_SUB_DEVICE_MOOD_LIGHT:
-            case SETTING_ITEM_SUB_DEVICE_ESCAPE_LADDER:
-            case SETTING_ITEM_SUB_DEVICE_MOTION_SETTING:
-            case SETTING_ITEM_SUB_DEVICE_ALART_ALARM:
-            case SETTING_ITEM_SUB_DEVICE_PSTN_CALL:
-            case SETTING_ITEM_SUB_DEVICE_DOOR_PHONE_OUTPUT_VOLUME:
-            case SETTING_ITEM_SUB_DEVICE_IPARK_ENERGY:
-            case SETTING_ITEM_SUB_DEVICE_IDLE_POWER_SAVING_SWITCH:
-            case SETTING_ITEM_SUB_DEVICE_ENERGY_MODULE:
-            case SETTING_ITEM_SUB_DEVICE_ENERGY_DEVICES:
-            case SETTING_ITEM_SUB_DEVICE_SMART_KEY:
-            case SETTING_ITEM_SUB_DEVICE_MULTI_SWITCH:
-            case SETTING_ITEM_SUB_DEVICE_ELECTRIC_CAR:
-            case SETTING_ITEM_SUB_DEVICE_LH_ADD_FUNCTION:
-            case SETTING_ITEM_SUB_DEVICE_LH_U_CITY:
-            case SETTING_ITEM_SUB_DEVICE_ENERGY_SERVER_CONNECT:
-            case SETTING_ITEM_SUB_DEVICE_ZERO_ENERGY_HOUSE:
-            case SETTING_ITEM_SUB_DEVICE_SECURITY_INDOORMODE_SENSOR_USE:
-            case SETTING_ITEM_SUB_DEVICE_HANDICAPPED:
-            case SETTING_ITEM_SUB_DEVICE_ELEVATOR_MAINSCREEN_USE:
-            case SETTING_ITEM_SUB_DEVICE_BOOKMARK_TYPE:
-            case SETTING_ITEM_SUB_DEVICE_SUBPHONE_BAUDRATE:
-            case SETTING_ITEM_SUB_DEVICE_CALL_TIMEOUT:
-            case SETTING_ITEM_SUB_DEVICE_DANJI_CONFIG:
-            case SETTING_ITEM_SUB_DEVICE_WIRELESS_DOORLOCK_OPENDELAY:
-            case SETTING_ITEM_SUB_DEVICE_RENT_HOME:
-            case SETTING_ITEM_SUB_DEVICE_DANJI_RENT_HOME_USE:
-            case SETTING_ITEM_SUB_DEVICE_BLE_SMARTKEY:
-            case SETTING_ITEM_SUB_DEVICE_GATEWAY:
-            case SETTING_ITEM_SUB_DEVICE_DIMMING_KCC:
-            case SETTING_ITEM_SUB_DEVICE_MANUAL:
-            case SETTING_ITEM_SUB_DEVICE_NEWSERVER:
-            case SETTING_ITEM_SUB_DEVICE_ESCAPE_LADDER_NOTI:
-            case SETTING_ITEM_SUB_DEVICE_CTR_SEQUENCE_LIMIT:
-            case SETTING_ITEM_SUB_DEVICE_HEAT_ONEDEVICE:
-            case SETTING_ITEM_SUB_DEVICE_GAS_DETECT_5TIME:
-            case SETTING_ITEM_SUB_DEVICE_MAIN_GUI_SELECT:
-            case SETTING_ITEM_SUB_DEVICE_DISTRIBUTION:
-            case SETTING_ITEM_SUB_DEVICE_SENSOR_AP:
-            case SETTING_ITEM_SUB_DEVICE_INTERLAYER_NOISE:
-            case SETTING_ITEM_SUB_DEVICE_RELIEF_CALL:
-            case SETTING_ITEM_SUB_DEVICE_REMOTE_CALL:
-            case SETTING_ITEM_SUB_DEVICE_INNERROOM_DETECT_SENSOR:
-            case SETTING_ITEM_SUB_DEVICE_GATEWAY_MODEL_KIND:
-            case SETTING_ITEM_SUB_DEVICE_CARGUEST:
-            case SETTING_ITEM_SUB_DEVICE_MOBILE_APP_USER_AUTH:
-            case SETTING_ITEM_SUB_DEVICE_INTEGRATED_SWITCH:
-            case SETTING_ITEM_SUB_DEVICE_ELECTRIC_RANGE:
-            case SETTING_ITEM_SUB_DEVICE_BAND_LOCATION:
-            case SETTING_ITEM_SUB_DEVICE_NON_INTERNET_SUPPORT:
-            case SETTING_ITEM_SUB_DEVICE_COOKTOP_CONCENT:
-            case SETTING_ITEM_SUB_DEVICE_SMARTPOST_USE:
-            case SETTING_ITEM_SUB_DEVICE_SMARTKITCHEN_USE:
-            case SETTING_ITEM_SUB_DEVICE_EASYMODEUX_USE:
-            case SETTING_ITEM_SUB_DEVICE_ESCAPELADDER_DOWN_SEND:
-            case SETTING_ITEM_SUB_DEVICE_LIVINGEM_KITCHEN_LIGHT:
-            case SETTING_ITEM_SUB_DEVICE_FACIAL_RECOG_MODULE:
-            case SETTING_ITEM_SUB_DEVICE_REMOTECALL_DOOROPEN_USE:
-            case SETTING_ITEM_SUB_DEVICE_REMOTECALL_HOMEVIEWER_USE:
-            case SETTING_ITEM_SUB_DEVICE_SUBWALLPAD:
-            case SETTING_ITEM_SUB_DEVICE_SUBWALLPAD_PSTN:
-            case SETTING_ITEM_SUB_DEVICE_SUBWALLPAD_LIGHT:
-            case SETTING_ITEM_SUB_DEVICE_SUBWALLPAD_HEATER:
-            case SETTING_ITEM_SUB_DEVICE_SUBWALLPAD_GAS:
-            case SETTING_ITEM_SUB_DEVICE_SUBWALLPAD_DOORLOCK:
-            case SETTING_ITEM_SUB_DEVICE_SUBWALLPAD_VENTI:
-            case SETTING_ITEM_SUB_DEVICE_STRANGER_RECORDING_USE:
-            case SETTING_ITEM_SUB_DEVICE_EMERGENCY_CONTACT_SWITCH_USE:
-            case SETTING_ITEM_SUB_DEVICE_SENDWEATHER_REVERSRE:
-            case SETTING_ITEM_SUB_DEVICE_SAFESTREETLIGHT_USE:
-            case SETTING_ITEM_SUB_DEVICE_BATHSENSOR_USE:
-            case SETTING_ITEM_SUB_DEVICE_FRONT:
-            case SETTING_ITEM_SUB_DEVICE_LOBBY:
-            case SETTING_ITEM_SUB_DEVICE_GUARD:
-            case SETTING_ITEM_SUB_DEVICE_RESIDENCE:
-            case SETTING_ITEM_SUB_DEVICE_PSTN:
-            case SETTING_ITEM_SUB_DEVICE_CALLHISTORY:
-            case SETTING_ITEM_SUB_DEVICE_VISITORPIC:
-            case SETTING_ITEM_SUB_DEVICE_REMOTECALLSVR_WEBPORT:
-            case SETTING_ITEM_SUB_DEVICE_LCDKEEPER_USE:
-            case SETTING_ITEM_SUB_DEVICE_VENTI_SERVICE_QR:
-            case SETTING_ITEM_SUB_DEVICE_THEDISABLED_HOME:
-            case SETTING_ITEM_SUB_DEVICE_CO2_REDUCTION:
-            case SETTING_ITEM_SUB_DEVICE_HEATLIGHTROOM_NAMESET:
-            case SETTING_ITEM_SUB_DEVICE_SMARTSWITCH_ENERGY:
-            case SETTING_ITEM_SUB_DEVICE_PURITY:
-            case SETTING_ITEM_SUB_DEVICE_LOUVER:
-            case SETTING_ITEM_SUB_DEVICE_BIOMETICS:
-            case SETTING_ITEM_SUB_DEVICE_POWERCONTROLLER:
-            case SETTING_ITEM_SUB_DEVICE_LH_GATEWAY:
-            case SETTING_ITEM_SUB_DEVICE_KAKAO_HOME:
-            case SETTING_ITEM_SUB_DEVICE_SMARTIOTCAM_FLIP:
-            case SETTING_ITEM_SUB_DEVICE_CONSTRUCTION_SPECIAL_FUNC:
-            case SETTING_ITEM_SUB_DEVICE_MAIN_GUI_CTRL_USE:
-                result = SUB_DEVICE_ITEM_ID[itemType - SETTING_ITEM_SUB_DEVICE_GAS];
-                break;
-        }
-
-        return result;
-    }
-
-
-    // parse DevInfo
-    public List<String> parseDevInfo(String devInfo) {
-        List<String> result = null;
-
-        Log.d(TAG, "parseDevInfo() devInfo : " + devInfo);
-
-        if (devInfo == null)
-            return null;
-
-
-        try {
-            int idx = devInfo.indexOf("(");
-            if (idx > 0) {
-                result = new ArrayList();
-
-                String devNo = devInfo.substring(0, idx);
-                result.add(devNo.trim());
-
-                int startIdx = devInfo.indexOf(":", idx + 1);
-                if (startIdx > 0) {
-                    String circuitCount = devInfo.substring(idx + 1, startIdx);
-                    result.add(circuitCount.trim());
-                }
-                idx = startIdx;
-
-
-                int endIdx = devInfo.lastIndexOf(")");
-
-                Log.d(TAG, "startIdx : " + startIdx
-                        + ", endIdx : " + endIdx
-                );
-
-                if ((startIdx > 0) && (endIdx > 0)) {
-
-                    int midIdx = devInfo.indexOf("(", startIdx + 1);
-
-                    Log.d(TAG, "midIdx : " + midIdx);
-
-                    while (midIdx > startIdx) {
-                        String title = devInfo.substring(startIdx + 1, midIdx);
-                        result.add(title.trim());
-
-                        idx = devInfo.indexOf(")", midIdx + 1);
-                        if (idx > 0) {
-                            String detail = devInfo.substring(midIdx + 1, idx);
-                            result.add(detail.trim());
-                        }
-
-                        startIdx = idx;
-
-                        midIdx = devInfo.indexOf("(", idx + 1);
-
-                        Log.d(TAG, "midIdx : " + midIdx
-                                + ", startIdx : " + startIdx
-                        );
-                    }
-                }
-            }
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
-        }
-        catch (Exception e) {
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
-        }
-
-
-        if (DEBUG) {
-            if (result != null) {
-                Log.d(TAG, "parseDevInfo() result.size() : " + result.size());
-
-                for (int i=0; i<result.size(); i++) {
-                    Log.d(TAG, "result(" + i + ") : " + result.get(i));
-                }
-            }
-        }
-
-
-        return result;
-    }
-
-
-    // get SettingDataSubDev
-    public List<String> getSettingDataSubDev(int itemType) {
-        //여기서 가지고온 수많은 데이터 중 하나의 정보를 확인하는것
-        List<String[]> subDevList = getSettingDataList(SETTING_ITEM_SUB_DEVICE_LIST);
-        List<String> result = null;
-        String devInfo = null;
-        String deviceID = null;
-
-        if ((subDevList != null) && (subDevList.size() > 0)) {
-            deviceID = getSubDevID(itemType);
-
-            if (deviceID != null) {
-                for(int i=0; i<subDevList.size(); i++) {
-
-                    Log.d(TAG, "subDevList() .get(" + i + ")[0] : " + subDevList.get(i)[0]
-                            + ", .get(" + i + ")[1] : " + subDevList.get(i)[1]
-                    );
-
-
-                    if (deviceID.equals(subDevList.get(i)[0])) {
-                        devInfo = subDevList.get(i)[1];
-                        break;
-                    }
-                }
-            }
-        }
-
-        Log.d(TAG, "getSettingDataSubDev() itemType : " + itemType
-                + " " + deviceID
-                + ", devInfo : " + devInfo);
-
-        if (Const.ENABLED_SUB_DEVICE_DEFAULT_VALUE == true) {
-            if (devInfo == null) {
-                switch (itemType) {
-                    case SETTING_ITEM_SUB_DEVICE_GAS:
-                        devInfo = "1(1:가스밸브(사용함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_DOOR_LOCK:
-                        if(ModelType == Version.MODEL_TYPE.IHN_1020GL)
-                        {
-                            devInfo = "1(1:디지털도어락(사용함)종류( 유선 ))";
-                        }
-                        else
-                        {
-                            devInfo = "1(1:디지털도어락(사용함)종류( 무선 ))";
-                        }
-
-
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_HEATER:
-                        devInfo = "1(4:온도조절기(사용함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_LIGHT:
-
-                        if(ModelType == Version.MODEL_TYPE.IHN_1020GL)
-                        {
-                            devInfo = "1(5:조명제어기(사용함)종류( 현산향일체형조명일괄소등병합형 ))";
-                        }
-                        else if (ModelType == Version.MODEL_TYPE.IHN_1010GL || ModelType == Version.MODEL_TYPE.IHN_1010GL)
-                        {
-                            devInfo = "1(5:조명제어기(사용함)종류(현산향일체형조명일괄소등병합형_멀티스위치))";
-                        }
-                        else
-                        {
-                            devInfo = "1(6:조명제어기(사용함)종류( 대외기본형 ))";
-                        }
-
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_VENTILATION:
-                        devInfo = "1(1:환기시스템(사용함)종류( 기본 ))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_SYSTEM_AIRCON:
-                        devInfo = "1(1:시스템에어컨(사용안함)종류(삼성))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_ELECTRONICALLY_CURTAIN:
-                        devInfo = "1(1:전동커튼(사용안함)종류( 안방커튼 ))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_REALTIME_MEASURING_METER:
-                        if(ModelType == Version.MODEL_TYPE.IHN_1020GL)
-                        {
-                            devInfo = "1(5:실시간검침기(사용함))";
-                        }
-                        else
-                        {
-                            devInfo = "1(5:실시간검침기(사용안함))";
-                        }
-
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_SMART_SWITCH_LIGHT_AND_BATCH_CONTROL:
-                        if (Version.getGatewayUsage()) {
-                            devInfo = "1(1:스마트스위치&일괄소등(사용함)종류(현산향LCD스마트스위치)L1설정(2)L2설정(3))";
-                        }
-                        else {
-                            devInfo = "1(1:스마트스위치&일괄소등(사용함)종류(대외향스마트스위치)L1설정(2)L2설정(3))";
-                        }
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_WIRELESS_REMOCON:
-                        devInfo = "1(1:무선리모컨(사용함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_DOOR_CAMERA:
-                        if (ModelType == Version.MODEL_TYPE.IHN_D101 || ModelType == Version.MODEL_TYPE.IHN_D101_I
-                                || ModelType == Version.MODEL_TYPE.IHN_D101K || ModelType == Version.MODEL_TYPE.IHN_D101K_I)
-                        {
-                            devInfo = "1(1:현관카메라(사용함)종류(RF현관카메라))";
-                        }
-                        else
-                        {
-                            devInfo = "1(1:현관카메라(사용함)종류(기본))";
-                        }
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_NOTICE:
-                        devInfo = "1(1:공지사항(사용함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_WEATHER:
-                        devInfo = "1(1:날씨(사용함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_MENO:
-                        devInfo = "1(1:메모(사용함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_ELECTRONIC_PICTURE_FRAMES:
-                        devInfo = "1(1:전자액자(사용함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_SCHEDULE:
-                        devInfo = "1(1:일정표(사용함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_PARKING:
-                        devInfo = "1(1:주차확인(사용함)종류(아이콘트롤스)IP(10.2.0.80:6666))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_TIME_SETTING:
-                        devInfo = "1(1:시간설정(사용함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_REMOTE_MESURING_METER:
-                        devInfo = "1(5:원격검침(사용함)EMS(사용함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_MUSIC:
-                        devInfo = "1(1:뮤직(사용함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_VIDEO_PLAY:
-                        devInfo = "1(1:영상재생(사용함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_CCTV:
-                        devInfo = "1(1:CCTV(사용함)종류( 삼성테크윈 )버튼(IP:10.0.1.80*Camera:1*Pass:333*vPort:6801*cPort:6800*Site:admin*Where:놀이터1)버튼(IP:10.0.1.80*Camera:2*Pass:333*vPort:6801*cPort:6800*Site:admin*Where:놀이터2)버튼(IP:10.0.1.80*Camera:3*Pass:333*vPort:6801*cPort:6800*Site:admin*Where:놀이터3)버튼(IP:10.0.1.40*Camera:4*Pass:333*vPort:6801*cPort:6800*Site:admin*Where:놀이터4)버튼(IP:10.0.1.80*Camera:5*Pass:333*vPort:6801*cPort:6800*Site:admin*Where:놀이터5))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_CARGUEST:
-                        devInfo = "1(1:방문객차량등록(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_BAND_LOCATION:
-                        devInfo = "1(1:밴드위치확인(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_SET_NAMING:
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_CUSTOMER_SERVICE_GUARD:
-                        devInfo = "1(1:출동경비(사용안함)종류(KTT)IP(10.2.0.80:6666))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_GUARD_VIDEO_CALL:
-                        devInfo = "1(1:경비실영상통화(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_ELEVATOR:
-                        devInfo = "1(1:엘리베이터(사용함)종류( 층표시 ))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_FIELD_TYPE:
-                        devInfo = "1(1:현장특화기능(사용안함)종류( KCC))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_WALLPAD_CAMERA:
-                        devInfo = "1(1:월패드카메라(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_MOOD_LIGHT:
-                        devInfo = "1(1:무드등(사용안함)종류( 하단등 ))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_ESCAPE_LADDER:
-                        devInfo = "1(1:피난사다리(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_MOTION_SETTING:
-                        devInfo = "1(1:동체설정(사용함)외부동체사용(사용함)내부동체사용(사용안함)외부동체를내부동체로사용( 사용안함 ))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_ALART_ALARM:
-                        devInfo = "1(1:알람발생( 사용함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_PSTN_CALL:
-                        devInfo = "1(1:서브폰국선연동(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_DOOR_PHONE_OUTPUT_VOLUME:
-                        devInfo = "1(1:현관폰사운드출력음량(사용안함)볼륨(4))";
-                        break;
-
-
-                    case SETTING_ITEM_SUB_DEVICE_IPARK_ENERGY:
-                        if (Version.getGatewayUsage()) {
-                            devInfo = "1(1:아이파크에너지(사용함))";
-                        }
-                        else {
-                            devInfo = "1(1:아이파크에너지(사용안함))";
-                        }
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_IDLE_POWER_SAVING_SWITCH:
-                        if(ModelType == Version.MODEL_TYPE.IHN_1020GL)
-                        {
-                            devInfo = "1(1:대기전력스위치(사용함))";
-                        }
-                        else
-                        {
-                            devInfo = "1(1:대기전력스위치(사용안함))";
-                        }
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_ENERGY_MODULE:
-                        if(ModelType == Version.MODEL_TYPE.IHN_1020GL)
-                        {
-                            devInfo = "1(1:에너지모듈(사용함))";
-                        }
-                        else
-                        {
-                            devInfo = "1(1:에너지모듈(사용안함))";
-                        }
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_ENERGY_DEVICES:
-                        if((ModelType == Version.MODEL_TYPE.IHN_1020GL) || (ModelType == Version.MODEL_TYPE.IHN_D101)
-                            || (ModelType == Version.MODEL_TYPE.IHN_D101K))
-                        {
-                            devInfo = "1(1:에너지제품군(사용함))";
-                        }
-                        else
-                        {
-                            devInfo = "1(1:에너지제품군(사용안함))";
-                        }
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_SMART_KEY:
-                        if(ModelType == Version.MODEL_TYPE.IHN_1020GL)
-                        {
-                            devInfo = "1(1:스마트키(사용안함))";
-                        }
-                        else
-                        {
-                            devInfo = "1(1:스마트키(사용안함))";
-                        }
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_ELECTRIC_CAR:
-                        devInfo = "1(1:전기차충전(사용안함)IP(10.0.1.1:10000))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_LH_ADD_FUNCTION:
-                        devInfo = "1(1:LH특화기능(사용함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_LH_U_CITY:
-                        devInfo = "1(1:U-City(사용안함)IP(10.0.1.1:8888))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_ENERGY_SERVER_CONNECT:
-                        devInfo = "1(1:에너지관리서버(사용안함)IP(10.0.1.1:10000))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_ZERO_ENERGY_HOUSE:
-                        devInfo = "1(1:제로에너지하우스(사용안함)IP(10.0.2.88:10000))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_SECURITY_INDOORMODE_SENSOR_USE:
-                        devInfo = "1(1:재택모드시동체센서사용(사용함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_HANDICAPPED:
-                        devInfo = "1(1:장애인모드(사용안함)모드(일반모드))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_ELEVATOR_MAINSCREEN_USE:
-                        devInfo = "1(1:엘리베이터핫키(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_BOOKMARK_TYPE:
-                        devInfo = "1(1:즐겨찾기아이콘종류(사용함)종류(흑백))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_SUBPHONE_BAUDRATE:
-                        devInfo = "1(1:서브폰통신속도(사용함)종류(9600))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_CALL_TIMEOUT:
-                        devInfo = "1(1:통화타임아웃(사용함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_DANJI_CONFIG:
-                        devInfo = "1(1:IP대역확장(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_WIRELESS_DOORLOCK_OPENDELAY:
-                        devInfo = "1(1:무선도어락문열림대기모드(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_RENT_HOME:
-                        devInfo = "1(1:임대세대(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_DANJI_RENT_HOME_USE:
-                        devInfo = "1(1:단지내임대세대(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_BLE_SMARTKEY:
-                        devInfo = "1(1:BLE스마트키(사용안함)종류(스마트키))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_GATEWAY:
-                        devInfo = "1(1:게이트웨이(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_DIMMING_KCC:
-                        devInfo = "1(1:KCC디밍제어기(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_MANUAL:
-                        devInfo = "1(1:매뉴얼(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_NEWSERVER:
-                        devInfo = "1(1:신형단지서버(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_ESCAPE_LADDER_NOTI:
-                        devInfo = "1(1:피난사다리방송알림(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_CTR_SEQUENCE_LIMIT:
-                        devInfo = "1(1:제어시퀀스제한(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_HEAT_ONEDEVICE:
-                        devInfo = "1(1:난방일체형(사용안함)종류(난방환기))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_GAS_DETECT_5TIME:
-                        devInfo = "1(1:가스감지5회알람(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_MAIN_GUI_SELECT:
-                        devInfo = "1(1:메인GUI선택(사용함)종류(기본))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_DISTRIBUTION:
-                        devInfo = "1(1:분전반(사용안함)종류(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_SENSOR_AP:
-                        devInfo = "1(1:센서AP(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_INTERLAYER_NOISE:
-                        devInfo = "1(1:층간소음센서(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_RELIEF_CALL:
-                        devInfo = "1(1:안심통화(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_REMOTE_CALL:
-                        devInfo = "1(1:방문객원격통화(사용안함)IP(10.2.110.110:8000))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_INNERROOM_DETECT_SENSOR:
-                        devInfo = "1(1:재실센서(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_GATEWAY_MODEL_KIND:
-                        devInfo = "1(1:게이트웨이모델(사용함)종류(IGW300))"; // Android studio 에서는 IGW300이 기본
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_MOBILE_APP_USER_AUTH:
-                        devInfo = "1(1:모바일앱사용자인증(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_INTEGRATED_SWITCH:
-                        devInfo = "1(1:통합스위치(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_ELECTRIC_RANGE:
-                        devInfo = "1(1:전기레인지(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_FACIAL_RECOG_MODULE:
-                        devInfo = "1(1:안면인식모듈(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_NON_INTERNET_SUPPORT:
-                        devInfo = "1(1:인터넷미지원(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_COOKTOP_CONCENT:
-                        devInfo = "1(1:쿡탑콘센트(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_SMARTPOST_USE:
-                        devInfo = "1(1:스마트우편함(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_SMARTKITCHEN_USE:
-                        devInfo = "1(1:스마트키친(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_EASYMODEUX_USE:
-                        devInfo = "1(1:간편모드UX지원(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_ESCAPELADDER_DOWN_SEND:
-                        devInfo = "1(1:피난사다리전송(사용함)종류(윗집))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_LIVINGEM_KITCHEN_LIGHT:
-                        devInfo = "1(1:거실EM주방등(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_REMOTECALL_DOOROPEN_USE:
-                        devInfo = "1(1:방문객원격통화-현관문열림(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_REMOTECALL_HOMEVIEWER_USE:
-                        devInfo = "1(1:방문객원격통화-홈뷰어(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_REMOTECALLSVR_WEBPORT:
-                        devInfo = "1(1:방문객원격통화WEB포트(사용함)종류(8089))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_SUBWALLPAD:
-                        devInfo = "1(1:서브월패드(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_SUBWALLPAD_PSTN:
-                        devInfo = "1(1:서브월패드국선전화연동(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_SUBWALLPAD_LIGHT:
-                        devInfo = "1(1:서브월패드조명연동(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_SUBWALLPAD_HEATER:
-                        devInfo = "1(1:서브월패드난방연동(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_SUBWALLPAD_GAS:
-                        devInfo = "1(1:서브월패드가스연동(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_SUBWALLPAD_DOORLOCK:
-                        devInfo = "1(1:서브월패드도어락연동(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_SUBWALLPAD_VENTI:
-                        devInfo = "1(1:서브월패드환기연동(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_STRANGER_RECORDING_USE:
-                        devInfo = "1(1:거동수상자녹화(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_EMERGENCY_CONTACT_SWITCH_USE:
-                        devInfo = "1(1:비상접점스위치(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_SENDWEATHER_REVERSRE:
-                        devInfo = "1(1:서브폰날씨정보역순전송(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_SAFESTREETLIGHT_USE:
-                        devInfo = "1(1:안전가로등(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_BATHSENSOR_USE:
-                        devInfo = "1(1:욕실센서등(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_FRONT:
-                        devInfo = "1(1:현관(사용함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_LOBBY:
-                        devInfo = "1(1:로비(사용함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_GUARD:
-                        devInfo = "1(1:경비(사용함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_RESIDENCE:
-                        devInfo = "1(1:이웃(사용함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_PSTN:
-                        devInfo = "1(1:국선(사용함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_CALLHISTORY:
-                        devInfo = "1(1:통화내역(사용함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_VISITORPIC:
-                        devInfo = "1(1:방문자사진(사용함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_LCDKEEPER_USE:
-                        devInfo = "1(1:LCDKEEPER(사용안함)종류(사용안함))";
-                        break;
-                    case SETTING_ITEM_SUB_DEVICE_VENTI_SERVICE_QR:
-                        devInfo = "1(1:환기케어서비스QR(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_THEDISABLED_HOME:
-                        devInfo = "1(1:장애인세대(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_CO2_REDUCTION:
-                        devInfo = "1(1:이산화탄소절감률(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_HEATLIGHTROOM_NAMESET:
-                        devInfo = "1(1:난방조명방명칭설정(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_SMARTSWITCH_ENERGY:
-                        devInfo = "1(1:스마트스위치에너지종류(사용함)종류(실시간검침기))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_PURITY:
-                        devInfo = "1(1:청정환기(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_LOUVER:
-                        devInfo = "1(1:전동루버(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_BIOMETICS:
-                        devInfo = "1(1:생체인식(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_POWERCONTROLLER:
-                        devInfo = "1(1:통합전력제어기(사용함)종류(기본))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_LH_GATEWAY:
-                        devInfo = "1(1:LH게이트웨이(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_KAKAO_HOME:
-                        devInfo = "1(1:카카오홈(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_SMARTIOTCAM_FLIP:
-                        devInfo = "1(1:스마트현관카메라좌우반전(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_CONSTRUCTION_SPECIAL_FUNC:
-                        devInfo = "1(1:건설사특화기능(사용안함)종류(사용안함))";
-                        break;
-
-                    case SETTING_ITEM_SUB_DEVICE_MAIN_GUI_CTRL_USE:
-                        devInfo = "1(1:제어기능(사용함))";
-                        break;
-                }
-            }
-        }
-
-        result = parseDevInfo(devInfo);
-
-        return result;
-    }
-
-
-    // itemType에 해당하는 SubDev의 사용설정 여부 return
-    public boolean isUsedSettingDataSubDev(int itemType) {
-        boolean bUsed = false;
-        if (DEBUG) Log.i(TAG, "[isUsedSettingDataSubDev] itemType = " + itemType);
-        List<String> InfoList = getSettingDataSubDev(itemType);
-        if(InfoList!=null)
-        {
-            for (int i = 0; i < InfoList.size(); i++) {
-                if(InfoList.get(i)!=null)
-                    Log.i(TAG, "[isUsedSettingDataSubDev] InfoList.get(" + i + ") = " + InfoList.get(i));
-            }
-        }
-
-
-        if ((InfoList != null) && (InfoList.size() > 3)) {
-            if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
-                bUsed = true;
-            }
-        }
-
-        return bUsed;
-    }
-
-
-
-
-    // return SensorList
-    public List<String[]> getSensorList() {
-        return getSettingDataList(SETTING_ITEM_SENSOR_STATE_LIST);
-    }
-
-
-
-    // set SettingDataSubDev
-    public boolean setSettingDataSubDev(int itemType, int cnt, String value) {
-        if (DEBUG)  Log.d(TAG, "setSettingDataSubDev() itemType : " + itemType
-                + ", value : " + value
-        );
-
-        boolean ret = false;
-
-        String deviceName = getSubDevID(itemType);
-        if (deviceName != null) {
-            if (DEBUG)  Log.d(TAG, "setSettingDataSubDev() deviceName : " + deviceName);
-
-            WallpadDeviceSet devset = new WallpadDeviceSet(mContext);
-            if (devset != null) {
-                devset.UpdateSettingData("subdev_list"
-                        , deviceName
-                        , 0
-                        , value
-                );
-
-                // 스마트현관카메라좌우반전 설정정보일 경우 카메라 설정 필요
-                if (getUseSmartDoorCam()) {
-                    if (itemType == SETTING_ITEM_SUB_DEVICE_SMARTIOTCAM_FLIP) {
-                        Log.d(TAG, "setSettingDataSubDev() itemType: " + itemType + ", value: " + value);
-                        V40IF mV40IF = new V40IF();
-                        if (value.contains(Const.CONTROLLER_SETTING_DO_USED)) {
-                            Log.d(TAG, "setSettingDataSubDev() === WALLPAD_CAM_AHD_FRONT_FLIP ===");
-                            mV40IF.setCameraConfigure(Const.WALLPAD_CAM_AHD_FRONT_FLIP);
-                        } else if (value.contains(Const.CONTROLLER_SETTING_DO_NOT_USED)) {
-                            Log.d(TAG, "setSettingDataSubDev() === WALLPAD_CAM_AHD_FRONT ===");
-                            mV40IF.setCameraConfigure(Const.WALLPAD_CAM_AHD_FRONT);
-                        } else Log.w(TAG, "setSettingDataSubDev() value " + value + "]");
-                    }
-                }
-
-                devset.closeDB();
-            }
-        }
-
-        return ret;
-    }
-
-
-    // SubDev의 사용설정을 update
-    public void updateSetUsedToSubDeviceOnOff(int controller, final int position) {
-        String controllerName = null;
-
-        switch (controller) {
-            case SETTING_ITEM_SUB_DEVICE_IPARK_ENERGY:
-                controllerName = Const.IPARK_ENERGY;
-                break;
-
-            case SETTING_ITEM_SUB_DEVICE_IDLE_POWER_SAVING_SWITCH:
-                controllerName = Const.IDLE_POWER_SAVING_SWITCH;
-                break;
-
-            case SETTING_ITEM_SUB_DEVICE_ENERGY_MODULE:
-                controllerName = Const.ENERGY_MODULE;
-                break;
-
-            case SETTING_ITEM_SUB_DEVICE_ENERGY_SERVER_CONNECT:
-                controllerName = Const.ENERGY_SERVER_CONNECT;
-                break;
-
-            default:
-                controllerName = getSubDevID(controller);
-                break;
-        }
-
-        if (controllerName != null) {
-            String value = controllerName;
-            if (position == 0) {
-                value += "("
-                        + Const.CONTROLLER_SETTING_DO_NOT_USED
-                        + ")"
-                ;
-            }
-            else {
-                value += "("
-                        + Const.CONTROLLER_SETTING_DO_USED
-                        + ")"
-                ;
-            }
-
-            List<String> InfoList = getSettingDataSubDev(controller);
-            if ((InfoList != null) && (InfoList.size() > 1)) {
-                String deviceNo = InfoList.get(0);
-                String circuitNo = InfoList.get(1);
-
-                value = deviceNo
-                        + "("
-
-                        + circuitNo
-                        + ":"
-
-                        + value
-                ;
-
-                for (int i=4; i + 1 <InfoList.size(); i=i+2) {
-                    value += InfoList.get(i)
-                            + "("
-                            + InfoList.get(i+1)
-                            + ")"
-                    ;
-                }
-
-                value += ")"
-                ;
-
-                setSettingDataSubDev(controller, 0, value);
-            }
-        }
-    }
-
-
-    // SwitchButton에 의한 SubDev의 사용설정을 update
-    public void updateSetUsedToSubDeviceSwitchButtonOnOff(int controller, final int position) {
-        try {
-            String controllerName = getSubDevID(controller);
-            Log.i(TAG, "[updateSetUsedToSubDeviceSwitchButtonOnOff] controllerName = " + controllerName);
-
-            if (controllerName != null) {
-                String value = controllerName;
-                if (position == 1) {
-                    value += "(" + Const.CONTROLLER_SETTING_DO_NOT_USED + ")";
-                }
-                else {
-                    value += "(" + Const.CONTROLLER_SETTING_DO_USED + ")";
-                }
-
-                List<String> InfoList = getSettingDataSubDev(controller);
-                if ((InfoList != null) && (InfoList.size() > 1)) {
-                    String deviceNo = InfoList.get(0);
-                    String circuitNo = InfoList.get(1);
-
-                    value = deviceNo  + "(" + circuitNo + ":" + value;
-
-                    for (int i=4; i + 1 <InfoList.size(); i=i+2) {
-                        value += InfoList.get(i) + "(" + InfoList.get(i + 1) + ")";
-                    }
-
-                    value += ")";
-
-                    Log.i(TAG, "[updateSetUsedToSubDeviceSwitchButtonOnOff] value = " + value);
-
-                    setSettingDataSubDev(controller, 0, value);
-                }
-                else Log.w(TAG, "[updateSetUsedToSubDeviceSwitchButtonOnOff] InfoList is null or InfoList.size() > 1!!!");
-            }
-            else Log.w(TAG, "[updateSetUsedToSubDeviceSwitchButtonOnOff] controllerName is null!!!");
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
-        } catch (Exception e) {
-            Log.e(TAG, "[Exception] updateSetUsedToSubDeviceSwitchButtonOnOff(int controller, final int position)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
-        }
-    }
-
-
-
-
-
-
-/*
-    public void UpdateSettingData(String Type, String Name, int cnt, String value)
-    {
-        WallpadDeviceSet devset = new WallpadDeviceSet(mContext);
-        if (devset != null) {
-            devset.UpdateSettingData(Type
-                                        , Name
-                                        , 0
-                                        , value
-                                        );
-
-            devset.closeDB();
-        }
-    }
-*/
-
-    // H/W Button 사용 설정여부 return
-    public boolean isUsedHWButton() {
-        boolean ret = false;
-
-        WallpadSalesSampleData wallpadSalesSampleData = new WallpadSalesSampleData(mContext);
-        int getData = wallpadSalesSampleData.getSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_HW_BUTTON_OPERATION);
-        wallpadSalesSampleData.closeDB();
-
-        if (getData == WallpadSalesSampleData.SALES_SAMPLE_MODE_DO_USED)
-            ret = true;
-
-        return ret;
-    }
-
-
-    //  현관 카메라 샘플 설정여부 return
-    public boolean isUsedSampleDoorCamera() {
-        boolean ret = false;
-
-        WallpadSalesSampleData wallpadSalesSampleData = new WallpadSalesSampleData(mContext);
-        int getData = wallpadSalesSampleData.getSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_DOOR_CAMERA);
-        wallpadSalesSampleData.closeDB();
-
-        if (getData == WallpadSalesSampleData.SALES_SAMPLE_MODE_ENABLED)
-            ret = true;
-
-        return ret;
-    }
-
-
-    //  Application upgrade 진행중인지 여부 return
-    public static boolean isUpgradingApp(Context context) {
-        boolean ret = false;
-
-        WallpadStatusData sdb = new WallpadStatusData(context);
-        ret = sdb.GetUpgradeState();
-        sdb.closeDB();
-
-        return ret;
-    }
-
-    private boolean getUseSmartDoorCam() {
-        try {
-            WallpadDeviceSet mWallpadDeviceSet = new WallpadDeviceSet(getContext());
-            if(mWallpadDeviceSet!=null)
-            {
-                int[] nFrontCam = mWallpadDeviceSet.Get_RFDoorCAM_Info();
-                mWallpadDeviceSet.closeDB();
-                if(nFrontCam!=null)
-                {
-                    if (nFrontCam[0] == Const.CONTROLLER_SETTING_DO_USED_INDEX) {
-                        if (nFrontCam[1] == WallpadDeviceSet.DOORTYPE_IOT_SMART) {
-                            Log.d(TAG, "[getUseSmartDoorCam] Use SMART_IOT_DOORCAM");
-                            return true;
-                        }
-                    }
-                }
-
-            }
-
-        } catch (Exception e) {
-            Log.e(TAG, "[Exception] getUseSmartDoorCam()");
-            e.printStackTrace();
-        }
-        return false;
-    }
-
-}
+package com.artncore.managersetting.dao;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import kr.co.icontrols.wallpadsupport.Version;
+import android.content.Context;
+import android.os.Handler;
+import android.util.Log;
+
+import com.artncore.WallPadDataMgr.WallpadDeviceSet;
+import com.artncore.WallPadDataMgr.WallpadSalesSampleData;
+import com.artncore.WallPadDataMgr.WallpadStatusData;
+import com.artncore.WallPadDataMgr.wallpaddbmgr;
+import com.artncore.WallPadDataMgr.wallpaddbmgr.AddressSet;
+import com.artncore.managersetting.domain.Const;
+import com.artncore.managersetting.util.NetworkUtil;
+import com.artncore.managersetting.util.StringUtil;
+import com.artncore.managersetting.R;
+
+public class MainDatabaseManager {
+
+    private static final String TAG = "MainDatabaseManager";
+
+    private final boolean DEBUG = true;
+
+
+    public static final int SETTING_ITEM_TYPE_BASE = 101;
+    public static final int SETTING_ITEM_GUARD_LIST         = SETTING_ITEM_TYPE_BASE + 0;
+    public static final int SETTING_ITEM_VER_SETTING        = SETTING_ITEM_TYPE_BASE + 1;
+    public static final int SETTING_ITEM_LOG_ENABLE         = SETTING_ITEM_TYPE_BASE + 2;
+    public static final int SETTING_ITEM_BEAT_TIME          = SETTING_ITEM_TYPE_BASE + 3;
+    public static final int SETTING_ITEM_DATETIME           = SETTING_ITEM_TYPE_BASE + 4;
+
+
+    public static final int SETTING_ITEM_IP_TABLE_LIST      = SETTING_ITEM_TYPE_BASE + 5;
+    //    public static final int SETTING_ITEM_SECURITY_STATE  = SETTING_ITEM_TYPE_BASE + 6;
+    public static final int SETTING_ITEM_SENSOR_STATE_LIST  = SETTING_ITEM_TYPE_BASE + 7;
+    public static final int SETTING_ITEM_SITE_CODE          = SETTING_ITEM_TYPE_BASE + 8;
+    public static final int SETTING_ITEM_SUB_DEVICE_LIST    = SETTING_ITEM_TYPE_BASE + 9;
+
+
+    public static final int SETTING_ITEM_SUB_DEVICE_GAS                         = SETTING_ITEM_TYPE_BASE + 100;
+    public static final int SETTING_ITEM_SUB_DEVICE_DOOR_LOCK                   = SETTING_ITEM_TYPE_BASE + 101;
+    public static final int SETTING_ITEM_SUB_DEVICE_HEATER                      = SETTING_ITEM_TYPE_BASE + 102;
+    public static final int SETTING_ITEM_SUB_DEVICE_LIGHT                       = SETTING_ITEM_TYPE_BASE + 103;
+    public static final int SETTING_ITEM_SUB_DEVICE_VENTILATION                 = SETTING_ITEM_TYPE_BASE + 104;
+    public static final int SETTING_ITEM_SUB_DEVICE_SYSTEM_AIRCON               = SETTING_ITEM_TYPE_BASE + 105;
+    public static final int SETTING_ITEM_SUB_DEVICE_ELECTRONICALLY_CURTAIN      = SETTING_ITEM_TYPE_BASE + 106;
+    public static final int SETTING_ITEM_SUB_DEVICE_REALTIME_MEASURING_METER    = SETTING_ITEM_TYPE_BASE + 107;
+    public static final int SETTING_ITEM_SUB_DEVICE_SMART_SWITCH_LIGHT_AND_BATCH_CONTROL                = SETTING_ITEM_TYPE_BASE + 108;
+    public static final int SETTING_ITEM_SUB_DEVICE_WIRELESS_REMOCON            = SETTING_ITEM_TYPE_BASE + 109;
+    public static final int SETTING_ITEM_SUB_DEVICE_DOOR_CAMERA                 = SETTING_ITEM_TYPE_BASE + 110;
+    public static final int SETTING_ITEM_SUB_DEVICE_NOTICE                      = SETTING_ITEM_TYPE_BASE + 111;
+    public static final int SETTING_ITEM_SUB_DEVICE_WEATHER                     = SETTING_ITEM_TYPE_BASE + 112;
+    public static final int SETTING_ITEM_SUB_DEVICE_MENO                        = SETTING_ITEM_TYPE_BASE + 113;
+    public static final int SETTING_ITEM_SUB_DEVICE_ELECTRONIC_PICTURE_FRAMES   = SETTING_ITEM_TYPE_BASE + 114;
+    public static final int SETTING_ITEM_SUB_DEVICE_SCHEDULE                    = SETTING_ITEM_TYPE_BASE + 115;
+    public static final int SETTING_ITEM_SUB_DEVICE_PARKING                     = SETTING_ITEM_TYPE_BASE + 116;
+    public static final int SETTING_ITEM_SUB_DEVICE_TIME_SETTING                = SETTING_ITEM_TYPE_BASE + 117;
+    public static final int SETTING_ITEM_SUB_DEVICE_REMOTE_MESURING_METER       = SETTING_ITEM_TYPE_BASE + 118;
+    public static final int SETTING_ITEM_SUB_DEVICE_MUSIC                       = SETTING_ITEM_TYPE_BASE + 119;
+    public static final int SETTING_ITEM_SUB_DEVICE_VIDEO_PLAY                  = SETTING_ITEM_TYPE_BASE + 120;
+    public static final int SETTING_ITEM_SUB_DEVICE_CCTV                        = SETTING_ITEM_TYPE_BASE + 121;
+    public static final int SETTING_ITEM_SUB_DEVICE_SET_NAMING                  = SETTING_ITEM_TYPE_BASE + 122;
+    public static final int SETTING_ITEM_SUB_DEVICE_CUSTOMER_SERVICE_GUARD      = SETTING_ITEM_TYPE_BASE + 123;
+    public static final int SETTING_ITEM_SUB_DEVICE_GUARD_VIDEO_CALL            = SETTING_ITEM_TYPE_BASE + 124;
+    public static final int SETTING_ITEM_SUB_DEVICE_ELEVATOR                    = SETTING_ITEM_TYPE_BASE + 125;
+    public static final int SETTING_ITEM_SUB_DEVICE_FIELD_TYPE                  = SETTING_ITEM_TYPE_BASE + 126;
+    public static final int SETTING_ITEM_SUB_DEVICE_WALLPAD_CAMERA              = SETTING_ITEM_TYPE_BASE + 127;
+    public static final int SETTING_ITEM_SUB_DEVICE_MOOD_LIGHT                  = SETTING_ITEM_TYPE_BASE + 128;
+    public static final int SETTING_ITEM_SUB_DEVICE_ESCAPE_LADDER               = SETTING_ITEM_TYPE_BASE + 129;
+    public static final int SETTING_ITEM_SUB_DEVICE_MOTION_SETTING              = SETTING_ITEM_TYPE_BASE + 130;
+    public static final int SETTING_ITEM_SUB_DEVICE_ALART_ALARM                 = SETTING_ITEM_TYPE_BASE + 131;
+
+    public static final int SETTING_ITEM_SUB_DEVICE_PSTN_CALL                   = SETTING_ITEM_TYPE_BASE + 132;
+
+    public static final int SETTING_ITEM_SUB_DEVICE_DOOR_PHONE_OUTPUT_VOLUME    = SETTING_ITEM_TYPE_BASE + 133;
+
+    public static final int SETTING_ITEM_SUB_DEVICE_IPARK_ENERGY                = SETTING_ITEM_TYPE_BASE + 134;
+    public static final int SETTING_ITEM_SUB_DEVICE_IDLE_POWER_SAVING_SWITCH    = SETTING_ITEM_TYPE_BASE + 135;
+    public static final int SETTING_ITEM_SUB_DEVICE_ENERGY_MODULE               = SETTING_ITEM_TYPE_BASE + 136;
+
+    public static final int SETTING_ITEM_SUB_DEVICE_ENERGY_DEVICES              = SETTING_ITEM_TYPE_BASE + 137;
+    public static final int SETTING_ITEM_SUB_DEVICE_SMART_KEY                   = SETTING_ITEM_TYPE_BASE + 138;
+    public static final int SETTING_ITEM_SUB_DEVICE_MULTI_SWITCH                = SETTING_ITEM_TYPE_BASE + 139;
+    public static final int SETTING_ITEM_SUB_DEVICE_ELECTRIC_CAR                = SETTING_ITEM_TYPE_BASE + 140;
+
+    public static final int SETTING_ITEM_SUB_DEVICE_LH_ADD_FUNCTION             = SETTING_ITEM_TYPE_BASE + 141;
+    public static final int SETTING_ITEM_SUB_DEVICE_LH_U_CITY                   = SETTING_ITEM_TYPE_BASE + 142;
+    public static final int SETTING_ITEM_SUB_DEVICE_ENERGY_SERVER_CONNECT       = SETTING_ITEM_TYPE_BASE + 143;
+    public static final int SETTING_ITEM_SUB_DEVICE_ZERO_ENERGY_HOUSE           = SETTING_ITEM_TYPE_BASE + 144;
+    public static final int SETTING_ITEM_SUB_DEVICE_SECURITY_INDOORMODE_SENSOR_USE = SETTING_ITEM_TYPE_BASE + 145; //재택모드 시 동체센서 사용
+    public static final int SETTING_ITEM_SUB_DEVICE_HANDICAPPED                 = SETTING_ITEM_TYPE_BASE + 146; //부가기능 - 장애인모드
+    public static final int SETTING_ITEM_SUB_DEVICE_ELEVATOR_MAINSCREEN_USE     = SETTING_ITEM_TYPE_BASE + 147;
+    public static final int SETTING_ITEM_SUB_DEVICE_BOOKMARK_TYPE               = SETTING_ITEM_TYPE_BASE + 148;
+    public static final int SETTING_ITEM_SUB_DEVICE_CALL_TIMEOUT                = SETTING_ITEM_TYPE_BASE + 149; //통화 타임아웃
+    public static final int SETTING_ITEM_SUB_DEVICE_DANJI_CONFIG                = SETTING_ITEM_TYPE_BASE + 150; //단지설정
+    public static final int SETTING_ITEM_SUB_DEVICE_WIRELESS_DOORLOCK_OPENDELAY = SETTING_ITEM_TYPE_BASE + 151; //무선 도어락 문열림 대기모드 사용
+    public static final int SETTING_ITEM_SUB_DEVICE_RENT_HOME                   = SETTING_ITEM_TYPE_BASE + 152; //임대세대(분리세대)
+    public static final int SETTING_ITEM_SUB_DEVICE_DANJI_RENT_HOME_USE         = SETTING_ITEM_TYPE_BASE + 153; //단지내 임대세대 사용
+    public static final int SETTING_ITEM_SUB_DEVICE_BLE_SMARTKEY                = SETTING_ITEM_TYPE_BASE + 154; //BLE스마트키
+    public static final int SETTING_ITEM_SUB_DEVICE_GATEWAY                     = SETTING_ITEM_TYPE_BASE + 155; //게이트웨이
+    public static final int SETTING_ITEM_SUB_DEVICE_DIMMING_KCC                 = SETTING_ITEM_TYPE_BASE + 156; //KCC디밍제어기
+
+    public static final int SETTING_ITEM_SUB_DEVICE_MANUAL		                = SETTING_ITEM_TYPE_BASE + 157; //매뉴얼
+    public static final int SETTING_ITEM_SUB_DEVICE_NEWSERVER		            = SETTING_ITEM_TYPE_BASE + 158; //신형단지서버 사용 유무
+    public static final int SETTING_ITEM_SUB_DEVICE_ESCAPE_LADDER_NOTI		    = SETTING_ITEM_TYPE_BASE + 159; //피난사다리 방송정보 알림(DB에는 피난사다리방송알림)
+    public static final int SETTING_ITEM_SUB_DEVICE_BAND_LOCATION               = SETTING_ITEM_TYPE_BASE + 160; // 밴드위치확인
+    public static final int SETTING_ITEM_SUB_DEVICE_CTR_SEQUENCE_LIMIT		    = SETTING_ITEM_TYPE_BASE + 161; //제어 시퀀스 제한(0~127)
+    public static final int SETTING_ITEM_SUB_DEVICE_HEAT_ONEDEVICE      		= SETTING_ITEM_TYPE_BASE + 162; //난방일체형
+    public static final int SETTING_ITEM_SUB_DEVICE_GAS_DETECT_5TIME			= SETTING_ITEM_TYPE_BASE + 163; //가스감지5회알람
+    public static final int SETTING_ITEM_SUB_DEVICE_SUBPHONE_BAUDRATE			= SETTING_ITEM_TYPE_BASE + 164; //서브폰통신속도
+    public static final int SETTING_ITEM_SUB_DEVICE_MAIN_GUI_SELECT 			= SETTING_ITEM_TYPE_BASE + 165; //메인 GUI 선택
+    public static final int SETTING_ITEM_SUB_DEVICE_DISTRIBUTION 			    = SETTING_ITEM_TYPE_BASE + 166; //분전반
+    public static final int SETTING_ITEM_SUB_DEVICE_SENSOR_AP        			= SETTING_ITEM_TYPE_BASE + 167; //센서 AP (미세먼지, CO2 센서)
+    public static final int SETTING_ITEM_SUB_DEVICE_INTERLAYER_NOISE 			= SETTING_ITEM_TYPE_BASE + 168; //층간소음 센서
+    public static final int SETTING_ITEM_SUB_DEVICE_RELIEF_CALL                 = SETTING_ITEM_TYPE_BASE + 169; //안심통화
+    public static final int SETTING_ITEM_SUB_DEVICE_REMOTE_CALL                 = SETTING_ITEM_TYPE_BASE + 170; //방문객원격통화
+    public static final int SETTING_ITEM_SUB_DEVICE_INNERROOM_DETECT_SENSOR     = SETTING_ITEM_TYPE_BASE + 171; //재실센서
+    public static final int SETTING_ITEM_SUB_DEVICE_GATEWAY_MODEL_KIND			= SETTING_ITEM_TYPE_BASE + 172; //게이트웨이모델 종류 선택
+    public static final int SETTING_ITEM_SUB_DEVICE_CARGUEST        			= SETTING_ITEM_TYPE_BASE + 173; //방문객차량등록
+    public static final int SETTING_ITEM_SUB_DEVICE_MOBILE_APP_USER_AUTH        = SETTING_ITEM_TYPE_BASE + 174; //모바일 앱 사용자 인증기능
+    public static final int SETTING_ITEM_SUB_DEVICE_INTEGRATED_SWITCH           = SETTING_ITEM_TYPE_BASE + 175; //통합스위치
+    public static final int SETTING_ITEM_SUB_DEVICE_ELECTRIC_RANGE              = SETTING_ITEM_TYPE_BASE + 176; //전기레인지
+    public static final int SETTING_ITEM_SUB_DEVICE_NON_INTERNET_SUPPORT        = SETTING_ITEM_TYPE_BASE + 177; //인터넷미지원
+    public static final int SETTING_ITEM_SUB_DEVICE_COOKTOP_CONCENT             = SETTING_ITEM_TYPE_BASE + 178; //쿡탑콘센트
+    public static final int SETTING_ITEM_SUB_DEVICE_SMARTPOST_USE               = SETTING_ITEM_TYPE_BASE + 179; //스마트우편함
+    public static final int SETTING_ITEM_SUB_DEVICE_SMARTKITCHEN_USE            = SETTING_ITEM_TYPE_BASE + 180; //스마트키친
+    public static final int SETTING_ITEM_SUB_DEVICE_EASYMODEUX_USE              = SETTING_ITEM_TYPE_BASE + 181; //간편모드UX지원
+    public static final int SETTING_ITEM_SUB_DEVICE_ESCAPELADDER_DOWN_RECV		= SETTING_ITEM_TYPE_BASE + 182; //피난사다리입하수신
+    public static final int SETTING_ITEM_SUB_DEVICE_LIVINGEM_KITCHEN_LIGHT		= SETTING_ITEM_TYPE_BASE + 183; //거실EM주방등
+    public static final int SETTING_ITEM_SUB_DEVICE_FACIAL_RECOG_MODULE 		= SETTING_ITEM_TYPE_BASE + 184; //안면인식 모듈
+    public static final int SETTING_ITEM_SUB_DEVICE_REMOTECALL_DOOROPEN_USE     = SETTING_ITEM_TYPE_BASE + 185; //방문객원격통화 - 현관문열림
+    public static final int SETTING_ITEM_SUB_DEVICE_REMOTECALL_HOMEVIEWER_USE   = SETTING_ITEM_TYPE_BASE + 186; //방문객원격통화 - 홈뷰어
+
+    public static final int SETTING_ITEM_SUB_DEVICE_SUBWALLPAD					= SETTING_ITEM_TYPE_BASE + 187; //서브월패드 설정
+    public static final int SETTING_ITEM_SUB_DEVICE_SUBWALLPAD_PSTN				= SETTING_ITEM_TYPE_BASE + 188; //서브월패드국선전화연동
+    public static final int SETTING_ITEM_SUB_DEVICE_SUBWALLPAD_LIGHT  			= SETTING_ITEM_TYPE_BASE + 189; //서브월패드조명연동
+    public static final int SETTING_ITEM_SUB_DEVICE_SUBWALLPAD_HEATER  			= SETTING_ITEM_TYPE_BASE + 190; //서브월패드난방연동
+    public static final int SETTING_ITEM_SUB_DEVICE_SUBWALLPAD_GAS  			= SETTING_ITEM_TYPE_BASE + 191; //서브월패드가스연동
+    public static final int SETTING_ITEM_SUB_DEVICE_SUBWALLPAD_DOORLOCK  		= SETTING_ITEM_TYPE_BASE + 192; //서브월패드도어락연동
+    public static final int SETTING_ITEM_SUB_DEVICE_SUBWALLPAD_VENTI  			= SETTING_ITEM_TYPE_BASE + 193; //서브월패드환기연동
+
+    public static final int SETTING_ITEM_SUB_DEVICE_STRANGER_RECORDING_USE      = SETTING_ITEM_TYPE_BASE + 194; //거동수상자녹화
+    public static final int SETTING_ITEM_SUB_DEVICE_EMERGENCY_CONTACT_SWITCH_USE = SETTING_ITEM_TYPE_BASE + 195; //비상접점스위치
+    public static final int SETTING_ITEM_SUB_DEVICE_SENDWEATHER_REVERSRE        = SETTING_ITEM_TYPE_BASE + 196; //서브폰날씨정보역순전송
+    public static final int SETTING_ITEM_SUB_DEVICE_SYSTEMAIRCON_HEAT_SUPPORT   = SETTING_ITEM_TYPE_BASE + 197; //시스템에어컨난방기능지원
+    public static final int SETTING_ITEM_SUB_DEVICE_SAFESTREETLIGHT_USE         = SETTING_ITEM_TYPE_BASE + 198; //안전가로등
+    public static final int SETTING_ITEM_SUB_DEVICE_BATHSENSOR_USE              = SETTING_ITEM_TYPE_BASE + 199; //욕실센서등
+    public static final int SETTING_ITEM_SUB_DEVICE_FRONT                       = SETTING_ITEM_TYPE_BASE + 200; //현관통화
+    public static final int SETTING_ITEM_SUB_DEVICE_LOBBY                       = SETTING_ITEM_TYPE_BASE + 201; //로비통화
+    public static final int SETTING_ITEM_SUB_DEVICE_GUARD                       = SETTING_ITEM_TYPE_BASE + 202; //경비통화
+    public static final int SETTING_ITEM_SUB_DEVICE_RESIDENCE                   = SETTING_ITEM_TYPE_BASE + 203; //이웃통화
+    public static final int SETTING_ITEM_SUB_DEVICE_PSTN                        = SETTING_ITEM_TYPE_BASE + 204; //국선통화
+    public static final int SETTING_ITEM_SUB_DEVICE_CALLHISTORY                 = SETTING_ITEM_TYPE_BASE + 205; //통화내역
+    public static final int SETTING_ITEM_SUB_DEVICE_VISITORPIC                  = SETTING_ITEM_TYPE_BASE + 206; //방문자사진
+    public static final int SETTING_ITEM_SUB_DEVICE_REMOTECALLSVR_WEBPORT       = SETTING_ITEM_TYPE_BASE + 207; //방문객원격통화WEB포트
+    public static final int SETTING_ITEM_SUB_DEVICE_LCDKEEPER_USE               = SETTING_ITEM_TYPE_BASE + 208; //LCD Keeper
+    public static final int SETTING_ITEM_SUB_DEVICE_VENTI_SERVICE_QR            = SETTING_ITEM_TYPE_BASE + 209; //환기케어서비스QR
+    public static final int SETTING_ITEM_SUB_DEVICE_THEDISABLED_HOME            = SETTING_ITEM_TYPE_BASE + 210; //장애인세대
+    public static final int SETTING_ITEM_SUB_DEVICE_CO2_REDUCTION               = SETTING_ITEM_TYPE_BASE + 211; // 이산화탄소절감률
+    public static final int SETTING_ITEM_SUB_DEVICE_HEATLIGHTROOM_NAMESET       = SETTING_ITEM_TYPE_BASE + 212; //난방조명방명칭설정
+    public static final int SETTING_ITEM_SUB_DEVICE_SMARTSWITCH_ENERGY          = SETTING_ITEM_TYPE_BASE + 213; //스마트스위치에너지종류
+    public static final int SETTING_ITEM_SUB_DEVICE_PURITY                      = SETTING_ITEM_TYPE_BASE + 214; //청정환기
+    public static final int SETTING_ITEM_SUB_DEVICE_LOUVER                      = SETTING_ITEM_TYPE_BASE + 215; //전동루버
+    public static final int SETTING_ITEM_SUB_DEVICE_BIOMETICS                   = SETTING_ITEM_TYPE_BASE + 216; //생체인식
+    public static final int SETTING_ITEM_SUB_DEVICE_POWERCONTROLLER             = SETTING_ITEM_TYPE_BASE + 217; //통합전력제어기
+
+    public static final String[] SUB_DEVICE_ITEM_ID = {
+            "가스밸브"
+            , "디지털도어락"
+            , "온도조절기"
+            , "조명제어기"
+            , "환기시스템"
+            , "시스템에어컨"
+            , "전동커튼"
+            , "실시간검침기"
+            , "스마트스위치&일괄소등"
+            , "무선리모컨"
+            , "현관카메라"
+            , "공지사항"
+            , "날씨"
+            , "메모"
+            , "전자액자"
+            , "일정표"
+            , "주차확인"
+            , "시간설정"
+            , "원격검침"
+            , "뮤직"
+            , "영상재생"
+            , "CCTV"
+            , "명칭설정"
+            , "출동경비"
+            , "경비실영상통화"
+            , "엘리베이터"
+            , "현장특화기능"
+            , "월패드카메라"
+            , "무드등"
+            , "피난사다리"
+            , "동체설정"
+            , "알람발생"
+            , "서브폰국선연동"
+            , "현관폰사운드출력음량"
+            , "아이파크에너지"
+            , "대기전력차단스위치"
+            , "에너지모듈"
+            , "에너지제품군"
+            , "스마트키"
+            , "멀티스위치"
+            , "전기차충전"
+            , "LH특화기능"
+            , "U-City"
+            , "에너지관리서버"
+            , "제로에너지하우스"
+            , "재택모드시동체센서사용"
+            , "장애인모드"
+            , "엘리베이터핫키"
+            , "즐겨찾기아이콘종류"
+            , "통화타임아웃"
+            , "IP대역확장"
+            , "무선도어락문열림대기모드"
+            , "임대세대"
+            , "단지내임대세대"
+            , "BLE스마트키"
+            , "게이트웨이"
+            , "KCC디밍제어기"
+            , "매뉴얼"
+            , "신형단지서버"
+            , "피난사다리방송알림"
+            , "밴드위치확인"
+            , "제어시퀀스제한"
+            , "난방일체형"
+            , "가스감지5회알람"
+            , "서브폰통신속도"
+            , "메인GUI선택"
+            , "분전반"
+            , "센서AP"
+            , "층간소음센서"
+            , "안심통화"
+            , "방문객원격통화"
+            , "재실센서"
+            , "게이트웨이모델"
+            , "방문객차량등록"
+            , "모바일앱사용자인증"
+            , "통합스위치"
+            , "전기레인지"
+            , "인터넷미지원"
+            , "쿡탑콘센트"
+            , "스마트우편함"
+            , "스마트키친"
+            , "간편모드UX지원"
+            , "피난사다리입하수신"
+            , "거실EM주방등"
+            , "안면인식모듈"
+            , "방문객원격통화-현관문열림"
+            , "방문객원격통화-홈뷰어"
+            , "서브월패드"
+            , "서브월패드국선전화연동"
+            , "서브월패드조명연동"
+            , "서브월패드난방연동"
+            , "서브월패드가스연동"
+            , "서브월패드도어락연동"
+            , "서브월패드환기연동"
+            , "거동수상자녹화"
+            , "비상접점스위치"
+            , "서브폰날씨정보역순전송"
+            , "시스템에어컨난방기능지원"
+            , "안전가로등"
+            , "욕실센서등"
+            , "현관"
+            , "로비"
+            , "경비"
+            , "이웃"
+            , "국선"
+            , "통화내역"
+            , "방문자사진"
+            , "방문객원격통화WEB포트"
+            , "LCDKEEPER"
+            , "환기케어서비스QR"
+            , "장애인세대"
+            , "이산화탄소절감률"
+            , "난방조명방명칭설정"
+            , "스마트스위치에너지종류"
+            , "청정환기"
+            , "전동루버"
+            , "생체인식"
+            , "통합전력제어기"
+    };
+
+
+
+    public static final int SETTING_ITEM_APP_BASE = 201;
+    public static final int SETTING_ITEM_APP_WALLPADCONFIG      = SETTING_ITEM_APP_BASE + 0;
+    public static final int SETTING_ITEM_APP_DEVICESERVICE      = SETTING_ITEM_APP_BASE + 1;
+    public static final int SETTING_ITEM_APP_WALLPADEMERGENCY   = SETTING_ITEM_APP_BASE + 2;
+    public static final int SETTING_ITEM_APP_WALLPADENERGYCTRL  = SETTING_ITEM_APP_BASE + 3;
+    public static final int SETTING_ITEM_APP_WALLPADHOMECTRL    = SETTING_ITEM_APP_BASE + 4;
+    public static final int SETTING_ITEM_APP_WALLPADMAIN        = SETTING_ITEM_APP_BASE + 5;
+    public static final int SETTING_ITEM_APP_WALLPADOUTMODERUN  = SETTING_ITEM_APP_BASE + 6;
+    public static final int SETTING_ITEM_APP_WALLPADSECURITY    = SETTING_ITEM_APP_BASE + 7;
+    public static final int SETTING_ITEM_APP_IC_WALLPAD         = SETTING_ITEM_APP_BASE + 8;
+    public static final int SETTING_ITEM_APP_MANAGERSETTING     = SETTING_ITEM_APP_BASE + 9;
+    public static final int SETTING_ITEM_APP_WALLPADADDSERVICE  = SETTING_ITEM_APP_BASE + 10;
+
+    public static final int SETTING_ITEM_APP_WALLPADAUTOPICTURE = SETTING_ITEM_APP_BASE + 11;
+    public static final int SETTING_ITEM_APP_WALLPADLOGOUTPUT   = SETTING_ITEM_APP_BASE + 12;
+    public static final int SETTING_ITEM_APP_WALLPADUPDATER     = SETTING_ITEM_APP_BASE + 13;
+    public static final int SETTING_ITEM_APP_WALLPADAPPUPDATER  = SETTING_ITEM_APP_BASE + 14;
+
+
+
+    private Context mContext;
+    private Handler mHandler;
+    private int ModelType = Version.getModelType();
+
+    // constructor
+    public MainDatabaseManager(Context context, Handler handler, Object obj) {
+        mContext = context;
+        mHandler = handler;
+
+
+        if (mContext == null)
+            if (DEBUG)  Log.d(TAG, "MainDatabaseManager() (mContext == null)");
+            else
+            if (DEBUG)  Log.d(TAG, "MainDatabaseManager() (mContext != null)");
+
+        loadGuardList();
+    }
+
+
+    // return Context
+    public Context getContext() {
+        return mContext;
+    }
+
+
+    // return 동 BaseNumber
+    public int getDongBaseNumber() {
+        int ret = -1;
+
+        wallpaddbmgr dbmgr = new wallpaddbmgr(mContext);
+        AddressSet addc =  dbmgr.getAddressMGR();
+        dbmgr.closeDB();
+
+        int nDong = StringUtil.getInt(addc.Dong, false);
+        if (nDong > -1)
+            ret = (nDong/100) * 100;
+
+        return ret;
+    }
+
+
+    // return 동
+    public String getDongString() {
+        String result = "";
+
+        wallpaddbmgr dbmgr = new wallpaddbmgr(mContext);
+        AddressSet addc =  dbmgr.getAddressMGR();
+        dbmgr.closeDB();
+
+        result = addc.Dong;
+
+        if (DEBUG)  Log.d(TAG, "Dong : " + addc.Dong);
+        return result;
+    }
+
+
+    // return 호
+    public String getHoString() {
+        String result = "";
+
+        wallpaddbmgr dbmgr = new wallpaddbmgr(mContext);
+        AddressSet addc =  dbmgr.getAddressMGR();
+        dbmgr.closeDB();
+
+        result = addc.Ho;
+
+        if (DEBUG)  Log.d(TAG, "Ho : " + addc.Ho);
+        return result;
+    }
+
+
+
+
+
+
+
+
+
+    private List<GuardInfo> mGuardList = new ArrayList<GuardInfo>();
+
+    public class GuardInfo {
+        public static final int GUARD_TYPE_JURISDICTION         = 1;    //GuardAction.ACTION_JURISDICTION_GUARD;
+        public static final int GUARD_TYPE_FRONT_GATE           = 2;    //GuardAction.ACTION_FRONT_GATE_GUARD;
+        public static final int GUARD_TYPE_BACK_GATE            = 3;    //GuardAction.ACTION_BACK_GATE_GUARD;
+        public static final int GUARD_TYPE_MANAGEMENT_OFFICE    = 4;    //GuardAction.ACTION_MANAGEMENT_OFFICE;
+        public static final int GUARD_TYPE_ETC                  = 9;
+
+        private String mName;
+        private String mDong;
+        private String mHo;
+        private String mIP;
+        private int mType = GUARD_TYPE_ETC;
+        private String mSipID;
+
+        // constructor
+        public GuardInfo(String name, String dong, String ho, String ip, int type, String sipID) {
+            mName = name;
+            mDong = dong;
+            mHo = ho;
+            mIP = ip;
+            mType = type;
+            mSipID = sipID;
+        }
+
+        // set IP
+        public void setIP(String ip) {
+            mIP = ip;
+        }
+
+        // set Type
+        public void setType(int type) {
+            mType= type;
+        }
+
+        // set SipID
+        public void setSipID(String sipID) {
+            mSipID = sipID;
+        }
+
+
+        // get Name
+        public String getName() {
+            return mName;
+        }
+
+        // get IP
+        public String getIP() {
+            return mIP;
+        }
+
+        // get Type
+        public int getType() {
+            return mType;
+        }
+
+        // get SipID
+        public String getSipID() {
+            return mSipID;
+        }
+
+        // get 동
+        public String getDong() {
+            return mDong;
+        }
+
+        // get 호
+        public String getHo() {
+            return mHo;
+        }
+    }
+
+
+    // Forward Call을 수행할 GuardInfo를 return
+    public GuardInfo getForwardGuard() {
+        if (DEBUG)  Log.d(TAG, " getForwardGuard()");
+
+        if (mGuardList.size() > 0) {
+            for (int i=0; i<mGuardList.size(); i++) {
+                if (mGuardList.get(i).getType() == GuardInfo.GUARD_TYPE_JURISDICTION)
+                    return mGuardList.get(i);
+            }
+
+            return mGuardList.get(0);
+        }
+
+        return null;
+    }
+
+
+    // return GuardList
+    public List<GuardInfo>  getGuardList() {
+        return mGuardList;
+    }
+
+
+    // load GuardList
+    public void  loadGuardList() {
+        mGuardList.clear();
+
+        List<String[]> guardList = getSettingDataList(SETTING_ITEM_GUARD_LIST);
+        if (guardList != null) {
+            for (int i=0; i<guardList.size(); i++) {
+                GuardInfo guardInfo = createGuardInfo(guardList.get(i)[0], guardList.get(i)[1]);
+                if (guardInfo != null)
+                    mGuardList.add(guardInfo);
+            }
+        }
+        else {
+            GuardInfo guardInfo = getDefaultGuardInfo();
+            if (guardInfo != null)
+                mGuardList.add(guardInfo);
+        }
+
+        if (DEBUG)  {
+            Log.d(TAG, " mGuardList.size() : " + mGuardList.size());
+
+            for (int i=0; i<mGuardList.size(); i++) {
+                Log.d(TAG, " mGuardList.get(" + i + ") name : " + mGuardList.get(i).getName()
+                        + ", ip : " + mGuardList.get(i).getIP()
+                        + ", type : " + mGuardList.get(i).getType()
+                        + ", sipID : " + mGuardList.get(i).getSipID()
+                );
+            }
+        }
+    }
+
+
+    // get GuardName By Type
+    public String getGuardNameByType(int guardType) {
+        String strName = null;
+
+        switch (guardType) {
+            case GuardInfo.GUARD_TYPE_JURISDICTION:
+                strName = mContext.getString(R.string.guard_jurisdiction_name);
+                break;
+
+            case GuardInfo.GUARD_TYPE_FRONT_GATE:
+                strName = mContext.getString(R.string.guard_front_gate_name);
+                break;
+
+            case GuardInfo.GUARD_TYPE_BACK_GATE:
+                strName = mContext.getString(R.string.guard_back_gate_name);
+                break;
+
+            case GuardInfo.GUARD_TYPE_MANAGEMENT_OFFICE:
+                strName = mContext.getString(R.string.guard_management_office_name);
+                break;
+
+            case GuardInfo.GUARD_TYPE_ETC:
+                strName = mContext.getString(R.string.guard_etc_name);
+                break;
+        }
+
+        return strName;
+    }
+
+
+    // get GuardType By Name
+    public int getGuardTypeByName(String strName) {
+        int guardType = GuardInfo.GUARD_TYPE_ETC;
+
+        if (mContext.getString(R.string.guard_jurisdiction_name).equals(strName)) {
+            guardType = GuardInfo.GUARD_TYPE_JURISDICTION;
+        }
+        else if (mContext.getString(R.string.guard_front_gate_name).equals(strName)) {
+            guardType = GuardInfo.GUARD_TYPE_FRONT_GATE;
+        }
+        else if (mContext.getString(R.string.guard_back_gate_name).equals(strName)) {
+            guardType = GuardInfo.GUARD_TYPE_BACK_GATE;
+        }
+        else if (mContext.getString(R.string.guard_management_office_name).equals(strName)) {
+            guardType = GuardInfo.GUARD_TYPE_MANAGEMENT_OFFICE;
+        }
+
+        return guardType;
+    }
+
+
+    // get GuardType By SipID
+    public int getGuardTypeByID(String strSipID) {
+        int guardType = GuardInfo.GUARD_TYPE_ETC;
+
+
+        if (mGuardList != null) {
+            for (int i=0; i < mGuardList.size(); i++) {
+                if (mGuardList.get(i).getSipID().equals(strSipID)) {
+                    guardType = mGuardList.get(i).getType();
+                    break;
+                }
+            }
+        }
+
+        return guardType;
+    }
+
+
+    // get GuardInfo By SipID
+    public GuardInfo getGuardByID(String strSipID) {
+        GuardInfo guardInfo = null;
+
+        if (mGuardList != null) {
+            for (int i=0; i < mGuardList.size(); i++) {
+                if (mGuardList.get(i).getSipID().equals(strSipID)) {
+                    guardInfo = mGuardList.get(i);
+                    break;
+                }
+            }
+        }
+
+        return guardInfo;
+    }
+
+
+
+
+    // get default GuardInfo
+    private GuardInfo getDefaultGuardInfo() {
+        if (DEBUG)  Log.d(TAG, " getDefaultGuardInfo()");
+
+        GuardInfo guardInfo = null;
+
+        if (mContext == null)
+            if (DEBUG)  Log.d(TAG, " (mContext == null)");
+            else
+            if (DEBUG)  Log.d(TAG, " (mContext != null)");
+
+
+        String strName = mContext.getString(R.string.guard_jurisdiction_name);
+        int baseDongIP = NetworkUtil.getDongBaseNumber(mContext);
+
+        if (baseDongIP > -1) {
+            String myIP =  NetworkUtil.getMyIP(mContext);
+            String[] arrString = StringUtil.split(myIP, ".");
+            if (arrString.length > 3) {
+
+                if (DEBUG)  Log.d(TAG, " arrString.length : " + arrString.length);
+
+                if (DEBUG)  Log.d(TAG, " arrString[0] : " + arrString[0]);
+                if (DEBUG)  Log.d(TAG, " arrString[1] : " + arrString[1]);
+                if (DEBUG)  Log.d(TAG, " arrString[2] : " + arrString[2]);
+                if (DEBUG)  Log.d(TAG, " arrString[3] : " + arrString[3]);
+
+                int nDongIP = Const.DEFAULT_GUARD_IP_SECOND; //StringUtil.getInt(arrString[1], false);
+                if (nDongIP > -1) {
+                    String strDong = String.valueOf(nDongIP + baseDongIP);
+
+                    String strIP = arrString[0] + "."
+                            + nDongIP + "."
+                            + Const.DEFAULT_GUARD_IP_THIRD+ "."
+                            + Const.DEFAULT_GUARD_IP_FORTH;
+
+                    if (DEBUG)  Log.d(TAG, " strIP : " + strIP);
+
+                    String strSipID = makeSipID(Const.CALL_TYPE_GUARD, strDong, String.valueOf(Const.DEFAULT_GUARD_IP_FORTH));
+
+                    guardInfo = new GuardInfo(strName
+                            , strDong
+                            , "" + Const.DEFAULT_GUARD_IP_FORTH
+                            , strIP
+                            , GuardInfo.GUARD_TYPE_JURISDICTION
+                            , strSipID
+                    );
+                }
+            }
+        }
+
+        return guardInfo;
+    }
+
+
+
+    // create GuardInfo
+    private GuardInfo createGuardInfo(String strName, String strID) {
+        if (DEBUG)  Log.d(TAG, " createGuardInfo() strName : " + strName
+                + ", strID : " + strID
+        );
+
+        GuardInfo guardInfo = null;
+        boolean UseIP_Expantion = isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DANJI_CONFIG);
+
+        if(UseIP_Expantion == false) //IP대역 확장 사용하지 않는 경우
+        {
+            if ((strID.length() <= 2) || (strID.length() > 4)) {
+                return null;
+            }
+
+            int baseDongIP = NetworkUtil.getDongBaseNumber(mContext);
+            int guardType = getGuardTypeByName(strName);
+
+            int splitIdx = 2;
+            if (strID.length() == 3)
+                splitIdx = 1;
+
+            String strDongIP = strID.substring(0, splitIdx);
+            String strHo = strID.substring(splitIdx, strID.length());
+
+            int nDongIP = StringUtil.getInt(strDongIP, false);
+
+            if ((baseDongIP > -1) && (nDongIP > -1)) {
+                String myIP =  NetworkUtil.getMyIP(mContext);
+                String[] arrString = StringUtil.split(myIP, ".");
+                if (arrString.length > 3) {
+
+                    if (DEBUG)  Log.d(TAG, " arrString.length : " + arrString.length);
+
+                    if (DEBUG)  Log.d(TAG, " arrString[0] : " + arrString[0]);
+                    if (DEBUG)  Log.d(TAG, " arrString[1] : " + arrString[1]);
+                    if (DEBUG)  Log.d(TAG, " arrString[2] : " + arrString[2]);
+                    if (DEBUG)  Log.d(TAG, " arrString[3] : " + arrString[3]);
+
+                    String strDong = String.valueOf(nDongIP + baseDongIP);
+                    String strIP = arrString[0] + "."
+                            + nDongIP + "."
+                            + Const.DEFAULT_GUARD_IP_THIRD+ "."
+                            + strHo;
+
+                    if (DEBUG)  Log.d(TAG, strName + " : " + strIP);
+
+                    String strSipID = makeSipID(Const.CALL_TYPE_GUARD, strDong, strHo);
+
+                    guardInfo = new GuardInfo(strName
+                            , strDong
+                            , strHo
+                            , strIP
+                            , guardType
+                            , strSipID);
+                }
+            }
+
+            return guardInfo;
+        }
+        else // IP확장 사용 하는 경우
+        {
+            int guardType = getGuardTypeByName(strName);
+
+            String[] arrString = StringUtil.split(strID, ".");
+            String strDong = null;
+            String strHo = null;
+
+            if (arrString.length > 3)
+            {
+                int[] tempInt = new int[4];
+                tempInt[0] = Integer.parseInt(arrString[0]);
+                tempInt[1] = Integer.parseInt(arrString[1]);
+                tempInt[2] = Integer.parseInt(arrString[2]);
+                tempInt[3] = Integer.parseInt(arrString[3]);
+
+                int IntDong = (tempInt[0] * 100) + tempInt[1];
+                strDong = String.valueOf(IntDong);
+                strHo = arrString[3];
+
+                String strSipID = makeSipID(Const.CALL_TYPE_GUARD, strDong, strHo);
+                String strIP = strID;
+
+                guardInfo = new GuardInfo(strName, strDong, strHo, strIP, guardType, strSipID);
+            }
+        }
+
+        return guardInfo;
+
+    }
+
+
+
+    // make GuardInfo
+    public GuardInfo makeGuardInfo(int guardType, String strSipID) {
+        if (DEBUG)  Log.d(TAG, " makeGuardInfo() guardType : " + guardType
+                + ", strSipID : " + strSipID
+        );
+
+        if ((strSipID == null) || (strSipID.length() < 20)) {
+            return null;
+        }
+
+        GuardInfo guardInfo = null;
+
+
+        String[] arrDongHo = StringUtil.getDongHo(mContext, strSipID);
+        if ((arrDongHo != null) && (arrDongHo.length > 4)) {
+            String strDong = "" + StringUtil.getInt(arrDongHo[2], false);
+            String strHo = "" + StringUtil.getInt(arrDongHo[3], false);
+
+            int baseDongIP = NetworkUtil.getDongBaseNumber(mContext);
+            String strName = getGuardNameByType(guardType);
+
+            if (DEBUG)  Log.d(TAG, " strName : " + strName);
+
+            int splitIdx = 2;
+
+            int nDongIP = StringUtil.getInt(strDong, false);
+
+            if ((baseDongIP > -1) && (nDongIP > -1)) {
+                String myIP =  NetworkUtil.getMyIP(mContext);
+                String[] arrString = StringUtil.split(myIP, ".");
+                if (arrString.length > 3) {
+
+                    if (DEBUG)  Log.d(TAG, " arrString.length : " + arrString.length);
+
+                    if (DEBUG)  Log.d(TAG, " arrString[0] : " + arrString[0]);
+                    if (DEBUG)  Log.d(TAG, " arrString[1] : " + arrString[1]);
+                    if (DEBUG)  Log.d(TAG, " arrString[2] : " + arrString[2]);
+                    if (DEBUG)  Log.d(TAG, " arrString[3] : " + arrString[3]);
+
+                    nDongIP = nDongIP - baseDongIP;
+                    String strIP = arrString[0] + "."
+                            + nDongIP + "."
+                            + Const.DEFAULT_GUARD_IP_THIRD+ "."
+                            + strHo;
+
+                    if (DEBUG)  Log.d(TAG, strName + " : " + strIP);
+
+                    guardInfo = new GuardInfo(strName
+                            , strDong
+                            , strHo
+                            , strIP
+                            , guardType
+                            , strSipID);
+                }
+            }
+        }
+
+        return guardInfo;
+    }
+
+
+/*
+    public String getSipIPByID(String strSipID) {
+        String strIP = null;
+
+        int sipCallType = SipCallController.getSipCallTypeByID(strSipID);
+        switch (sipCallType) {
+            case Const.CALL_TYPE_LOBBY:
+                strIP = getLobbyIPByID(strSipID);
+                break;
+
+            case Const.CALL_TYPE_GUARD:
+                strIP = getGuardIPByID(strSipID);
+                break;
+
+            case Const.CALL_TYPE_NEIB:
+                strIP = getNeiIPByID(strSipID);
+                break;
+        }
+
+        return strIP;
+    }
+*/
+
+
+    // get LobbyIP By SipID
+    public String getLobbyIPByID(String strSipID) {
+        if (DEBUG)  Log.d(TAG, " getLobbyIPByID() strSipID : " + strSipID);
+
+        if ((strSipID == null) || (strSipID.length() < 20)) {
+            return null;
+        }
+
+        String strIP = null;
+
+        String[] arrDongHo = StringUtil.getDongHo(mContext, strSipID);
+        if ((arrDongHo != null) && (arrDongHo.length > 4)) {
+            int nDongIP = StringUtil.getInt(arrDongHo[2], false);
+            int nHo = StringUtil.getInt(arrDongHo[3], false);
+
+            int nIP_Third = -1;
+            int nIP_Forth = -1;
+            if (nHo > -1) {
+                nIP_Third = (nHo/100);
+                nIP_Forth = (nHo - (nIP_Third *100));
+            }
+
+            int baseDongIP = getDongBaseNumber();
+
+            if ((baseDongIP > -1) && (nDongIP > -1) && (nIP_Third > -1) && (nIP_Forth > -1)) {
+                String myIP =  NetworkUtil.getMyIP(mContext);
+                String[] arrString = StringUtil.split(myIP, ".");
+                if (arrString.length > 3) {
+
+                    if (DEBUG)  Log.d(TAG, " arrString.length : " + arrString.length);
+
+                    if (DEBUG)  Log.d(TAG, " arrString[0] : " + arrString[0]);
+                    if (DEBUG)  Log.d(TAG, " arrString[1] : " + arrString[1]);
+                    if (DEBUG)  Log.d(TAG, " arrString[2] : " + arrString[2]);
+                    if (DEBUG)  Log.d(TAG, " arrString[3] : " + arrString[3]);
+
+                    nDongIP = nDongIP - baseDongIP;
+                    strIP = arrString[0] + "."
+                            + nDongIP + "."
+                            + Const.DEFAULT_LOBBY_IP_THIRD+ "."
+                            + nIP_Forth;
+
+                }
+            }
+        }
+
+        return strIP;
+    }
+
+
+    // get NeiIP By SipID
+    public String getNeiIPByID(String strSipID) {
+        if (DEBUG)  Log.d(TAG, " getNeiIPByID() strSipID : " + strSipID);
+
+        if ((strSipID == null) || (strSipID.length() < 20)) {
+            return null;
+        }
+
+        String strIP = null;
+
+        String[] arrDongHo = StringUtil.getDongHo(mContext, strSipID);
+        if ((arrDongHo != null) && (arrDongHo.length > 4)) {
+            int nDongIP = StringUtil.getInt(arrDongHo[2], false);
+            int nHo = StringUtil.getInt(arrDongHo[3], false);
+
+            int nIP_Third = -1;
+            int nIP_Forth = -1;
+            if (nHo > -1) {
+                nIP_Third = (nHo/100);
+                nIP_Forth = (nHo - (nIP_Third *100));
+            }
+
+            int baseDongIP = getDongBaseNumber();
+
+            if ((baseDongIP > -1) && (nDongIP > -1) && (nIP_Third > -1) && (nIP_Forth > -1)) {
+                String myIP =  NetworkUtil.getMyIP(mContext);
+                String[] arrString = StringUtil.split(myIP, ".");
+                if (arrString.length > 3) {
+
+                    if (DEBUG)  Log.d(TAG, " arrString.length : " + arrString.length);
+
+                    if (DEBUG)  Log.d(TAG, " arrString[0] : " + arrString[0]);
+                    if (DEBUG)  Log.d(TAG, " arrString[1] : " + arrString[1]);
+                    if (DEBUG)  Log.d(TAG, " arrString[2] : " + arrString[2]);
+                    if (DEBUG)  Log.d(TAG, " arrString[3] : " + arrString[3]);
+
+                    nDongIP = nDongIP - baseDongIP;
+                    strIP = arrString[0] + "."
+                            + nDongIP + "."
+                            + nIP_Third + "."
+                            + nIP_Forth;
+
+                }
+            }
+        }
+
+        return strIP;
+    }
+
+
+    // get GuardIP By SipID
+    public String getGuardIPByID(String strSipID) {
+        if (DEBUG)  Log.d(TAG, " getGuardIPByID() strSipID : " + strSipID);
+
+        if ((strSipID == null) || (strSipID.length() < 20)) {
+            return null;
+        }
+
+        String strIP = null;
+
+        GuardInfo GuardInfo = getGuardByID(strSipID);
+        if (GuardInfo != null)
+            strIP = GuardInfo.getIP();
+
+        return strIP;
+    }
+
+
+    // make SipID
+    public String makeSipID(int sipCallType, String strDong, String strHo) {
+        if (DEBUG)  Log.d(TAG, " makeSipID() sipCallType : " + sipCallType
+                + ", strDong : " + strDong
+                + ", strHo : " + strHo
+        );
+
+        String ret = "";
+
+        String strSiteCode = getSettingData(SETTING_ITEM_SITE_CODE);
+        if ((strSiteCode == null) || (strSiteCode.length() == 0))
+            strSiteCode = Const.SITE_CODE_DEFAULT_VALUE;
+
+        String strType = "";
+        switch(sipCallType) {
+            case Const.CALL_TYPE_LOBBY:
+                strType = Const.SIP_LOBBY_DEVICE_TYPE;
+                break;
+
+            case Const.CALL_TYPE_GUARD:
+                strType = Const.SIP_GUARD_DEVICE_TYPE;
+                break;
+
+            default:
+            case Const.CALL_TYPE_NEIB:
+                strType = Const.SIP_NEI_DEVICE_TYPE;
+                break;
+        }
+
+        for (int i = 4 - strDong.length(); i > 0; i--) {
+            strDong = "0" + strDong;
+        }
+
+        for (int i = 4 - strHo.length(); i > 0; i--) {
+            strHo = "0" + strHo;
+        }
+
+        String strPostNumber = "01";
+
+        ret = strSiteCode + "_"
+                + strType + "_"
+                + strDong + "_"
+                + strHo + "_"
+                + strPostNumber
+        ;
+
+        if (DEBUG)  Log.d(TAG, " makeSipID() ret : " + ret);
+
+        return ret;
+    }
+
+
+
+
+
+
+
+
+
+    // 외출모드 여부
+    public boolean isGoOutMode() {
+        boolean ret = false;
+
+        WallpadStatusData wallpadStatusData = new WallpadStatusData(mContext);
+
+        try {
+            if (wallpadStatusData.GetAlarmStatus() == WallpadStatusData.GUARD_OUT)
+                ret = true;
+        }
+        catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        wallpadStatusData.closeDB();
+
+        if (DEBUG)  Log.d(TAG, " isGoOutMode() " + ret);
+
+        return ret;
+    }
+
+
+
+/*
+        public String[] GetSettingData(String Name)
+        {
+               String query = "select name, value from "+SettingTBL+" where name = \""+Name+"\";";
+               Cursor cursor = wdb.rawQuery(query, null);
+               while (cursor.moveToNext())
+               {
+                       String[] getdata = new String[]{cursor.getString(0),cursor.getString(1)};
+                       return getdata;
+               }
+               return null;
+        }
+*/
+
+
+    // get SettingData
+    public String getSettingData(int itemType) {
+        if (DEBUG)  Log.d(TAG, " getSettingData() itemType : " + itemType);
+
+        int Data_or_Version = 0; //1이면 APP버전정보, 0이면 기타.
+        String ret = null;
+        String[] getData = null;
+        String getVersion = null;
+        wallpaddbmgr WallpadDBMGR = new wallpaddbmgr(mContext);
+        WallpadDeviceSet devset = new WallpadDeviceSet(mContext);
+
+        if (devset != null) {
+            switch (itemType) {
+                case SETTING_ITEM_VER_SETTING:
+                    getData = devset.GetSettingData("ver_setting");
+                    break;
+
+                case SETTING_ITEM_LOG_ENABLE:
+                    getData = devset.GetSettingData("log_enable");
+                    break;
+
+                case SETTING_ITEM_BEAT_TIME:
+                    getData = devset.GetSettingData("beat_time");
+                    break;
+
+                case SETTING_ITEM_DATETIME:
+                    getData = devset.GetSettingData("datetime");
+                    break;
+
+//                case SETTING_ITEM_SECURITY_STATE:
+//                    getData = devset.GetSettingData("security_state");
+//                    break;
+
+                case SETTING_ITEM_SITE_CODE:
+                    getData = devset.GetSettingData("site_code");
+                    break;
+
+
+                case SETTING_ITEM_APP_WALLPADCONFIG:
+                    getVersion = WallpadDBMGR.GetVersionData(Const.AppName_WallPadConfig);
+                    Data_or_Version = 1;
+                    break;
+
+                case SETTING_ITEM_APP_DEVICESERVICE:
+                    getVersion = WallpadDBMGR.GetVersionData(Const.AppName_WallPadDeviceService);
+                    Data_or_Version = 1;
+                    break;
+
+                case SETTING_ITEM_APP_WALLPADEMERGENCY:
+                    getVersion = WallpadDBMGR.GetVersionData(Const.AppName_WallPadEmergency);
+                    Data_or_Version = 1;
+                    break;
+
+                case SETTING_ITEM_APP_WALLPADENERGYCTRL:
+                    getVersion = WallpadDBMGR.GetVersionData(Const.AppName_WallPadEnergyCtrl);
+                    Data_or_Version = 1;
+                    break;
+
+                case SETTING_ITEM_APP_WALLPADHOMECTRL:
+                    getVersion = WallpadDBMGR.GetVersionData(Const.AppName_WallPadHomeCtrl);
+                    Data_or_Version = 1;
+                    break;
+
+                case SETTING_ITEM_APP_WALLPADMAIN:
+                    getVersion = WallpadDBMGR.GetVersionData(Const.AppName_WallPadMain);
+                    Data_or_Version = 1;
+                    break;
+
+                case SETTING_ITEM_APP_WALLPADOUTMODERUN:
+                    getVersion = WallpadDBMGR.GetVersionData(Const.AppName_WallPadOutModerun);
+                    Data_or_Version = 1;
+                    break;
+
+                case SETTING_ITEM_APP_WALLPADSECURITY:
+                    getVersion = WallpadDBMGR.GetVersionData(Const.AppName_WallPadSecurity);
+                    Data_or_Version = 1;
+                    break;
+
+                case SETTING_ITEM_APP_IC_WALLPAD:
+                    getVersion = WallpadDBMGR.GetVersionData(Const.AppName_WallPadCall_hdc);
+                    Data_or_Version = 1;
+                    break;
+
+                case SETTING_ITEM_APP_MANAGERSETTING:
+                    getVersion = WallpadDBMGR.GetVersionData(Const.AppName_WallPadManagerSetting);
+                    Data_or_Version = 1;
+                    break;
+
+                case SETTING_ITEM_APP_WALLPADADDSERVICE:
+                    getVersion = WallpadDBMGR.GetVersionData(Const.AppName_WallPadAddservice);
+                    Data_or_Version = 1;
+                    break;
+
+                case SETTING_ITEM_APP_WALLPADAUTOPICTURE:
+                    getVersion = WallpadDBMGR.GetVersionData(Const.AppName_WallPadAutopicture);
+                    Data_or_Version = 1;
+                    break;
+
+                case SETTING_ITEM_APP_WALLPADLOGOUTPUT:
+                    getVersion = WallpadDBMGR.GetVersionData(Const.AppName_WallPadLogOutput);
+                    Data_or_Version = 1;
+                    break;
+
+                case SETTING_ITEM_APP_WALLPADUPDATER:
+                    getVersion = WallpadDBMGR.GetVersionData(Const.AppName_WallPadUpdater);
+                    Data_or_Version = 1;
+                    break;
+
+                case SETTING_ITEM_APP_WALLPADAPPUPDATER:
+                    getVersion = WallpadDBMGR.GetVersionData(Const.AppName_WallPadAppUpdater);
+                    Data_or_Version = 1;
+                    break;
+
+            }
+
+            devset.closeDB();
+            WallpadDBMGR.closeDB();
+        }
+
+        if(Data_or_Version == 0)
+        {
+            if ((getData != null) && getData.length > 1) {
+                ret = getData[1];
+            }
+        }
+        else if (Data_or_Version == 1)
+        {
+            ret = getVersion;
+        }
+
+        return ret;
+    }
+
+
+    // get SettingDataList
+    public List<String[]> getSettingDataList(int itemType) {
+        if (DEBUG)  Log.d(TAG, " getSettingDataList() itemType : " + itemType);
+
+        List<String[]> ret = null;
+
+        WallpadDeviceSet devset = new WallpadDeviceSet(mContext);
+        if (devset != null) {
+            switch (itemType) {
+                case SETTING_ITEM_GUARD_LIST:
+                    ret = devset.GetSettingGroupData("guard_list");
+                    break;
+
+                case SETTING_ITEM_IP_TABLE_LIST:
+                    ret = devset.GetSettingGroupData("ip_table");
+                    break;
+
+                case SETTING_ITEM_SENSOR_STATE_LIST:
+                    ret = devset.GetSettingGroupData("sensor_state");
+                    break;
+
+                case SETTING_ITEM_SUB_DEVICE_LIST:
+                    ret = devset.GetSettingGroupData("subdev_list");
+                    break;
+            }
+
+            devset.closeDB();
+        }
+
+        if ((ret == null) || (ret.size() <= 0))
+            return null;
+
+        return ret;
+    }
+
+
+    // get SubDevID
+    public String getSubDevID(int itemType) {
+        String result = null;
+
+        switch (itemType) {
+            case SETTING_ITEM_SUB_DEVICE_GAS:
+            case SETTING_ITEM_SUB_DEVICE_DOOR_LOCK:
+            case SETTING_ITEM_SUB_DEVICE_HEATER:
+            case SETTING_ITEM_SUB_DEVICE_LIGHT:
+            case SETTING_ITEM_SUB_DEVICE_VENTILATION:
+            case SETTING_ITEM_SUB_DEVICE_SYSTEM_AIRCON:
+            case SETTING_ITEM_SUB_DEVICE_ELECTRONICALLY_CURTAIN:
+            case SETTING_ITEM_SUB_DEVICE_REALTIME_MEASURING_METER:
+            case SETTING_ITEM_SUB_DEVICE_SMART_SWITCH_LIGHT_AND_BATCH_CONTROL:
+            case SETTING_ITEM_SUB_DEVICE_WIRELESS_REMOCON:
+            case SETTING_ITEM_SUB_DEVICE_DOOR_CAMERA:
+            case SETTING_ITEM_SUB_DEVICE_NOTICE:
+            case SETTING_ITEM_SUB_DEVICE_WEATHER:
+            case SETTING_ITEM_SUB_DEVICE_MENO:
+            case SETTING_ITEM_SUB_DEVICE_ELECTRONIC_PICTURE_FRAMES:
+            case SETTING_ITEM_SUB_DEVICE_SCHEDULE:
+            case SETTING_ITEM_SUB_DEVICE_PARKING:
+            case SETTING_ITEM_SUB_DEVICE_TIME_SETTING:
+            case SETTING_ITEM_SUB_DEVICE_REMOTE_MESURING_METER:
+            case SETTING_ITEM_SUB_DEVICE_MUSIC:
+            case SETTING_ITEM_SUB_DEVICE_VIDEO_PLAY:
+            case SETTING_ITEM_SUB_DEVICE_CCTV:
+            case SETTING_ITEM_SUB_DEVICE_SET_NAMING:
+            case SETTING_ITEM_SUB_DEVICE_CUSTOMER_SERVICE_GUARD:
+            case SETTING_ITEM_SUB_DEVICE_GUARD_VIDEO_CALL:
+            case SETTING_ITEM_SUB_DEVICE_ELEVATOR:
+            case SETTING_ITEM_SUB_DEVICE_FIELD_TYPE:
+            case SETTING_ITEM_SUB_DEVICE_WALLPAD_CAMERA:
+            case SETTING_ITEM_SUB_DEVICE_MOOD_LIGHT:
+            case SETTING_ITEM_SUB_DEVICE_ESCAPE_LADDER:
+            case SETTING_ITEM_SUB_DEVICE_MOTION_SETTING:
+            case SETTING_ITEM_SUB_DEVICE_ALART_ALARM:
+            case SETTING_ITEM_SUB_DEVICE_PSTN_CALL:
+            case SETTING_ITEM_SUB_DEVICE_DOOR_PHONE_OUTPUT_VOLUME:
+            case SETTING_ITEM_SUB_DEVICE_IPARK_ENERGY:
+            case SETTING_ITEM_SUB_DEVICE_IDLE_POWER_SAVING_SWITCH:
+            case SETTING_ITEM_SUB_DEVICE_ENERGY_MODULE:
+            case SETTING_ITEM_SUB_DEVICE_ENERGY_DEVICES:
+            case SETTING_ITEM_SUB_DEVICE_SMART_KEY:
+            case SETTING_ITEM_SUB_DEVICE_MULTI_SWITCH:
+            case SETTING_ITEM_SUB_DEVICE_ELECTRIC_CAR:
+            case SETTING_ITEM_SUB_DEVICE_LH_ADD_FUNCTION:
+            case SETTING_ITEM_SUB_DEVICE_LH_U_CITY:
+            case SETTING_ITEM_SUB_DEVICE_ENERGY_SERVER_CONNECT:
+            case SETTING_ITEM_SUB_DEVICE_ZERO_ENERGY_HOUSE:
+            case SETTING_ITEM_SUB_DEVICE_SECURITY_INDOORMODE_SENSOR_USE:
+            case SETTING_ITEM_SUB_DEVICE_HANDICAPPED:
+            case SETTING_ITEM_SUB_DEVICE_ELEVATOR_MAINSCREEN_USE:
+            case SETTING_ITEM_SUB_DEVICE_BOOKMARK_TYPE:
+            case SETTING_ITEM_SUB_DEVICE_SUBPHONE_BAUDRATE:
+            case SETTING_ITEM_SUB_DEVICE_CALL_TIMEOUT:
+            case SETTING_ITEM_SUB_DEVICE_DANJI_CONFIG:
+            case SETTING_ITEM_SUB_DEVICE_WIRELESS_DOORLOCK_OPENDELAY:
+            case SETTING_ITEM_SUB_DEVICE_RENT_HOME:
+            case SETTING_ITEM_SUB_DEVICE_DANJI_RENT_HOME_USE:
+            case SETTING_ITEM_SUB_DEVICE_BLE_SMARTKEY:
+            case SETTING_ITEM_SUB_DEVICE_GATEWAY:
+            case SETTING_ITEM_SUB_DEVICE_DIMMING_KCC:
+            case SETTING_ITEM_SUB_DEVICE_MANUAL:
+            case SETTING_ITEM_SUB_DEVICE_NEWSERVER:
+            case SETTING_ITEM_SUB_DEVICE_ESCAPE_LADDER_NOTI:
+            case SETTING_ITEM_SUB_DEVICE_CTR_SEQUENCE_LIMIT:
+            case SETTING_ITEM_SUB_DEVICE_HEAT_ONEDEVICE:
+            case SETTING_ITEM_SUB_DEVICE_GAS_DETECT_5TIME:
+            case SETTING_ITEM_SUB_DEVICE_MAIN_GUI_SELECT:
+            case SETTING_ITEM_SUB_DEVICE_DISTRIBUTION:
+            case SETTING_ITEM_SUB_DEVICE_SENSOR_AP:
+            case SETTING_ITEM_SUB_DEVICE_INTERLAYER_NOISE:
+            case SETTING_ITEM_SUB_DEVICE_RELIEF_CALL:
+            case SETTING_ITEM_SUB_DEVICE_REMOTE_CALL:
+            case SETTING_ITEM_SUB_DEVICE_INNERROOM_DETECT_SENSOR:
+            case SETTING_ITEM_SUB_DEVICE_GATEWAY_MODEL_KIND:
+            case SETTING_ITEM_SUB_DEVICE_CARGUEST:
+            case SETTING_ITEM_SUB_DEVICE_MOBILE_APP_USER_AUTH:
+            case SETTING_ITEM_SUB_DEVICE_INTEGRATED_SWITCH:
+            case SETTING_ITEM_SUB_DEVICE_ELECTRIC_RANGE:
+            case SETTING_ITEM_SUB_DEVICE_BAND_LOCATION:
+            case SETTING_ITEM_SUB_DEVICE_NON_INTERNET_SUPPORT:
+            case SETTING_ITEM_SUB_DEVICE_COOKTOP_CONCENT:
+            case SETTING_ITEM_SUB_DEVICE_SMARTPOST_USE:
+            case SETTING_ITEM_SUB_DEVICE_SMARTKITCHEN_USE:
+            case SETTING_ITEM_SUB_DEVICE_EASYMODEUX_USE:
+            case SETTING_ITEM_SUB_DEVICE_ESCAPELADDER_DOWN_RECV:
+            case SETTING_ITEM_SUB_DEVICE_LIVINGEM_KITCHEN_LIGHT:
+            case SETTING_ITEM_SUB_DEVICE_FACIAL_RECOG_MODULE:
+            case SETTING_ITEM_SUB_DEVICE_REMOTECALL_DOOROPEN_USE:
+            case SETTING_ITEM_SUB_DEVICE_REMOTECALL_HOMEVIEWER_USE:
+            case SETTING_ITEM_SUB_DEVICE_SUBWALLPAD:
+            case SETTING_ITEM_SUB_DEVICE_SUBWALLPAD_PSTN:
+            case SETTING_ITEM_SUB_DEVICE_SUBWALLPAD_LIGHT:
+            case SETTING_ITEM_SUB_DEVICE_SUBWALLPAD_HEATER:
+            case SETTING_ITEM_SUB_DEVICE_SUBWALLPAD_GAS:
+            case SETTING_ITEM_SUB_DEVICE_SUBWALLPAD_DOORLOCK:
+            case SETTING_ITEM_SUB_DEVICE_SUBWALLPAD_VENTI:
+            case SETTING_ITEM_SUB_DEVICE_STRANGER_RECORDING_USE:
+            case SETTING_ITEM_SUB_DEVICE_EMERGENCY_CONTACT_SWITCH_USE:
+            case SETTING_ITEM_SUB_DEVICE_SENDWEATHER_REVERSRE:
+            case SETTING_ITEM_SUB_DEVICE_SYSTEMAIRCON_HEAT_SUPPORT:
+            case SETTING_ITEM_SUB_DEVICE_SAFESTREETLIGHT_USE:
+            case SETTING_ITEM_SUB_DEVICE_BATHSENSOR_USE:
+            case SETTING_ITEM_SUB_DEVICE_FRONT:
+            case SETTING_ITEM_SUB_DEVICE_LOBBY:
+            case SETTING_ITEM_SUB_DEVICE_GUARD:
+            case SETTING_ITEM_SUB_DEVICE_RESIDENCE:
+            case SETTING_ITEM_SUB_DEVICE_PSTN:
+            case SETTING_ITEM_SUB_DEVICE_CALLHISTORY:
+            case SETTING_ITEM_SUB_DEVICE_VISITORPIC:
+            case SETTING_ITEM_SUB_DEVICE_REMOTECALLSVR_WEBPORT:
+            case SETTING_ITEM_SUB_DEVICE_LCDKEEPER_USE:
+            case SETTING_ITEM_SUB_DEVICE_VENTI_SERVICE_QR:
+            case SETTING_ITEM_SUB_DEVICE_THEDISABLED_HOME:
+            case SETTING_ITEM_SUB_DEVICE_CO2_REDUCTION:
+            case SETTING_ITEM_SUB_DEVICE_HEATLIGHTROOM_NAMESET:
+            case SETTING_ITEM_SUB_DEVICE_SMARTSWITCH_ENERGY:
+            case SETTING_ITEM_SUB_DEVICE_PURITY:
+            case SETTING_ITEM_SUB_DEVICE_LOUVER:
+            case SETTING_ITEM_SUB_DEVICE_BIOMETICS:
+            case SETTING_ITEM_SUB_DEVICE_POWERCONTROLLER:
+                result = SUB_DEVICE_ITEM_ID[itemType - SETTING_ITEM_SUB_DEVICE_GAS];
+                break;
+        }
+
+        return result;
+    }
+
+
+    // parse DevInfo
+    public List<String> parseDevInfo(String devInfo) {
+        List<String> result = null;
+
+        Log.d(TAG, "parseDevInfo() devInfo : " + devInfo);
+
+        if (devInfo == null)
+            return null;
+
+
+        try {
+            int idx = devInfo.indexOf("(");
+            if (idx > 0) {
+                result = new ArrayList();
+
+                String devNo = devInfo.substring(0, idx);
+                result.add(devNo.trim());
+
+                int startIdx = devInfo.indexOf(":", idx + 1);
+                if (startIdx > 0) {
+                    String circuitCount = devInfo.substring(idx + 1, startIdx);
+                    result.add(circuitCount.trim());
+                }
+                idx = startIdx;
+
+
+                int endIdx = devInfo.lastIndexOf(")");
+
+                Log.d(TAG, "startIdx : " + startIdx
+                        + ", endIdx : " + endIdx
+                );
+
+                if ((startIdx > 0) && (endIdx > 0)) {
+
+                    int midIdx = devInfo.indexOf("(", startIdx + 1);
+
+                    Log.d(TAG, "midIdx : " + midIdx);
+
+                    while (midIdx > startIdx) {
+                        String title = devInfo.substring(startIdx + 1, midIdx);
+                        result.add(title.trim());
+
+                        idx = devInfo.indexOf(")", midIdx + 1);
+                        if (idx > 0) {
+                            String detail = devInfo.substring(midIdx + 1, idx);
+                            result.add(detail.trim());
+                        }
+
+                        startIdx = idx;
+
+                        midIdx = devInfo.indexOf("(", idx + 1);
+
+                        Log.d(TAG, "midIdx : " + midIdx
+                                + ", startIdx : " + startIdx
+                        );
+                    }
+                }
+            }
+        }
+        catch (Exception e) {
+            e.printStackTrace();
+        }
+
+
+        if (DEBUG) {
+            if (result != null) {
+                Log.d(TAG, "parseDevInfo() result.size() : " + result.size());
+
+                for (int i=0; i<result.size(); i++) {
+                    Log.d(TAG, "result(" + i + ") : " + result.get(i));
+                }
+            }
+        }
+
+
+        return result;
+    }
+
+
+    // get SettingDataSubDev
+    public List<String> getSettingDataSubDev(int itemType) {
+        List<String[]> subDevList = getSettingDataList(SETTING_ITEM_SUB_DEVICE_LIST);
+        List<String> result = null;
+        String devInfo = null;
+        String deviceID = null;
+
+        if ((subDevList != null) && (subDevList.size() > 0)) {
+            deviceID = getSubDevID(itemType);
+
+            if (deviceID != null) {
+                for(int i=0; i<subDevList.size(); i++) {
+
+                    Log.d(TAG, "subDevList() .get(" + i + ")[0] : " + subDevList.get(i)[0]
+                            + ", .get(" + i + ")[1] : " + subDevList.get(i)[1]
+                    );
+
+
+                    if (deviceID.equals(subDevList.get(i)[0])) {
+                        devInfo = subDevList.get(i)[1];
+                        break;
+                    }
+                }
+            }
+        }
+
+        Log.d(TAG, "getSettingDataSubDev() itemType : " + itemType
+                + " " + deviceID
+                + ", devInfo : " + devInfo);
+
+        if (Const.ENABLED_SUB_DEVICE_DEFAULT_VALUE == true) {
+            if (devInfo == null) {
+                switch (itemType) {
+                    case SETTING_ITEM_SUB_DEVICE_GAS:
+                        devInfo = "1(1:가스밸브(사용함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_DOOR_LOCK:
+                        if(ModelType == Version.MODEL_TYPE.IHN_1020GL)
+                        {
+                            devInfo = "1(1:디지털도어락(사용함)종류( 유선 ))";
+                        }
+                        else
+                        {
+                            devInfo = "1(1:디지털도어락(사용함)종류( 무선 ))";
+                        }
+
+
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_HEATER:
+                        devInfo = "1(4:온도조절기(사용함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_LIGHT:
+
+                        if(ModelType == Version.MODEL_TYPE.IHN_1020GL)
+                        {
+                            devInfo = "1(5:조명제어기(사용함)종류( 현산향일체형조명일괄소등병합형 ))";
+                        }
+                        else
+                        {
+                            devInfo = "1(6:조명제어기(사용함)종류( 대외기본형 ))";
+                        }
+
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_VENTILATION:
+                        devInfo = "1(1:환기시스템(사용함)종류( 기본 ))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_SYSTEM_AIRCON:
+                        devInfo = "1(1:시스템에어컨(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_ELECTRONICALLY_CURTAIN:
+                        devInfo = "1(1:전동커튼(사용안함)종류( 안방커튼 ))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_REALTIME_MEASURING_METER:
+                        if(ModelType == Version.MODEL_TYPE.IHN_1020GL)
+                        {
+                            devInfo = "1(5:실시간검침기(사용함))";
+                        }
+                        else
+                        {
+                            devInfo = "1(5:실시간검침기(사용안함))";
+                        }
+
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_SMART_SWITCH_LIGHT_AND_BATCH_CONTROL:
+                        if (Version.getGatewayUsage()) {
+                            devInfo = "1(1:스마트스위치&일괄소등(사용함)종류(현산향LCD스마트스위치)L1설정(2)L2설정(3))";
+                        }
+                        else {
+                            devInfo = "1(1:스마트스위치&일괄소등(사용함)종류(대외향스마트스위치)L1설정(2)L2설정(3))";
+                        }
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_WIRELESS_REMOCON:
+                        devInfo = "1(1:무선리모컨(사용함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_DOOR_CAMERA:
+                        if (ModelType == Version.MODEL_TYPE.IHN_D101 || ModelType == Version.MODEL_TYPE.IHN_D101_I
+                                || ModelType == Version.MODEL_TYPE.IHN_D101K || ModelType == Version.MODEL_TYPE.IHN_D101K_I)
+                        {
+                            devInfo = "1(1:현관카메라(사용함)종류(RF현관카메라))";
+                        }
+                        else
+                        {
+                            devInfo = "1(1:현관카메라(사용함)종류(기본))";
+                        }
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_NOTICE:
+                        devInfo = "1(1:공지사항(사용함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_WEATHER:
+                        devInfo = "1(1:날씨(사용함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_MENO:
+                        devInfo = "1(1:메모(사용함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_ELECTRONIC_PICTURE_FRAMES:
+                        devInfo = "1(1:전자액자(사용함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_SCHEDULE:
+                        devInfo = "1(1:일정표(사용함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_PARKING:
+                        devInfo = "1(1:주차확인(사용함)종류(아이콘트롤스)IP(10.2.0.80:6666))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_TIME_SETTING:
+                        devInfo = "1(1:시간설정(사용함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_REMOTE_MESURING_METER:
+                        devInfo = "1(5:원격검침(사용함)EMS(사용함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_MUSIC:
+                        devInfo = "1(1:뮤직(사용함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_VIDEO_PLAY:
+                        devInfo = "1(1:영상재생(사용함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_CCTV:
+                        devInfo = "1(1:CCTV(사용함)종류( 삼성테크윈 )버튼(IP:10.0.1.80*Camera:1*Pass:333*vPort:6801*cPort:6800*Site:admin*Where:놀이터1)버튼(IP:10.0.1.80*Camera:2*Pass:333*vPort:6801*cPort:6800*Site:admin*Where:놀이터2)버튼(IP:10.0.1.80*Camera:3*Pass:333*vPort:6801*cPort:6800*Site:admin*Where:놀이터3)버튼(IP:10.0.1.40*Camera:4*Pass:333*vPort:6801*cPort:6800*Site:admin*Where:놀이터4)버튼(IP:10.0.1.80*Camera:5*Pass:333*vPort:6801*cPort:6800*Site:admin*Where:놀이터5))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_CARGUEST:
+                        devInfo = "1(1:방문객차량등록(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_BAND_LOCATION:
+                        devInfo = "1(1:밴드위치확인(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_SET_NAMING:
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_CUSTOMER_SERVICE_GUARD:
+                        devInfo = "1(1:출동경비(사용안함)종류(KTT)IP(10.2.0.80:6666))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_GUARD_VIDEO_CALL:
+                        devInfo = "1(1:경비실영상통화(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_ELEVATOR:
+                        devInfo = "1(1:엘리베이터(사용함)종류( 층표시 ))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_FIELD_TYPE:
+                        devInfo = "1(1:현장특화기능(사용안함)종류( KCC))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_WALLPAD_CAMERA:
+                        devInfo = "1(1:월패드카메라(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_MOOD_LIGHT:
+                        devInfo = "1(1:무드등(사용안함)종류( 하단등 ))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_ESCAPE_LADDER:
+                        devInfo = "1(1:피난사다리(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_MOTION_SETTING:
+                        devInfo = "1(1:동체설정(사용함)외부동체사용(사용함)내부동체사용(사용안함)외부동체를내부동체로사용( 사용안함 ))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_ALART_ALARM:
+                        devInfo = "1(1:알람발생( 사용함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_PSTN_CALL:
+                        devInfo = "1(1:서브폰국선연동(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_DOOR_PHONE_OUTPUT_VOLUME:
+                        devInfo = "1(1:현관폰사운드출력음량(사용안함)볼륨(4))";
+                        break;
+
+
+                    case SETTING_ITEM_SUB_DEVICE_IPARK_ENERGY:
+                        if (Version.getGatewayUsage()) {
+                            devInfo = "1(1:아이파크에너지(사용함))";
+                        }
+                        else {
+                            devInfo = "1(1:아이파크에너지(사용안함))";
+                        }
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_IDLE_POWER_SAVING_SWITCH:
+                        if(ModelType == Version.MODEL_TYPE.IHN_1020GL)
+                        {
+                            devInfo = "1(1:대기전력스위치(사용함))";
+                        }
+                        else
+                        {
+                            devInfo = "1(1:대기전력스위치(사용안함))";
+                        }
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_ENERGY_MODULE:
+                        if(ModelType == Version.MODEL_TYPE.IHN_1020GL)
+                        {
+                            devInfo = "1(1:에너지모듈(사용함))";
+                        }
+                        else
+                        {
+                            devInfo = "1(1:에너지모듈(사용안함))";
+                        }
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_ENERGY_DEVICES:
+                        if((ModelType == Version.MODEL_TYPE.IHN_1020GL) || (ModelType == Version.MODEL_TYPE.IHN_D101)
+                            || (ModelType == Version.MODEL_TYPE.IHN_D101K))
+                        {
+                            devInfo = "1(1:에너지제품군(사용함))";
+                        }
+                        else
+                        {
+                            devInfo = "1(1:에너지제품군(사용안함))";
+                        }
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_SMART_KEY:
+                        if(ModelType == Version.MODEL_TYPE.IHN_1020GL)
+                        {
+                            devInfo = "1(1:스마트키(사용안함))";
+                        }
+                        else
+                        {
+                            devInfo = "1(1:스마트키(사용안함))";
+                        }
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_ELECTRIC_CAR:
+                        devInfo = "1(1:전기차충전(사용안함)IP(10.0.1.1:10000))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_LH_ADD_FUNCTION:
+                        devInfo = "1(1:LH특화기능(사용함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_LH_U_CITY:
+                        devInfo = "1(1:U-City(사용안함)IP(10.0.1.1:8888))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_ENERGY_SERVER_CONNECT:
+                        devInfo = "1(1:에너지관리서버(사용안함)IP(10.0.1.1:10000))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_ZERO_ENERGY_HOUSE:
+                        devInfo = "1(1:제로에너지하우스(사용안함)IP(10.0.2.88:10000))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_SECURITY_INDOORMODE_SENSOR_USE:
+                        devInfo = "1(1:재택모드시동체센서사용(사용함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_HANDICAPPED:
+                        devInfo = "1(1:장애인모드(사용안함)모드(일반모드))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_ELEVATOR_MAINSCREEN_USE:
+                        devInfo = "1(1:엘리베이터핫키(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_BOOKMARK_TYPE:
+                        devInfo = "1(1:즐겨찾기아이콘종류(사용함)종류(흑백))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_SUBPHONE_BAUDRATE:
+                        devInfo = "1(1:서브폰통신속도(사용함)종류(9600))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_CALL_TIMEOUT:
+                        devInfo = "1(1:통화타임아웃(사용함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_DANJI_CONFIG:
+                        devInfo = "1(1:IP대역확장(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_WIRELESS_DOORLOCK_OPENDELAY:
+                        devInfo = "1(1:무선도어락문열림대기모드(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_RENT_HOME:
+                        devInfo = "1(1:임대세대(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_DANJI_RENT_HOME_USE:
+                        devInfo = "1(1:단지내임대세대(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_BLE_SMARTKEY:
+                        devInfo = "1(1:BLE스마트키(사용안함)종류(스마트키))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_GATEWAY:
+                        devInfo = "1(1:게이트웨이(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_DIMMING_KCC:
+                        devInfo = "1(1:KCC디밍제어기(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_MANUAL:
+                        devInfo = "1(1:매뉴얼(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_NEWSERVER:
+                        devInfo = "1(1:신형단지서버(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_ESCAPE_LADDER_NOTI:
+                        devInfo = "1(1:피난사다리방송알림(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_CTR_SEQUENCE_LIMIT:
+                        devInfo = "1(1:제어시퀀스제한(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_HEAT_ONEDEVICE:
+                        devInfo = "1(1:난방일체형(사용안함)종류(난방환기))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_GAS_DETECT_5TIME:
+                        devInfo = "1(1:가스감지5회알람(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_MAIN_GUI_SELECT:
+                        devInfo = "1(1:메인GUI선택(사용함)종류(기본))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_DISTRIBUTION:
+                        devInfo = "1(1:분전반(사용안함)종류(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_SENSOR_AP:
+                        devInfo = "1(1:센서AP(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_INTERLAYER_NOISE:
+                        devInfo = "1(1:층간소음센서(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_RELIEF_CALL:
+                        devInfo = "1(1:안심통화(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_REMOTE_CALL:
+                        devInfo = "1(1:방문객원격통화(사용안함)IP(10.2.110.110:8000))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_INNERROOM_DETECT_SENSOR:
+                        devInfo = "1(1:재실센서(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_GATEWAY_MODEL_KIND:
+                        devInfo = "1(1:게이트웨이모델(사용함)종류(IGW300))"; // Android studio 에서는 IGW300이 기본
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_MOBILE_APP_USER_AUTH:
+                        devInfo = "1(1:모바일앱사용자인증(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_INTEGRATED_SWITCH:
+                        devInfo = "1(1:통합스위치(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_ELECTRIC_RANGE:
+                        devInfo = "1(1:전기레인지(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_FACIAL_RECOG_MODULE:
+                        devInfo = "1(1:안면인식모듈(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_NON_INTERNET_SUPPORT:
+                        devInfo = "1(1:인터넷미지원(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_COOKTOP_CONCENT:
+                        devInfo = "1(1:쿡탑콘센트(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_SMARTPOST_USE:
+                        devInfo = "1(1:스마트우편함(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_SMARTKITCHEN_USE:
+                        devInfo = "1(1:스마트키친(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_EASYMODEUX_USE:
+                        devInfo = "1(1:간편모드UX지원(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_ESCAPELADDER_DOWN_RECV:
+                        devInfo = "1(1:피난사다리입하수신(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_LIVINGEM_KITCHEN_LIGHT:
+                        devInfo = "1(1:거실EM주방등(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_REMOTECALL_DOOROPEN_USE:
+                        devInfo = "1(1:방문객원격통화-현관문열림(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_REMOTECALL_HOMEVIEWER_USE:
+                        devInfo = "1(1:방문객원격통화-홈뷰어(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_REMOTECALLSVR_WEBPORT:
+                        devInfo = "1(1:방문객원격통화WEB포트(사용함)종류(8089))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_SUBWALLPAD:
+                        devInfo = "1(1:서브월패드(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_SUBWALLPAD_PSTN:
+                        devInfo = "1(1:서브월패드국선전화연동(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_SUBWALLPAD_LIGHT:
+                        devInfo = "1(1:서브월패드조명연동(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_SUBWALLPAD_HEATER:
+                        devInfo = "1(1:서브월패드난방연동(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_SUBWALLPAD_GAS:
+                        devInfo = "1(1:서브월패드가스연동(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_SUBWALLPAD_DOORLOCK:
+                        devInfo = "1(1:서브월패드도어락연동(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_SUBWALLPAD_VENTI:
+                        devInfo = "1(1:서브월패드환기연동(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_STRANGER_RECORDING_USE:
+                        devInfo = "1(1:거동수상자녹화(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_EMERGENCY_CONTACT_SWITCH_USE:
+                        devInfo = "1(1:비상접점스위치(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_SENDWEATHER_REVERSRE:
+                        devInfo = "1(1:서브폰날씨정보역순전송(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_SYSTEMAIRCON_HEAT_SUPPORT:
+                        devInfo = "1(1:시스템에어컨난방기능지원(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_SAFESTREETLIGHT_USE:
+                        devInfo = "1(1:안전가로등(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_BATHSENSOR_USE:
+                        devInfo = "1(1:욕실센서등(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_FRONT:
+                        devInfo = "1(1:현관(사용함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_LOBBY:
+                        devInfo = "1(1:로비(사용함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_GUARD:
+                        devInfo = "1(1:경비(사용함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_RESIDENCE:
+                        devInfo = "1(1:이웃(사용함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_PSTN:
+                        devInfo = "1(1:국선(사용함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_CALLHISTORY:
+                        devInfo = "1(1:통화내역(사용함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_VISITORPIC:
+                        devInfo = "1(1:방문자사진(사용함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_LCDKEEPER_USE:
+                        devInfo = "1(1:LCDKEEPER(사용안함)종류(사용안함))";
+                        break;
+                    case SETTING_ITEM_SUB_DEVICE_VENTI_SERVICE_QR:
+                        devInfo = "1(1:환기케어서비스QR(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_THEDISABLED_HOME:
+                        devInfo = "1(1:장애인세대(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_CO2_REDUCTION:
+                        devInfo = "1(1:이산화탄소절감률(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_HEATLIGHTROOM_NAMESET:
+                        devInfo = "1(1:난방조명방명칭설정(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_SMARTSWITCH_ENERGY:
+                        devInfo = "1(1:스마트스위치에너지종류(사용함)종류(실시간검침기))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_PURITY:
+                        devInfo = "1(1:청정환기(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_LOUVER:
+                        devInfo = "1(1:전동루버(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_BIOMETICS:
+                        devInfo = "1(1:생체인식(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_POWERCONTROLLER:
+                        devInfo = "1(1:통합전력제어기(사용함)종류(기본))";
+                        break;
+                }
+            }
+        }
+
+        result = parseDevInfo(devInfo);
+
+        return result;
+    }
+
+
+    // itemType에 해당하는 SubDev의 사용설정 여부 return
+    public boolean isUsedSettingDataSubDev(int itemType) {
+        boolean bUsed = false;
+        if (DEBUG) Log.i(TAG, "[isUsedSettingDataSubDev] itemType = " + itemType);
+        List<String> InfoList = getSettingDataSubDev(itemType);
+        for (int i = 0; i < InfoList.size(); i++) {
+            Log.i(TAG, "[isUsedSettingDataSubDev] InfoList.get(" + i + ") = " + InfoList.get(i));
+        }
+
+        if ((InfoList != null) && (InfoList.size() > 3)) {
+            if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+                bUsed = true;
+            }
+        }
+
+        return bUsed;
+    }
+
+
+
+
+    // return SensorList
+    public List<String[]> getSensorList() {
+        return getSettingDataList(SETTING_ITEM_SENSOR_STATE_LIST);
+    }
+
+
+
+    // set SettingDataSubDev
+    public boolean setSettingDataSubDev(int itemType, int cnt, String value) {
+        if (DEBUG)  Log.d(TAG, "setSettingDataSubDev() itemType : " + itemType
+                + ", value : " + value
+        );
+
+        boolean ret = false;
+
+        String deviceName = getSubDevID(itemType);
+        if (deviceName != null) {
+            if (DEBUG)  Log.d(TAG, "deviceName : " + deviceName);
+
+            WallpadDeviceSet devset = new WallpadDeviceSet(mContext);
+            if (devset != null) {
+                devset.UpdateSettingData("subdev_list"
+                        , deviceName
+                        , 0
+                        , value
+                );
+
+                devset.closeDB();
+            }
+        }
+
+        return ret;
+    }
+
+
+    // SubDev의 사용설정을 update
+    public void updateSetUsedToSubDeviceOnOff(int controller, final int position) {
+        String controllerName = null;
+
+        switch (controller) {
+            case SETTING_ITEM_SUB_DEVICE_IPARK_ENERGY:
+                controllerName = Const.IPARK_ENERGY;
+                break;
+
+            case SETTING_ITEM_SUB_DEVICE_IDLE_POWER_SAVING_SWITCH:
+                controllerName = Const.IDLE_POWER_SAVING_SWITCH;
+                break;
+
+            case SETTING_ITEM_SUB_DEVICE_ENERGY_MODULE:
+                controllerName = Const.ENERGY_MODULE;
+                break;
+
+            case SETTING_ITEM_SUB_DEVICE_ENERGY_SERVER_CONNECT:
+                controllerName = Const.ENERGY_SERVER_CONNECT;
+                break;
+
+            default:
+                controllerName = getSubDevID(controller);
+                break;
+        }
+
+        if (controllerName != null) {
+            String value = controllerName;
+            if (position == 0) {
+                value += "("
+                        + Const.CONTROLLER_SETTING_DO_NOT_USED
+                        + ")"
+                ;
+            }
+            else {
+                value += "("
+                        + Const.CONTROLLER_SETTING_DO_USED
+                        + ")"
+                ;
+            }
+
+            List<String> InfoList = getSettingDataSubDev(controller);
+            if ((InfoList != null) && (InfoList.size() > 1)) {
+                String deviceNo = InfoList.get(0);
+                String circuitNo = InfoList.get(1);
+
+                value = deviceNo
+                        + "("
+
+                        + circuitNo
+                        + ":"
+
+                        + value
+                ;
+
+                for (int i=4; i + 1 <InfoList.size(); i=i+2) {
+                    value += InfoList.get(i)
+                            + "("
+                            + InfoList.get(i+1)
+                            + ")"
+                    ;
+                }
+
+                value += ")"
+                ;
+
+                setSettingDataSubDev(controller, 0, value);
+            }
+        }
+    }
+
+
+    // SwitchButton에 의한 SubDev의 사용설정을 update
+    public void updateSetUsedToSubDeviceSwitchButtonOnOff(int controller, final int position) {
+        try {
+            String controllerName = getSubDevID(controller);
+            Log.i(TAG, "[updateSetUsedToSubDeviceSwitchButtonOnOff] controllerName = " + controllerName);
+
+            if (controllerName != null) {
+                String value = controllerName;
+                if (position == 1) {
+                    value += "(" + Const.CONTROLLER_SETTING_DO_NOT_USED + ")";
+                }
+                else {
+                    value += "(" + Const.CONTROLLER_SETTING_DO_USED + ")";
+                }
+
+                List<String> InfoList = getSettingDataSubDev(controller);
+                if ((InfoList != null) && (InfoList.size() > 1)) {
+                    String deviceNo = InfoList.get(0);
+                    String circuitNo = InfoList.get(1);
+
+                    value = deviceNo  + "(" + circuitNo + ":" + value;
+
+                    for (int i=4; i + 1 <InfoList.size(); i=i+2) {
+                        value += InfoList.get(i) + "(" + InfoList.get(i + 1) + ")";
+                    }
+
+                    value += ")";
+
+                    Log.i(TAG, "[updateSetUsedToSubDeviceSwitchButtonOnOff] value = " + value);
+
+                    setSettingDataSubDev(controller, 0, value);
+                }
+                else Log.w(TAG, "[updateSetUsedToSubDeviceSwitchButtonOnOff] InfoList is null or InfoList.size() > 1!!!");
+            }
+            else Log.w(TAG, "[updateSetUsedToSubDeviceSwitchButtonOnOff] controllerName is null!!!");
+        } catch (Exception e) {
+            Log.e(TAG, "[Exception] updateSetUsedToSubDeviceSwitchButtonOnOff(int controller, final int position)");
+            e.printStackTrace();
+        }
+    }
+
+
+
+
+
+
+/*
+    public void UpdateSettingData(String Type, String Name, int cnt, String value)
+    {
+        WallpadDeviceSet devset = new WallpadDeviceSet(mContext);
+        if (devset != null) {
+            devset.UpdateSettingData(Type
+                                        , Name
+                                        , 0
+                                        , value
+                                        );
+
+            devset.closeDB();
+        }
+    }
+*/
+
+    // H/W Button 사용 설정여부 return
+    public boolean isUsedHWButton() {
+        boolean ret = false;
+
+        WallpadSalesSampleData wallpadSalesSampleData = new WallpadSalesSampleData(mContext);
+        int getData = wallpadSalesSampleData.getSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_HW_BUTTON_OPERATION);
+        wallpadSalesSampleData.closeDB();
+
+        if (getData == WallpadSalesSampleData.SALES_SAMPLE_MODE_DO_USED)
+            ret = true;
+
+        return ret;
+    }
+
+
+    //  현관 카메라 샘플 설정여부 return
+    public boolean isUsedSampleDoorCamera() {
+        boolean ret = false;
+
+        WallpadSalesSampleData wallpadSalesSampleData = new WallpadSalesSampleData(mContext);
+        int getData = wallpadSalesSampleData.getSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_DOOR_CAMERA);
+        wallpadSalesSampleData.closeDB();
+
+        if (getData == WallpadSalesSampleData.SALES_SAMPLE_MODE_ENABLED)
+            ret = true;
+
+        return ret;
+    }
+
+
+    //  Application upgrade 진행중인지 여부 return
+    public static boolean isUpgradingApp(Context context) {
+        boolean ret = false;
+
+        WallpadStatusData sdb = new WallpadStatusData(context);
+        ret = sdb.GetUpgradeState();
+        sdb.closeDB();
+
+        return ret;
+    }
+
+}

+ 447 - 459
ManagerSetting/src/main/java/com/artncore/managersetting/domain/Const.java

@@ -1,459 +1,447 @@
-package com.artncore.managersetting.domain;
-
-
-import android.content.Context;
-import android.content.Intent;
-import android.os.Build;
-
-public class Const {
-
-    public static final String ARG_ITEM_ID = "item_id";
-
-    public static final String ARG_LOG_FILE_PATH = "log_file_path";
-
-
-    public static final String DNS_IP =               "10.0.1.1";
-    public static final String SUBNET_MASK =          "255.255.0.0";
-//    public static final String SUBNET_MASK =          "255.0.0.0"; // 방문객원격통화 임시 TODO 추후 삭제
-//    public static final String DNS_IP2 =              "10.0.1.10";
-    public static final String DNS_IP2 =              "8.8.8.8"; // 방문객원격통화 임시 TODO 추후 삭제
-    public static final String DEFAULT_SERVER_IP =       "10.0.1.1";
-    public static final int DEFAULT_SERVER_PORT =     10000;
-    public static final String DEFAULT_MANAGER_PC_IP =   "10.0.1.10";
-    public static final int DEFAULT_MANAGER_PC_PORT = DEFAULT_SERVER_PORT;
-
-    // 방문객 원격통화
-    public static final String INTERNAL_SERVER_IP ="10.2.110.110";
-    public static final int INTERNAL_SERVER_PORT = 8000;
-
-    public static final int DEFAULT_GATEWAY_IP_THIRD = 0;
-    public static final int DEFAULT_GATEWAY_IP_FORTH = 254;
-
-    public static final int DEFAULT_LOBBY_IP_THIRD = 0;
-    public static final int DEFAULT_LOBBY_IP_FORTH = 10;
-
-    public static final int DEFAULT_GUARD_IP_SECOND = 0;
-    public static final int DEFAULT_GUARD_IP_THIRD = 128;
-    public static final int DEFAULT_GUARD_IP_FORTH = 10;
-
-    public static final int IP_MIN_LENGTH = 7;
-
-    public final static int PSTN_RING_V40 = 264;
-
-
-    public static final String CONTROLLER_SETTING_DO_USED = "사용함";
-    public static final String CONTROLLER_SETTING_DO_NOT_USED = "사용안함";
-
-    public static final int CONTROLLER_SETTING_DO_NOT_USED_INDEX = 0;
-    public static final int CONTROLLER_SETTING_DO_USED_INDEX = 1;
-
-    public static final String SUBWPD_CTR_DIRECT  = "직접연동";
-    public static final String SUBWPD_CTR_MAINREQ = "메인요청";
-
-    public static final String CONTROLLER_SETTING_WIRE = "유선";
-    public static final String CONTROLLER_SETTING_WIRELESS = "무선";
-    public static final String CONTROLLER_SETTING_FINGERPRINT = "지문인식";
-
-
-    public static final String CONTROLLER_SETTING_TYPE = "종류";
-
-    public static final String CONTROLLER_GATEWAY_KIND_200 = "IGW200";
-    public static final String CONTROLLER_GATEWAY_KIND_300 = "IGW300";
-
-    public static final String CONTROLLER_HEATONEDEVICE_KIND_VENTI = "난방환기";
-    public static final String CONTROLLER_HEATONEDEVICE_KIND_LIGHT = "난방조명";
-    public static final String CONTROLLER_HEATONEDEVICE_KIND_VENTILIGHT = "난방환기조명";
-
-    public static final String CONTROLLER_SMARTSWITCH_KIND_REALTIME = "실시간검침기";
-    public static final String CONTROLLER_SMARTSWITCH_KIND_REMOTE = "원격검침기";
-
-    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 static final String CONTROLLER_DISTRIBUTION_KIND_SMART = "스마트분전반";
-    public static final String CONTROLLER_DISTRIBUTION_KIND_KNX = "KNX분전반";
-
-    public static final String CONTROLLER_POWERCONTROLLER_KIND_BASIC = "기본";
-    public static final String CONTROLLER_POWERCONTROLLER_KIND_DIRECT = "직결보드";
-    public static final String CONTROLLER_POWERCONTROLLER_KIND_MEASURE = "전력측정직결보드";
-
-    public static final String VENTILATION_TYPE_COMMON  = "기본";
-    public static final String VENTILATION_TYPE_LH      = "LH향";
-    public static final String VENTILATION_TYPE_HOOD    = "후드";
-
-
-    public static final String ELECTRONICALLY_CURTAIN_TYPE_MAIN_ROOM = "안방커튼";
-    public static final String ELECTRONICALLY_CURTAIN_TYPE_LIVING_ROOM = "거실커튼";
-    public static final String ELECTRONICALLY_CURTAIN_TYPE_MAIN_AND_LIVING_ROOM = "안방거실커튼";
-
-
-    public static final String LIGHT_BATCH_CONTROL_TYPE_COMMON_SMART_SWITCH         = "대외향스마트스위치";
-    public static final String LIGHT_BATCH_CONTROL_TYPE_COMMON_BATCH_CONTROLLER     = "대외향일괄소등제어기";
-    public static final String LIGHT_BATCH_CONTROL_TYPE_HDC_SMART_SWITCH            = "현산향스마트스위치";
-    public static final String LIGHT_BATCH_CONTROL_TYPE_HDC_LCD_SMART_SWITCH        = "현산향LCD스마트스위치";
-
-
-    public static final String LIGHT_BATCH_CONTROL_TYPE_L1 = "L1설정";
-    public static final String LIGHT_BATCH_CONTROL_TYPE_L2 = "L2설정";
-
-    public static final String REALTIME_MEASURING_METER_TYPE_2 = "2종";
-    public static final String REALTIME_MEASURING_METER_TYPE_3 = "3종";
-    public static final String REALTIME_MEASURING_METER_TYPE_5 = "5종";
-    public static final String REALTIME_MEASURING_METER_TYPE_6 = "6종";
-
-    public static final String REMOTE_METERING_EMS = "EMS";
-
-    public static final String REMOTE_METERING_COST_TABLE = "요금테이블";
-
-
-
-    public static final String MOTION_SETTING_TYPE_USE_INNER_MOTION_DETECTOR = "내부동체사용";
-    public static final String MOTION_SETTING_TYPE_USE_OUTER_MOTION_DETECTOR = "외부동체사용";
-    public static final String MOTION_SETTING_TYPE_USE_OUTER_MOTION_DETECTOR_TO_INNER_MOTION = "외부동체를내부동체로사용";
-
-    public static final String DONGHO_SETTING_TYPE_USE_ENERGY_DEVICES = "에너지제품군";
-    public static final String DONGHO_SETTING_TYPE_USE_SMART_KEY = "스마트키";
-    public static final String DONGHO_SETTING_TYPE_USE_DANJI_CONFIG = "단지설정";
-
-    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_SMART_KEY_EXTERNAL = "대외스마트키현관카메라";
-    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 BLE_SMARTKEY_TYPE_NONUSE    = "사용안함";
-    public static final String BLE_SMARTKEY_TYPE_SMARTKEY  = "스마트키";
-    public static final String BLE_SMARTKEY_TYPE_SMARTBAND = "스마트밴드";
-
-    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 static final String DOOR_CAMERA_TYPE_SMART_KEY_DOOR_CAMERA = "스마트키현관카메라";
-
-    public static final String DOOR_CAMERA_TYPE_UKS = "UKS";
-    public static final String DOOR_CAMERA_TYPE_ETC = "ETC";
-
-
-    public static final String ELEVATOR_TYPE_DEFAULT = "기본";
-    public static final String ELEVATOR_TYPE_SHOW_FLOOR = "층표시";
-
-
-    public static final String FIELD_TYPE_KCC = "KCC";
-    public static final String FIELD_TYPE_AMKOR = "엠코";
-    public static final String FIELD_TYPE_HALLA = "한라건설";
-    public static final String FIELD_TYPE_HD = "현대건설";
-    public static final String FIELD_TYPE_LH = "LH";
-    public static final String FIELD_TYPE_SH = "SH";
-
-
-    public static final String PSTN_CALL_TYPE = "국선";
-    public static final String IPARK_ENERGY = "아이파크에너지";
-    public static final String IDLE_POWER_SAVING_SWITCH = "대기전력차단스위치";
-    public static final String ENERGY_MODULE = "에너지모듈";
-    public static final String ENERGY_SERVER_CONNECT = "에너지관리서버";
-
-    public static final String ESCAPE_LADDER_DOWN_SEND_UPPER = "윗집";
-    public static final String ESCAPE_LADDER_DOWN_SEND_BELOW = "아랫집";
-
-    public static final String VOLUME_LEVEL_TYPE = "볼륨";
-
-
-    public static final String IP_TYPE = "IP";
-
-
-    public static final String SYSTEM_AIRCON_TYPE_SAMSUNG_AIR = "삼성냉방";
-    public static final String SYSTEM_AIRCON_TYPE_SAMSUNG_AIR_HEAT = "삼성냉난방";
-    public static final String SYSTEM_AIRCON_TYPE_LG_AIR = "LG냉방";
-    public static final String SYSTEM_AIRCON_TYPE_LG_AIR_HEAT = "LG냉난방";
-    public static final String SYSTEM_AIRCON_TYPE_ETC = "기타APU";
-
-
-    public static final int CONTROLLER_MAX_COUNT = 8;
-    public static final int CONTROLLER_ONOFF_COUNT = 1;
-    public static final int CONTROLLER_LIGHT_MAX_COUNT = 5;
-    public static final int CONTROLLER_LIGHT_TYPE_MAX_COUNT = 2;
-    //    public static final int CONTROLLER_HEATER_MAX_COUNT = 2;
-    public static final int CONTROLLER_VENTILATION_MAX_COUNT = 3;
-    public static final int CONTROLLER_REALTIME_MEASURING_METER_MAX_COUNT = 2;
-    public static final int CONTROLLER_ELECTRONICALLY_CURTAIN_MAX_COUNT = 3;
-    public static final int CONTROLLER_LIGHT_BATCH_CONTROL_MAX_COUNT = 5;
-    public static final int CONTROLLER_REMOTE_MEASURING_METER_MAX_COUNT = 5;
-    public static final int CONTROLLER_ROOM_MAX_COUNT = 6;
-
-
-
-    public static final int CONTROLLER_TYPE_BASE =        Const.COMMON_TYPE_BASE;
-
-    public static final int CONTROLLER_TYPE_LIGHT_TYPE =                  CONTROLLER_TYPE_BASE + 0;
-    public static final int CONTROLLER_TYPE_LIGHT_LIVING_ROOM =           CONTROLLER_TYPE_BASE + 1;
-    public static final int CONTROLLER_TYPE_LIGHT_ROOMS =                 CONTROLLER_TYPE_BASE + 2;
-    public static final int CONTROLLER_TYPE_LIGHT_ROOMS_0 =               CONTROLLER_TYPE_BASE + 3;
-    public static final int CONTROLLER_TYPE_LIGHT_ROOMS_1 =               CONTROLLER_TYPE_BASE + 4;
-    public static final int CONTROLLER_TYPE_LIGHT_ROOMS_2 =               CONTROLLER_TYPE_BASE + 5;
-    public static final int CONTROLLER_TYPE_LIGHT_ROOMS_3 =               CONTROLLER_TYPE_BASE + 6;
-    public static final int CONTROLLER_TYPE_LIGHT_ROOMS_4 =               CONTROLLER_TYPE_BASE + 7;
-    public static final int CONTROLLER_TYPE_LIGHT_ROOMS_5 =               CONTROLLER_TYPE_BASE + 8;
-    public static final int CONTROLLER_TYPE_LIGHT_ROOMS_6 =               CONTROLLER_TYPE_BASE + 9;
-    public static final int CONTROLLER_TYPE_LIGHT_ROOMS_7 =               CONTROLLER_TYPE_BASE + 10;
-
-
-    public static final int CONTROLLER_TYPE_LIGHT_MULTI_SWITCH =          CONTROLLER_TYPE_BASE + 11;
-    public static final int CONTROLLER_TYPE_GAS =                         CONTROLLER_TYPE_BASE + 12;
-    public static final int CONTROLLER_TYPE_HEATER =                      CONTROLLER_TYPE_BASE + 13;
-
-    //    public static final int CONTROLLER_TYPE_DIGITAL_DOOR_LOCK =           CONTROLLER_TYPE_BASE + 14;
-    public static final int CONTROLLER_TYPE_DOOR_LOCK =                   CONTROLLER_TYPE_BASE + 14;
-    public static final int CONTROLLER_TYPE_DOOR_LOCK_WIRED =             CONTROLLER_TYPE_BASE + 14;
-    //    public static final int CONTROLLER_TYPE_DOOR_LOCK_WIRELESS =          CONTROLLER_TYPE_BASE + 15;
-    public static final int CONTROLLER_TYPE_VENTILATION =                 CONTROLLER_TYPE_BASE + 16;
-    public static final int CONTROLLER_TYPE_ELECTRICALLY_CURTAIN =        CONTROLLER_TYPE_BASE + 17;
-
-    public static final int CONTROLLER_TYPE_SYSTEM_AIRCON =               CONTROLLER_TYPE_BASE + 18;
-    public static final int CONTROLLER_TYPE_LIGHT_BATCH_CONTROLL =        CONTROLLER_TYPE_BASE + 19;
-    public static final int CONTROLLER_TYPE_REALTIME_MEASURING_METER  =   CONTROLLER_TYPE_BASE + 20;
-
-    public static final int CONTROLLER_TYPE_CALL_SUB_DEVICE =             CONTROLLER_TYPE_BASE + 30;
-    public static final int CONTROLLER_TYPE_BATH_PHONE =                  CONTROLLER_TYPE_BASE + 31;
-    public static final int CONTROLLER_TYPE_KICHEN_TV =                   CONTROLLER_TYPE_BASE + 32;
-
-    //public static final int CONTROLLER_TYPE_IPARK_ENREGY =                CONTROLLER_TYPE_BASE + 33;
-    //public static final int CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH =    CONTROLLER_TYPE_BASE + 34;
-    //public static final int CONTROLLER_TYPE_ENERGY_MODULE =               CONTROLLER_TYPE_BASE + 35;
-
-
-    public static final int CONTROLLER_TYPE_ENERGY_METER_ROOMS_1  =        CONTROLLER_TYPE_BASE + 40;
-    public static final int CONTROLLER_TYPE_ENERGY_METER_ROOMS_2  =        CONTROLLER_TYPE_BASE + 41;
-    public static final int CONTROLLER_TYPE_ENERGY_METER_ROOMS_3  =        CONTROLLER_TYPE_BASE + 42;
-    public static final int CONTROLLER_TYPE_ENERGY_METER_ROOMS_4  =        CONTROLLER_TYPE_BASE + 43;
-    public static final int CONTROLLER_TYPE_ENERGY_METER_ROOMS_5  =        CONTROLLER_TYPE_BASE + 44;
-    public static final int CONTROLLER_TYPE_ENERGY_METER_ROOMS_6  =        CONTROLLER_TYPE_BASE + 45;
-    public static final int CONTROLLER_TYPE_ENERGY_METER_ROOMS_7  =        CONTROLLER_TYPE_BASE + 46;
-    public static final int CONTROLLER_TYPE_ENERGY_METER_ROOMS_8  =        CONTROLLER_TYPE_BASE + 47;
-
-    public static final int CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_1 =    CONTROLLER_TYPE_BASE + 50;
-    public static final int CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_2 =    CONTROLLER_TYPE_BASE + 51;
-    public static final int CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_3 =    CONTROLLER_TYPE_BASE + 52;
-    public static final int CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_4 =    CONTROLLER_TYPE_BASE + 53;
-    public static final int CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_5 =    CONTROLLER_TYPE_BASE + 54;
-    public static final int CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_6 =    CONTROLLER_TYPE_BASE + 55;
-    public static final int CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_7 =    CONTROLLER_TYPE_BASE + 56;
-    public static final int CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_8 =    CONTROLLER_TYPE_BASE + 57;
-
-    public static final int CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_1 =               CONTROLLER_TYPE_BASE + 60;
-    public static final int CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_2 =               CONTROLLER_TYPE_BASE + 61;
-    public static final int CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_3 =               CONTROLLER_TYPE_BASE + 62;
-    public static final int CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_4 =               CONTROLLER_TYPE_BASE + 63;
-    public static final int CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_5 =               CONTROLLER_TYPE_BASE + 64;
-    public static final int CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_6 =               CONTROLLER_TYPE_BASE + 65;
-    public static final int CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_7 =               CONTROLLER_TYPE_BASE + 66;
-    public static final int CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_8 =               CONTROLLER_TYPE_BASE + 67;
-
-
-//    public static final int CONTROLLER_TYPE_SMART_SWITCH =                CONTROLLER_TYPE_BASE + 40;
-
-//    public static final int CONTROLLER_TYPE_WIRELESS_REMOCON =            CONTROLLER_TYPE_BASE + 50;
-
-//    public static final int CONTROLLER_TYPE_REALTIME_MEASURING_METER =    CONTROLLER_TYPE_BASE + 60;
-
-    public static final int CONTROLLER_TYPE_RF_DOOR_CAMERA =              CONTROLLER_TYPE_BASE + 70;
-
-    public static final int CONTROLLER_TYPE_HDC_ALLLIGHT =                CONTROLLER_TYPE_BASE + 80; // 현산 일괄소등릴레이
-    public static final int CONTROLLER_TYPE_HDC_GATEWAY  =                CONTROLLER_TYPE_BASE + 90;
-
-    public static final int CONTROLLER_TYPE_SMART_RFCAM_SOUND_ONOFF  =    CONTROLLER_TYPE_BASE + 100;
-
-    public static final int CONTROLLER_TYPE_CALLAPP_TIMEOUT_ONOFF  =    CONTROLLER_TYPE_BASE + 110;
-
-    public static final int CONTROLLER_TYPE_DOOR_LOCK_WIRELESS_OPEN_DELAY_USE = CONTROLLER_TYPE_BASE + 120;
-    public static final int CONTROLLER_TYPE_GATEWAY = CONTROLLER_TYPE_BASE + 130;
-    public static final int CONTROLLER_TYPE_DIMMING_KCC = CONTROLLER_TYPE_BASE + 140;
-    public static final int CONTROLLER_TYPE_HEAT_ONEDEVICE = CONTROLLER_TYPE_BASE + 150;
-
-    public static final int CONTROLLER_TYPE_SMART_DIST = CONTROLLER_TYPE_BASE + 160;
-    public static final int CONTROLLER_TYPE_SMART_DIST_LIVEM = CONTROLLER_TYPE_BASE + 170;
-    public static final int CONTROLLER_TYPE_IGW300 = CONTROLLER_TYPE_BASE + 180;
-
-    public static final int CONTROLLER_TYPE_SENSOR_AP = CONTROLLER_TYPE_BASE + 190;
-    public static final int CONTROLLER_TYPE_INTERLAYER_NOISE = CONTROLLER_TYPE_BASE + 200;
-    public static final int CONTROLLER_TYPE_INNERROOM_DETECT_SENSOR = CONTROLLER_TYPE_BASE + 210;
-
-    public static final int CONTROLLER_TYPE_OUTLET_REGI_START = CONTROLLER_TYPE_BASE + 220;   // 거실EM 콘센트 등록 시작
-    public static final int CONTROLLER_TYPE_OUTLET_REGI_EXTENDTIME = CONTROLLER_TYPE_BASE + 230;   // 거실EM 콘센트 등록 시간 연장
-    public static final int CONTROLLER_TYPE_OUTLET_REGI_END = CONTROLLER_TYPE_BASE + 240;   // // 거실EM 콘센트 등록 종료
-
-    public static final int CONTROLLER_TYPE_GATEWAY_MODEL_KIND = CONTROLLER_TYPE_BASE + 250;
-    public static final int CONTROLLER_TYPE_INTEGRATED_SWITCH = CONTROLLER_TYPE_BASE + 260; // 통합 스위치
-
-    public static final int CONTROLLER_TYPE_ELECTRIC_RANGE1 = CONTROLLER_TYPE_BASE + 270;   // 전기 레인지1
-    public static final int CONTROLLER_TYPE_ELECTRIC_RANGE2 = CONTROLLER_TYPE_BASE + 271;   // 전기 레인지2
-
-    public static final int CONTROLLER_TYPE_COOKTOP_CONCENT = CONTROLLER_TYPE_BASE + 280;   // 쿡탑콘센트
-
-    public static final int CONTROLLER_TYPE_FACIAL_RECOG_MODULE = CONTROLLER_TYPE_BASE + 290;   // 안면인식 모듈
-
-    public static final int CONTROLLER_TYPE_LIGHT_REGI_START = CONTROLLER_TYPE_BASE + 300;   // 거실EM 조명 등록 시작
-    public static final int CONTROLLER_TYPE_LIGHT_REGI_EXTENDTIME = CONTROLLER_TYPE_BASE + 310;   // 거실EM 조명 등록 시간 연장
-    public static final int CONTROLLER_TYPE_LIGHT_REGI_END = CONTROLLER_TYPE_BASE + 320;   // 거실EM 조명 등록 종료
-
-    public static final int CONTROLLER_TYPE_SMARTSWITCH_ENERGY = CONTROLLER_TYPE_BASE + 330;   // 스마트스위치 에너지 종류
-
-    public static final int CONTROLLER_TYPE_PURITY = CONTROLLER_TYPE_BASE + 340; // 청정환기
-    public static final int CONTROLLER_TYPE_LOUVER = CONTROLLER_TYPE_BASE + 341; // 전동루버
-    public static final int CONTROLLER_TYPE_BIOMETICS = CONTROLLER_TYPE_BASE + 342; // 생체인식
-
-    public static final int CONTROLLER_TYPE_LH_GATEWAY = CONTROLLER_TYPE_BASE + 343; // LH게이트웨이
-    public static final int CONTROLLER_TYPE_CTRL_USE = CONTROLLER_TYPE_BASE + 344; // 제어기능
-
-   public static final String CONTENTS_ROOT = "/storage/emulated/0/wallpaddata/";
-    //public static final String CONTENTS_ROOT = "/storage/sdcard0/wallpaddata";
-    public static final String BESTIN_CONTENTS_ROOT = "/storage/emulated/0/Bestin/";
-
-    // Event Interface start
-    public static final int EVT_RING = 220;     // PSTN Incomingcall 상태 전달
-    public static final int BTN_EMR = 221;      // FRONT 비상 버튼 입력 상태 전달
-    public static final int BTN_CALL = 222;     // FRONT 통화 버튼 입력 상태 전달
-    public static final int BTN_OPEN = 223;     // FRONT OPEN 버튼 입력 상태 전달
-    public static final int BTN_DOOR = 224;     // 현관폰 벨 버튼 입력 상태 전달
-    public static final int EVT_EMR = 225;      // 비상 센서 입력 상태 전달
-    public static final int EVT_MAG0 = 226;     // 센서 마그네틱 0 입력 상태 전달
-    public static final int EVT_MAG1 = 227;     // 센서 마그네틱 1 입력 상태 전달
-    public static final int EVT_EXIT = 228;     // 센서 피난사다리 입력 상태 전달
-    public static final int EVT_MOTIN = 229;    // 센서 동체감지기-내부 입력 상태 전달
-    public static final int EVT_MOTOUT = 230;   // 센서 동체감지기-외부 입력 상태 전달
-    // Event Interface end
-
-    // IHN-1010 센서 키코드
-    public static final int EVT_EMR_1010 = 269;      // 비상 센서 입력 상태 전달
-    public static final int EVT_MAG0_1010 = 270;     // 센서 마그네틱 0 입력 상태 전달
-    public static final int EVT_EXIT_1010 = 276;     // 센서 피난사다리 입력 상태 전달
-    public static final int EVT_MOTIN_1010 = 277;    // 센서 동체감지기-내부 입력 상태 전달
-    public static final int EVT_MOTOUT_1010 = 278;   // 센서 동체감지기-외부 입력 상태 전달
-
-
-
-    // Audio Mode start
-    public static final int AUDIO_MODE_IN_CALL_PSTN  = 4;       // PSTN 로 WallPad 와 통화시
-    public static final int AUDIO_MODE_SUBPHONE = 5;            // MoIP로 WallPad 와 SubPhone 통화시
-    public static final int AUDIO_MODE_PSTN_SUBPHONE = 6;       // PSTN 로 SubPhone 과 통화시
-    public static final int AUDIO_MODE_DOOR_SUBPHONE = 7;       // 현관폰 과 SubPhone 통화시
-    public static final int AUDIO_MODE_IN_MIC_PSTN = 8;         // PSTN 로 WallPad 와 통화시 MIC On
-    public static final int AUDIO_MODE_IN_ARS_PSTN = 9;         // PSTN 로 WallPad 와 통화시 ARS 모드로
-    // Audio Mode end
-
-
-
-    // PhonNRemocon start
-    public static final int CALL_TYPE_DOOR = 0x01;
-    public static final int CALL_TYPE_LOBBY = 0x02;
-    public static final int CALL_TYPE_GUARD = 0x03;
-    public static final int CALL_TYPE_PSTN = 0x04;
-    public static final int CALL_TYPE_NEIB = 0x05;
-    // PhonNRemocon end
-
-    public static final int CALL_TYPE_SIP = 0x10;
-
-
-    public static final int MSG_OUTGOING = 21;
-
-    public static final int MSG_OUTGOING_TYPE_HP = 1;
-    public static final int MSG_OUTGOING_TYPE_HOME = 2;
-    public static final int MSG_OUTGOING_TYPE_DONGHO = 3;
-    public static final int MSG_OUTGOING_TYPE_OFFICE = 4;
-
-
-    /////////////////////////////////////////////////////////////////////////////
-    public static final boolean ENABLED_SUB_DEVICE_DEFAULT_VALUE = true; //true;
-
-    public static final boolean ENABLED_DOOR_PHONE_POWER_CONTROLL_BY_CALL_APP = true; //true;
-    /////////////////////////////////////////////////////////////////////////////
-
-
-    public static final String DONG_HO_SPLIT_TOKEN = "_";
-
-
-
-    public static final String SITE_CODE_DEFAULT_VALUE ="12345678";
-
-    public static final String BR_APP_FINISH = "kr.co.icontrols.wallpad.BR_APP_FINISH";
-
-
-    public static final int COMMON_TYPE_BASE = 101;
-
-
-    public static final int CAMERA_TYPE_WALLPAD = 0x01;
-    public static final int CAMERA_TYPE_DOOR = 0x02;
-
-
-
-
-    public static final String SIP_LOBBY_DEVICE_TYPE    = "Lobby";
-    public static final String SIP_GUARD_DEVICE_TYPE    = "Guard";
-    public static final String SIP_NEI_DEVICE_TYPE      = "Resi";
-
-
-
-    public static final String LOG_FILE_ROOT = "/storage/emulated/0/wallpaddata/log";
-
-
-
-    public static final byte DEVICE_TYPE_NONE                   = 0x00;
-    public static final byte DEVICE_TYPE_WALLPAD                = 0x01;
-    public static final byte DEVICE_TYPE_KITCHEN_TV             = 0x02;
-    public static final byte DEVICE_TYPE_BATH_PHONE             = 0x03;
-    public static final byte DEVICE_TYPE_900M_PHONE             = 0x04;
-    public static final byte DEVICE_TYPE_SET_OUTGOING_DEVICE    = 0x05;
-    public static final byte DEVICE_TYPE_HOME_AUTO_SUB_DEVICE   = 0x06;
-    public static final byte DEVICE_TYPE_WIRELESS_DEVICE        = 0x07;
-    public static final byte DEVICE_TYPE_BATCH_TV               = 0x08;
-
-
-
-    public static final int DEFUALT_SLEEP_TIMEOUT_INTERVAL = 60000;
-    public static final int DEFUALT_VOLUME = 8;
-    public static final int DEFUALT_BRIGHTNESS = 255; //100;
-
-    // GLE 모델 구분하기 위한 추가 함수
-    public final static String GLE_MODEL = "AN_8935_iHN1010GLE";
-
-    public static final String AppName_WallPadMain = "kr.co.icontrols.wallpadmain";
-    public static final String AppName_WallPadConfig = "kr.co.icontrols.wallpadconfig";
-    public static final String AppName_WallPadAddservice = "kr.co.icontrols.wallpadaddservice";
-    public static final String AppName_WallPadEmergency = "kr.co.icontrols.wallpademergency";
-    public static final String AppName_WallPadEnergyCtrl = "kr.co.icontrols.wallpadenergyctrl";
-    public static final String AppName_WallPadHomeCtrl = "kr.co.icontrols.wallpadhomectrl";
-    public static final String AppName_WallPadAutopicture = "kr.co.icontrols.autopicture";
-    public static final String AppName_WallPadSecurity = "kr.co.icontrols.wallpadsecurity";
-    public static final String AppName_WallPadOutModerun = "kr.co.icontrols.wallpadoutmoderun";
-
-    public static final String AppName_WallPadCall = "com.artncore.apps.ic_wallpad";
-    public static final String AppName_WallPadCall_hdc = "kr.co.icontrols.wallpadcall";
-
-    public static final String AppName_WallPadAlert = "com.artncore.wallpadalert";
-    public static final String AppName_WallPadDeviceService = "com.artncore.deviceservice";
-    public static final String AppName_WallPadManagerSetting = "com.artncore.managersetting";
-    public static final String AppName_WallPadUpdater = "com.artncore.updater";
-    public static final String AppName_WallPadAppUpdater = "com.artncore.appupdater";
-    public static final String AppName_WallPadLogOutput = "com.artncore.apps.ic_wallpad.service.log";
-
-    public static final boolean FINISH_TIME_ENABLE = true;
-    public static final int FINISH_TIME_SEC = (60 * 5); //5분
-    public static final int FINISH_TIME_SEC_20MIN = (60 * 20); //20분
-
-    /**
-     * IHN-D101-I(C) 월패드 카메라 설정을 위한 상수
-     */
-    public static final int WALLPAD_CAM_AHD_FRONT = 0;
-    public static final int WALLPAD_CAM_NORMAL_FRONT = 1;
-    public static final int WALLPAD_CAM_AHD_FRONT_FLIP = 2;
-}
-
+package com.artncore.managersetting.domain;
+
+
+import android.content.Context;
+import android.content.Intent;
+import android.os.Build;
+
+public class Const {
+
+    public static final String ARG_ITEM_ID = "item_id";
+
+    public static final String ARG_LOG_FILE_PATH = "log_file_path";
+
+
+    public static final String DNS_IP =               "10.0.1.1";
+    public static final String SUBNET_MASK =          "255.255.0.0";
+//    public static final String SUBNET_MASK =          "255.0.0.0"; // 방문객원격통화 임시 TODO 추후 삭제
+//    public static final String DNS_IP2 =              "10.0.1.10";
+    public static final String DNS_IP2 =              "8.8.8.8"; // 방문객원격통화 임시 TODO 추후 삭제
+    public static final String DEFAULT_SERVER_IP =       "10.0.1.1";
+    public static final int DEFAULT_SERVER_PORT =     10000;
+    public static final String DEFAULT_MANAGER_PC_IP =   "10.0.1.10";
+    public static final int DEFAULT_MANAGER_PC_PORT = DEFAULT_SERVER_PORT;
+
+    // 방문객 원격통화
+    public static final String INTERNAL_SERVER_IP ="10.2.110.110";
+    public static final int INTERNAL_SERVER_PORT = 8000;
+
+    public static final int DEFAULT_GATEWAY_IP_THIRD = 0;
+    public static final int DEFAULT_GATEWAY_IP_FORTH = 254;
+
+    public static final int DEFAULT_LOBBY_IP_THIRD = 0;
+    public static final int DEFAULT_LOBBY_IP_FORTH = 10;
+
+    public static final int DEFAULT_GUARD_IP_SECOND = 0;
+    public static final int DEFAULT_GUARD_IP_THIRD = 128;
+    public static final int DEFAULT_GUARD_IP_FORTH = 10;
+
+    public static final int IP_MIN_LENGTH = 7;
+
+    public final static int PSTN_RING_V40 = 264;
+
+
+    public static final String CONTROLLER_SETTING_DO_USED = "사용함";
+    public static final String CONTROLLER_SETTING_DO_NOT_USED = "사용안함";
+
+    public static final int CONTROLLER_SETTING_DO_NOT_USED_INDEX = 0;
+    public static final int CONTROLLER_SETTING_DO_USED_INDEX = 1;
+
+    public static final String SUBWPD_CTR_DIRECT  = "직접연동";
+    public static final String SUBWPD_CTR_MAINREQ = "메인요청";
+
+    public static final String CONTROLLER_SETTING_WIRE = "유선";
+    public static final String CONTROLLER_SETTING_WIRELESS = "무선";
+    public static final String CONTROLLER_SETTING_FINGERPRINT = "지문인식";
+
+
+    public static final String CONTROLLER_SETTING_TYPE = "종류";
+
+    public static final String CONTROLLER_GATEWAY_KIND_200 = "IGW200";
+    public static final String CONTROLLER_GATEWAY_KIND_300 = "IGW300";
+
+    public static final String CONTROLLER_HEATONEDEVICE_KIND_VENTI = "난방환기";
+    public static final String CONTROLLER_HEATONEDEVICE_KIND_LIGHT = "난방조명";
+    public static final String CONTROLLER_HEATONEDEVICE_KIND_VENTILIGHT = "난방환기조명";
+
+    public static final String CONTROLLER_SMARTSWITCH_KIND_REALTIME = "실시간검침기";
+    public static final String CONTROLLER_SMARTSWITCH_KIND_REMOTE = "원격검침기";
+
+    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_SMART_DISTRIBUTION = "스마트분전반조명";
+
+    public static final String CONTROLLER_DISTRIBUTION_KIND_SMART = "스마트분전반";
+    public static final String CONTROLLER_DISTRIBUTION_KIND_KNX = "KNX분전반";
+
+    public static final String CONTROLLER_POWERCONTROLLER_KIND_BASIC = "기본";
+    public static final String CONTROLLER_POWERCONTROLLER_KIND_DIRECT = "직결보드";
+    public static final String CONTROLLER_POWERCONTROLLER_KIND_MEASURE = "전력측정직결보드";
+
+    public static final String VENTILATION_TYPE_COMMON  = "기본";
+    public static final String VENTILATION_TYPE_LH      = "LH향";
+    public static final String VENTILATION_TYPE_HOOD    = "후드";
+
+
+    public static final String ELECTRONICALLY_CURTAIN_TYPE_MAIN_ROOM = "안방커튼";
+    public static final String ELECTRONICALLY_CURTAIN_TYPE_LIVING_ROOM = "거실커튼";
+    public static final String ELECTRONICALLY_CURTAIN_TYPE_MAIN_AND_LIVING_ROOM = "안방거실커튼";
+
+
+    public static final String LIGHT_BATCH_CONTROL_TYPE_COMMON_SMART_SWITCH         = "대외향스마트스위치";
+    public static final String LIGHT_BATCH_CONTROL_TYPE_COMMON_BATCH_CONTROLLER     = "대외향일괄소등제어기";
+    public static final String LIGHT_BATCH_CONTROL_TYPE_HDC_SMART_SWITCH            = "현산향스마트스위치";
+    public static final String LIGHT_BATCH_CONTROL_TYPE_HDC_LCD_SMART_SWITCH        = "현산향LCD스마트스위치";
+
+
+    public static final String LIGHT_BATCH_CONTROL_TYPE_L1 = "L1설정";
+    public static final String LIGHT_BATCH_CONTROL_TYPE_L2 = "L2설정";
+
+    public static final String REALTIME_MEASURING_METER_TYPE_2 = "2종";
+    public static final String REALTIME_MEASURING_METER_TYPE_3 = "3종";
+    public static final String REALTIME_MEASURING_METER_TYPE_5 = "5종";
+    public static final String REALTIME_MEASURING_METER_TYPE_6 = "6종";
+
+    public static final String REMOTE_METERING_EMS = "EMS";
+
+    public static final String REMOTE_METERING_COST_TABLE = "요금테이블";
+
+
+
+    public static final String MOTION_SETTING_TYPE_USE_INNER_MOTION_DETECTOR = "내부동체사용";
+    public static final String MOTION_SETTING_TYPE_USE_OUTER_MOTION_DETECTOR = "외부동체사용";
+    public static final String MOTION_SETTING_TYPE_USE_OUTER_MOTION_DETECTOR_TO_INNER_MOTION = "외부동체를내부동체로사용";
+
+    public static final String DONGHO_SETTING_TYPE_USE_ENERGY_DEVICES = "에너지제품군";
+    public static final String DONGHO_SETTING_TYPE_USE_SMART_KEY = "스마트키";
+    public static final String DONGHO_SETTING_TYPE_USE_DANJI_CONFIG = "단지설정";
+
+    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_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 BLE_SMARTKEY_TYPE_NONUSE    = "사용안함";
+    public static final String BLE_SMARTKEY_TYPE_SMARTKEY  = "스마트키";
+    public static final String BLE_SMARTKEY_TYPE_SMARTBAND = "스마트밴드";
+
+    public static final String MAIN_GUI_TYPE_DEFAULT = "기본";
+    public static final String MAIN_GUI_TYPE_METRO = "메트로";
+    public static final String MAIN_GUI_TYPE_HYOSUNG_CTR_ON = "효성-제어있음";
+    public static final String MAIN_GUI_TYPE_HYOSUNG_CTR_OFF = "효성-제어없음";
+    public static final String MAIN_GUI_TYPE_HIMCHAN = "힘찬";
+
+
+    //관리자설정의 설정버튼 문구를 "스마트키" -> "스마트키현관카메라"로 입력하기 위함임
+    public static final String DOOR_CAMERA_TYPE_SMART_KEY_DOOR_CAMERA = "스마트키현관카메라";
+
+    public static final String DOOR_CAMERA_TYPE_UKS = "UKS";
+    public static final String DOOR_CAMERA_TYPE_ETC = "ETC";
+
+
+    public static final String ELEVATOR_TYPE_DEFAULT = "기본";
+    public static final String ELEVATOR_TYPE_SHOW_FLOOR = "층표시";
+
+
+    public static final String FIELD_TYPE_KCC = "KCC";
+    public static final String FIELD_TYPE_AMKOR = "엠코";
+    public static final String FIELD_TYPE_HALLA = "한라건설";
+    public static final String FIELD_TYPE_HD = "현대건설";
+    public static final String FIELD_TYPE_LH = "LH";
+    public static final String FIELD_TYPE_SH = "SH";
+
+
+    public static final String PSTN_CALL_TYPE = "국선";
+    public static final String IPARK_ENERGY = "아이파크에너지";
+    public static final String IDLE_POWER_SAVING_SWITCH = "대기전력차단스위치";
+    public static final String ENERGY_MODULE = "에너지모듈";
+    public static final String ENERGY_SERVER_CONNECT = "에너지관리서버";
+
+
+    public static final String VOLUME_LEVEL_TYPE = "볼륨";
+
+
+    public static final String IP_TYPE = "IP";
+
+
+
+    public static final int CONTROLLER_MAX_COUNT = 8;
+    public static final int CONTROLLER_ONOFF_COUNT = 1;
+    public static final int CONTROLLER_LIGHT_MAX_COUNT = 5;
+    public static final int CONTROLLER_LIGHT_TYPE_MAX_COUNT = 2;
+    //    public static final int CONTROLLER_HEATER_MAX_COUNT = 2;
+    public static final int CONTROLLER_VENTILATION_MAX_COUNT = 3;
+    public static final int CONTROLLER_REALTIME_MEASURING_METER_MAX_COUNT = 2;
+    public static final int CONTROLLER_ELECTRONICALLY_CURTAIN_MAX_COUNT = 3;
+    public static final int CONTROLLER_LIGHT_BATCH_CONTROL_MAX_COUNT = 5;
+    public static final int CONTROLLER_REMOTE_MEASURING_METER_MAX_COUNT = 5;
+    public static final int CONTROLLER_ROOM_MAX_COUNT = 6;
+
+
+
+    public static final int CONTROLLER_TYPE_BASE =        Const.COMMON_TYPE_BASE;
+
+    public static final int CONTROLLER_TYPE_LIGHT_TYPE =                  CONTROLLER_TYPE_BASE + 0;
+    public static final int CONTROLLER_TYPE_LIGHT_LIVING_ROOM =           CONTROLLER_TYPE_BASE + 1;
+    public static final int CONTROLLER_TYPE_LIGHT_ROOMS =                 CONTROLLER_TYPE_BASE + 2;
+    public static final int CONTROLLER_TYPE_LIGHT_ROOMS_0 =               CONTROLLER_TYPE_BASE + 3;
+    public static final int CONTROLLER_TYPE_LIGHT_ROOMS_1 =               CONTROLLER_TYPE_BASE + 4;
+    public static final int CONTROLLER_TYPE_LIGHT_ROOMS_2 =               CONTROLLER_TYPE_BASE + 5;
+    public static final int CONTROLLER_TYPE_LIGHT_ROOMS_3 =               CONTROLLER_TYPE_BASE + 6;
+    public static final int CONTROLLER_TYPE_LIGHT_ROOMS_4 =               CONTROLLER_TYPE_BASE + 7;
+    public static final int CONTROLLER_TYPE_LIGHT_ROOMS_5 =               CONTROLLER_TYPE_BASE + 8;
+    public static final int CONTROLLER_TYPE_LIGHT_ROOMS_6 =               CONTROLLER_TYPE_BASE + 9;
+    public static final int CONTROLLER_TYPE_LIGHT_ROOMS_7 =               CONTROLLER_TYPE_BASE + 10;
+
+
+    public static final int CONTROLLER_TYPE_LIGHT_MULTI_SWITCH =          CONTROLLER_TYPE_BASE + 11;
+    public static final int CONTROLLER_TYPE_GAS =                         CONTROLLER_TYPE_BASE + 12;
+    public static final int CONTROLLER_TYPE_HEATER =                      CONTROLLER_TYPE_BASE + 13;
+
+    //    public static final int CONTROLLER_TYPE_DIGITAL_DOOR_LOCK =           CONTROLLER_TYPE_BASE + 14;
+    public static final int CONTROLLER_TYPE_DOOR_LOCK =                   CONTROLLER_TYPE_BASE + 14;
+    public static final int CONTROLLER_TYPE_DOOR_LOCK_WIRED =             CONTROLLER_TYPE_BASE + 14;
+    //    public static final int CONTROLLER_TYPE_DOOR_LOCK_WIRELESS =          CONTROLLER_TYPE_BASE + 15;
+    public static final int CONTROLLER_TYPE_VENTILATION =                 CONTROLLER_TYPE_BASE + 16;
+    public static final int CONTROLLER_TYPE_ELECTRICALLY_CURTAIN =        CONTROLLER_TYPE_BASE + 17;
+
+    public static final int CONTROLLER_TYPE_SYSTEM_AIRCON =               CONTROLLER_TYPE_BASE + 18;
+    public static final int CONTROLLER_TYPE_LIGHT_BATCH_CONTROLL =        CONTROLLER_TYPE_BASE + 19;
+    public static final int CONTROLLER_TYPE_REALTIME_MEASURING_METER  =   CONTROLLER_TYPE_BASE + 20;
+
+    public static final int CONTROLLER_TYPE_CALL_SUB_DEVICE =             CONTROLLER_TYPE_BASE + 30;
+    public static final int CONTROLLER_TYPE_BATH_PHONE =                  CONTROLLER_TYPE_BASE + 31;
+    public static final int CONTROLLER_TYPE_KICHEN_TV =                   CONTROLLER_TYPE_BASE + 32;
+
+    //public static final int CONTROLLER_TYPE_IPARK_ENREGY =                CONTROLLER_TYPE_BASE + 33;
+    //public static final int CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH =    CONTROLLER_TYPE_BASE + 34;
+    //public static final int CONTROLLER_TYPE_ENERGY_MODULE =               CONTROLLER_TYPE_BASE + 35;
+
+
+    public static final int CONTROLLER_TYPE_ENERGY_METER_ROOMS_1  =        CONTROLLER_TYPE_BASE + 40;
+    public static final int CONTROLLER_TYPE_ENERGY_METER_ROOMS_2  =        CONTROLLER_TYPE_BASE + 41;
+    public static final int CONTROLLER_TYPE_ENERGY_METER_ROOMS_3  =        CONTROLLER_TYPE_BASE + 42;
+    public static final int CONTROLLER_TYPE_ENERGY_METER_ROOMS_4  =        CONTROLLER_TYPE_BASE + 43;
+    public static final int CONTROLLER_TYPE_ENERGY_METER_ROOMS_5  =        CONTROLLER_TYPE_BASE + 44;
+    public static final int CONTROLLER_TYPE_ENERGY_METER_ROOMS_6  =        CONTROLLER_TYPE_BASE + 45;
+    public static final int CONTROLLER_TYPE_ENERGY_METER_ROOMS_7  =        CONTROLLER_TYPE_BASE + 46;
+    public static final int CONTROLLER_TYPE_ENERGY_METER_ROOMS_8  =        CONTROLLER_TYPE_BASE + 47;
+
+    public static final int CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_1 =    CONTROLLER_TYPE_BASE + 50;
+    public static final int CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_2 =    CONTROLLER_TYPE_BASE + 51;
+    public static final int CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_3 =    CONTROLLER_TYPE_BASE + 52;
+    public static final int CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_4 =    CONTROLLER_TYPE_BASE + 53;
+    public static final int CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_5 =    CONTROLLER_TYPE_BASE + 54;
+    public static final int CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_6 =    CONTROLLER_TYPE_BASE + 55;
+    public static final int CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_7 =    CONTROLLER_TYPE_BASE + 56;
+    public static final int CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_8 =    CONTROLLER_TYPE_BASE + 57;
+
+    public static final int CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_1 =               CONTROLLER_TYPE_BASE + 60;
+    public static final int CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_2 =               CONTROLLER_TYPE_BASE + 61;
+    public static final int CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_3 =               CONTROLLER_TYPE_BASE + 62;
+    public static final int CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_4 =               CONTROLLER_TYPE_BASE + 63;
+    public static final int CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_5 =               CONTROLLER_TYPE_BASE + 64;
+    public static final int CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_6 =               CONTROLLER_TYPE_BASE + 65;
+    public static final int CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_7 =               CONTROLLER_TYPE_BASE + 66;
+    public static final int CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_8 =               CONTROLLER_TYPE_BASE + 67;
+
+
+//    public static final int CONTROLLER_TYPE_SMART_SWITCH =                CONTROLLER_TYPE_BASE + 40;
+
+//    public static final int CONTROLLER_TYPE_WIRELESS_REMOCON =            CONTROLLER_TYPE_BASE + 50;
+
+//    public static final int CONTROLLER_TYPE_REALTIME_MEASURING_METER =    CONTROLLER_TYPE_BASE + 60;
+
+    public static final int CONTROLLER_TYPE_RF_DOOR_CAMERA =              CONTROLLER_TYPE_BASE + 70;
+
+    public static final int CONTROLLER_TYPE_HDC_ALLLIGHT =                CONTROLLER_TYPE_BASE + 80; // 현산 일괄소등릴레이
+    public static final int CONTROLLER_TYPE_HDC_GATEWAY  =                CONTROLLER_TYPE_BASE + 90;
+
+    public static final int CONTROLLER_TYPE_SMART_RFCAM_SOUND_ONOFF  =    CONTROLLER_TYPE_BASE + 100;
+
+    public static final int CONTROLLER_TYPE_CALLAPP_TIMEOUT_ONOFF  =    CONTROLLER_TYPE_BASE + 110;
+
+    public static final int CONTROLLER_TYPE_DOOR_LOCK_WIRELESS_OPEN_DELAY_USE = CONTROLLER_TYPE_BASE + 120;
+    public static final int CONTROLLER_TYPE_GATEWAY = CONTROLLER_TYPE_BASE + 130;
+    public static final int CONTROLLER_TYPE_DIMMING_KCC = CONTROLLER_TYPE_BASE + 140;
+    public static final int CONTROLLER_TYPE_HEAT_ONEDEVICE = CONTROLLER_TYPE_BASE + 150;
+
+    public static final int CONTROLLER_TYPE_SMART_DIST = CONTROLLER_TYPE_BASE + 160;
+    public static final int CONTROLLER_TYPE_SMART_DIST_LIVEM = CONTROLLER_TYPE_BASE + 170;
+    public static final int CONTROLLER_TYPE_IGW300 = CONTROLLER_TYPE_BASE + 180;
+
+    public static final int CONTROLLER_TYPE_SENSOR_AP = CONTROLLER_TYPE_BASE + 190;
+    public static final int CONTROLLER_TYPE_INTERLAYER_NOISE = CONTROLLER_TYPE_BASE + 200;
+    public static final int CONTROLLER_TYPE_INNERROOM_DETECT_SENSOR = CONTROLLER_TYPE_BASE + 210;
+
+    public static final int CONTROLLER_TYPE_OUTLET_REGI_START = CONTROLLER_TYPE_BASE + 220;   // 거실EM 콘센트 등록 시작
+    public static final int CONTROLLER_TYPE_OUTLET_REGI_EXTENDTIME = CONTROLLER_TYPE_BASE + 230;   // 거실EM 콘센트 등록 시간 연장
+    public static final int CONTROLLER_TYPE_OUTLET_REGI_END = CONTROLLER_TYPE_BASE + 240;   // // 거실EM 콘센트 등록 종료
+
+    public static final int CONTROLLER_TYPE_GATEWAY_MODEL_KIND = CONTROLLER_TYPE_BASE + 250;
+    public static final int CONTROLLER_TYPE_INTEGRATED_SWITCH = CONTROLLER_TYPE_BASE + 260; // 통합 스위치
+
+    public static final int CONTROLLER_TYPE_ELECTRIC_RANGE1 = CONTROLLER_TYPE_BASE + 270;   // 전기 레인지1
+    public static final int CONTROLLER_TYPE_ELECTRIC_RANGE2 = CONTROLLER_TYPE_BASE + 271;   // 전기 레인지2
+
+    public static final int CONTROLLER_TYPE_COOKTOP_CONCENT = CONTROLLER_TYPE_BASE + 280;   // 쿡탑콘센트
+
+    public static final int CONTROLLER_TYPE_FACIAL_RECOG_MODULE = CONTROLLER_TYPE_BASE + 290;   // 안면인식 모듈
+
+    public static final int CONTROLLER_TYPE_LIGHT_REGI_START = CONTROLLER_TYPE_BASE + 300;   // 거실EM 조명 등록 시작
+    public static final int CONTROLLER_TYPE_LIGHT_REGI_EXTENDTIME = CONTROLLER_TYPE_BASE + 310;   // 거실EM 조명 등록 시간 연장
+    public static final int CONTROLLER_TYPE_LIGHT_REGI_END = CONTROLLER_TYPE_BASE + 320;   // 거실EM 조명 등록 종료
+
+    public static final int CONTROLLER_TYPE_SMARTSWITCH_ENERGY = CONTROLLER_TYPE_BASE + 330;   // 스마트스위치 에너지 종류
+
+    public static final int CONTROLLER_TYPE_PURITY = CONTROLLER_TYPE_BASE + 340; // 청정환기
+    public static final int CONTROLLER_TYPE_LOUVER = CONTROLLER_TYPE_BASE + 341; // 전동루버
+    public static final int CONTROLLER_TYPE_BIOMETICS = CONTROLLER_TYPE_BASE + 342; // 생체인식
+
+    public static final String CONTENTS_ROOT = "/storage/emulated/0/wallpaddata/";
+    //public static final String CONTENTS_ROOT = "/storage/sdcard0/wallpaddata";
+    public static final String BESTIN_CONTENTS_ROOT = "/storage/emulated/0/Bestin/";
+
+    // Event Interface start
+    public static final int EVT_RING = 220;     // PSTN Incomingcall 상태 전달
+    public static final int BTN_EMR = 221;      // FRONT 비상 버튼 입력 상태 전달
+    public static final int BTN_CALL = 222;     // FRONT 통화 버튼 입력 상태 전달
+    public static final int BTN_OPEN = 223;     // FRONT OPEN 버튼 입력 상태 전달
+    public static final int BTN_DOOR = 224;     // 현관폰 벨 버튼 입력 상태 전달
+    public static final int EVT_EMR = 225;      // 비상 센서 입력 상태 전달
+    public static final int EVT_MAG0 = 226;     // 센서 마그네틱 0 입력 상태 전달
+    public static final int EVT_MAG1 = 227;     // 센서 마그네틱 1 입력 상태 전달
+    public static final int EVT_EXIT = 228;     // 센서 피난사다리 입력 상태 전달
+    public static final int EVT_MOTIN = 229;    // 센서 동체감지기-내부 입력 상태 전달
+    public static final int EVT_MOTOUT = 230;   // 센서 동체감지기-외부 입력 상태 전달
+    // Event Interface end
+
+    // IHN-1010 센서 키코드
+    public static final int EVT_EMR_1010 = 269;      // 비상 센서 입력 상태 전달
+    public static final int EVT_MAG0_1010 = 270;     // 센서 마그네틱 0 입력 상태 전달
+    public static final int EVT_EXIT_1010 = 276;     // 센서 피난사다리 입력 상태 전달
+    public static final int EVT_MOTIN_1010 = 277;    // 센서 동체감지기-내부 입력 상태 전달
+    public static final int EVT_MOTOUT_1010 = 278;   // 센서 동체감지기-외부 입력 상태 전달
+
+
+
+    // Audio Mode start
+    public static final int AUDIO_MODE_IN_CALL_PSTN  = 4;       // PSTN 로 WallPad 와 통화시
+    public static final int AUDIO_MODE_SUBPHONE = 5;            // MoIP로 WallPad 와 SubPhone 통화시
+    public static final int AUDIO_MODE_PSTN_SUBPHONE = 6;       // PSTN 로 SubPhone 과 통화시
+    public static final int AUDIO_MODE_DOOR_SUBPHONE = 7;       // 현관폰 과 SubPhone 통화시
+    public static final int AUDIO_MODE_IN_MIC_PSTN = 8;         // PSTN 로 WallPad 와 통화시 MIC On
+    public static final int AUDIO_MODE_IN_ARS_PSTN = 9;         // PSTN 로 WallPad 와 통화시 ARS 모드로
+    // Audio Mode end
+
+
+
+    // PhonNRemocon start
+    public static final int CALL_TYPE_DOOR = 0x01;
+    public static final int CALL_TYPE_LOBBY = 0x02;
+    public static final int CALL_TYPE_GUARD = 0x03;
+    public static final int CALL_TYPE_PSTN = 0x04;
+    public static final int CALL_TYPE_NEIB = 0x05;
+    // PhonNRemocon end
+
+    public static final int CALL_TYPE_SIP = 0x10;
+
+
+    public static final int MSG_OUTGOING = 21;
+
+    public static final int MSG_OUTGOING_TYPE_HP = 1;
+    public static final int MSG_OUTGOING_TYPE_HOME = 2;
+    public static final int MSG_OUTGOING_TYPE_DONGHO = 3;
+    public static final int MSG_OUTGOING_TYPE_OFFICE = 4;
+
+
+    /////////////////////////////////////////////////////////////////////////////
+    public static final boolean ENABLED_SUB_DEVICE_DEFAULT_VALUE = true; //true;
+
+    public static final boolean ENABLED_DOOR_PHONE_POWER_CONTROLL_BY_CALL_APP = true; //true;
+    /////////////////////////////////////////////////////////////////////////////
+
+
+    public static final String DONG_HO_SPLIT_TOKEN = "_";
+
+
+
+    public static final String SITE_CODE_DEFAULT_VALUE ="12345678";
+
+    public static final String BR_APP_FINISH = "kr.co.icontrols.wallpad.BR_APP_FINISH";
+
+
+    public static final int COMMON_TYPE_BASE = 101;
+
+
+    public static final int CAMERA_TYPE_WALLPAD = 0x01;
+    public static final int CAMERA_TYPE_DOOR = 0x02;
+
+
+
+
+    public static final String SIP_LOBBY_DEVICE_TYPE    = "Lobby";
+    public static final String SIP_GUARD_DEVICE_TYPE    = "Guard";
+    public static final String SIP_NEI_DEVICE_TYPE      = "Resi";
+
+
+
+    public static final String LOG_FILE_ROOT = "/storage/emulated/0/wallpaddata/log";
+
+
+
+    public static final byte DEVICE_TYPE_NONE                   = 0x00;
+    public static final byte DEVICE_TYPE_WALLPAD                = 0x01;
+    public static final byte DEVICE_TYPE_KITCHEN_TV             = 0x02;
+    public static final byte DEVICE_TYPE_BATH_PHONE             = 0x03;
+    public static final byte DEVICE_TYPE_900M_PHONE             = 0x04;
+    public static final byte DEVICE_TYPE_SET_OUTGOING_DEVICE    = 0x05;
+    public static final byte DEVICE_TYPE_HOME_AUTO_SUB_DEVICE   = 0x06;
+    public static final byte DEVICE_TYPE_WIRELESS_DEVICE        = 0x07;
+    public static final byte DEVICE_TYPE_BATCH_TV               = 0x08;
+
+
+
+    public static final int DEFUALT_SLEEP_TIMEOUT_INTERVAL = 60000;
+    public static final int DEFUALT_VOLUME = 8;
+    public static final int DEFUALT_BRIGHTNESS = 255; //100;
+
+    // GLE 모델 구분하기 위한 추가 함수
+    public final static String GLE_MODEL = "AN_8935_iHN1010GLE";
+
+    public static final String AppName_WallPadMain = "kr.co.icontrols.wallpadmain";
+    public static final String AppName_WallPadConfig = "kr.co.icontrols.wallpadconfig";
+    public static final String AppName_WallPadAddservice = "kr.co.icontrols.wallpadaddservice";
+    public static final String AppName_WallPadEmergency = "kr.co.icontrols.wallpademergency";
+    public static final String AppName_WallPadEnergyCtrl = "kr.co.icontrols.wallpadenergyctrl";
+    public static final String AppName_WallPadHomeCtrl = "kr.co.icontrols.wallpadhomectrl";
+    public static final String AppName_WallPadAutopicture = "kr.co.icontrols.autopicture";
+    public static final String AppName_WallPadSecurity = "kr.co.icontrols.wallpadsecurity";
+    public static final String AppName_WallPadOutModerun = "kr.co.icontrols.wallpadoutmoderun";
+
+    public static final String AppName_WallPadCall = "com.artncore.apps.ic_wallpad";
+    public static final String AppName_WallPadCall_hdc = "kr.co.icontrols.wallpadcall";
+
+    public static final String AppName_WallPadAlert = "com.artncore.wallpadalert";
+    public static final String AppName_WallPadDeviceService = "com.artncore.deviceservice";
+    public static final String AppName_WallPadManagerSetting = "com.artncore.managersetting";
+    public static final String AppName_WallPadUpdater = "com.artncore.updater";
+    public static final String AppName_WallPadAppUpdater = "com.artncore.appupdater";
+    public static final String AppName_WallPadLogOutput = "com.artncore.apps.ic_wallpad.service.log";
+
+    public static final boolean FINISH_TIME_ENABLE = true;
+    public static final int FINISH_TIME_SEC = (60 * 5); //5분
+    public static final int FINISH_TIME_SEC_20MIN = (60 * 20); //20분
+
+    /**
+     * IHN-D101-I(C) 월패드 카메라 설정을 위한 상수
+     */
+    public static final int WALLPAD_CAM_AHD_FRONT = 0;
+    public static final int WALLPAD_CAM_NORMAL_FRONT = 1;
+
+}
+

+ 110 - 110
ManagerSetting/src/main/java/com/artncore/managersetting/domain/ControllerVO.java

@@ -1,110 +1,110 @@
-package com.artncore.managersetting.domain;
-
-import java.io.Serializable;
-import java.util.List;
-
-import android.util.Log;
-
-public class ControllerVO implements Serializable {
-    private static final String TAG = "ControllerVO";
-
-    private final boolean DEBUG = true;
-
-    private int mType;
-    private String mName;
-    private int mCount;
-    private int mInitCount;
-    private List<String> mItemList;
-
-
-    // constructor
-    public ControllerVO () {
-    }
-
-    // constructor
-    public ControllerVO (int type, String name, int count, int initCount, List<String> itemList) {
-        mType = type;
-        mName = name;
-        mCount = count;
-        mInitCount = initCount;
-        mItemList = itemList;
-
-        if (DEBUG) {
-            Log.d(TAG, "ControllerVO() type :" + mType
-                        + ", name :" + mName
-                        + ", count :" + mCount
-                        + ", InitCount :" + mInitCount
-                        + ", mItemList :" + mItemList
-                        );
-        }
-    }
-
-    // constructor
-    public ControllerVO (int type, String name, int count, int initCount) {
-        this(type, name, count, initCount, null);
-    }
-
-    // constructor
-    public ControllerVO (int type, String name, int count) {
-        this(type, name, count, 0, null);
-    }
-
-
-
-    // set Type
-    public void setType(int type) {
-        mType = type;
-    }
-
-    // set Name
-    public void setName(String name) {
-        mName = name;
-    }
-
-    // set Count
-    public void setCount(int count) {
-        mCount= count;
-    }
-
-    // set InitCount
-    public void setInitCount(int initCount) {
-        mInitCount= initCount;
-    }
-
-    // set ItemList
-    public void setItemList(List<String> itemList) {
-        mItemList = itemList;
-    }
-
-
-
-
-
-    // get Type
-    public int getType() {
-        return mType;
-    }
-
-    // get Name
-    public String getName() {
-        return mName;
-    }
-
-    // get Count
-    public int getCount() {
-        return mCount;
-    }
-
-    // get InitCount
-    public int getInitCount() {
-        return mInitCount;
-    }
-
-    // get ItemList
-    public List<String> getItemList() {
-        return mItemList;
-    }
-
-
-}
-
+package com.artncore.managersetting.domain;
+
+import java.io.Serializable;
+import java.util.List;
+
+import android.util.Log;
+
+public class ControllerVO implements Serializable {
+    private static final String TAG = "ControllerVO";
+
+    private final boolean DEBUG = true;
+
+    private int mType;
+    private String mName;
+    private int mCount;
+    private int mInitCount;
+    private List<String> mItemList;
+
+
+    // constructor
+    public ControllerVO () {
+    }
+
+    // constructor
+    public ControllerVO (int type, String name, int count, int initCount, List<String> itemList) {
+        mType = type;
+        mName = name;
+        mCount = count;
+        mInitCount = initCount;
+        mItemList = itemList;
+
+        if (DEBUG) {
+            Log.d(TAG, "ControllerVO() type :" + mType
+                        + ", name :" + mName
+                        + ", count :" + mCount
+                        + ", InitCount :" + mInitCount
+                        + ", mItemList :" + mItemList
+                        );
+        }
+    }
+
+    // constructor
+    public ControllerVO (int type, String name, int count, int initCount) {
+        this(type, name, count, initCount, null);
+    }
+
+    // constructor
+    public ControllerVO (int type, String name, int count) {
+        this(type, name, count, 0, null);
+    }
+
+
+
+    // set Type
+    public void setType(int type) {
+        mType = type;
+    }
+
+    // set Name
+    public void setName(String name) {
+        mName = name;
+    }
+
+    // set Count
+    public void setCount(int count) {
+        mCount= count;
+    }
+
+    // set InitCount
+    public void setInitCount(int initCount) {
+        mInitCount= initCount;
+    }
+
+    // set ItemList
+    public void setItemList(List<String> itemList) {
+        mItemList = itemList;
+    }
+
+
+
+
+
+    // get Type
+    public int getType() {
+        return mType;
+    }
+
+    // get Name
+    public String getName() {
+        return mName;
+    }
+
+    // get Count
+    public int getCount() {
+        return mCount;
+    }
+
+    // get InitCount
+    public int getInitCount() {
+        return mInitCount;
+    }
+
+    // get ItemList
+    public List<String> getItemList() {
+        return mItemList;
+    }
+
+
+}
+

+ 163 - 163
ManagerSetting/src/main/java/com/artncore/managersetting/ui/AdminHeader.java

@@ -1,163 +1,163 @@
-package com.artncore.managersetting.ui;
-
-import kr.co.icontrols.wallpadsupport.WpadSound;
-import kr.co.icontrols.wallpadsupport.WpadSound.SND;
-
-import android.app.Activity;
-import android.content.Context;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.Button;
-import android.widget.RelativeLayout;
-
-import com.artncore.managersetting.ui.activities.MainActivity;
-
-import com.artncore.managersetting.R;
-
-
-public class AdminHeader extends RelativeLayout {
-    private static final String TAG = "AdminHeader";
-
-    private final boolean DEBUG = true;
-
-    public static final int HEADER_HOME = 1;
-
-    private Context mContext;
-    private WpadSound mWpadSound;
-    private View mRootView;
-    // private Callbacks mCallbacks;
-
-    /**
-     * A callback interface that all activities containing this fragment must
-     * implement. This mechanism allows activities to be notified of item
-     * selections.
-     */
-    public interface Callbacks {
-        /**
-         * Callback for when an item has been selected.
-         */
-        public void onHeaderSelected(int id);
-    }
-
-/*
-    public AdminHeader(Context context, Callbacks callbacks, int idxMenu) {
-        mContext = context;
-        mCallbacks = callbacks;
-
-        LayoutInflater inflater = (LayoutInflater)mContext
-                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-        mRootView = vi.inflate(R.layout.call_header, null);
-
-        ImageView imgTopHome = (ImageView) mRootView.findViewById(R.id.top_home);
-        ImageView imgTopBack = (ImageView) mRootView.findViewById(R.id.top_back);
-
-        imgTopHome.setOnClickListener(mHeaderClick);
-        imgTopBack.setOnClickListener(mHeaderClick);
-    }
-
-    public View getView() {
-        return mRootView;
-    }
-*/
-
-    // constructor
-    public AdminHeader(Context context) {
-        super(context);
-
-        if (DEBUG) Log.d(TAG, "AdminHeader(Context context)");
-
-        initAdminHeader(context);
-    }
-
-    // constructor
-    public AdminHeader(Context context, AttributeSet attrs) {
-        this(context,attrs,0);
-
-        if (DEBUG) Log.d(TAG, "AdminHeader(Context context, AttributeSet attrs)");
-
-//        this.setOrientation(VERTICAL);
-        initAdminHeader(context);
-    }
-
-    // constructor
-    public AdminHeader(Context context, AttributeSet attrs, int defStyle) {
-        super(context, attrs, defStyle);
-
-        if (DEBUG) Log.d(TAG, "AdminHeader(Context context, AttributeSet attrs, int defStyle)");
-
-        initAdminHeader(context);
-    }
-
-    // init AdminHeader
-    void initAdminHeader(Context context) {
-        mContext = context;
-        mWpadSound = MainActivity.getWpadSound();
-
-        LayoutInflater inflater = (LayoutInflater)mContext
-                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-        mRootView = inflater.inflate(R.layout.admin_header, null);
-
-        Button btnTopHome = (Button) mRootView.findViewById(R.id.top_home);
-
-        btnTopHome.setSoundEffectsEnabled(false);
-
-        btnTopHome.setOnClickListener(mHeaderClick);
-
-        addView(mRootView);
-    }
-
-    @Override
-    protected void onFinishInflate() {
-        //setClickable(true);
-        //setFocusable(true);
-        Log.d(TAG,"onFinishInflate()");
-    }
-
-
-
-    private OnClickListener mHeaderClick = new OnClickListener() {
-        @Override
-        public void onClick(View v) {
-            MainActivity.setFinishTimerReset();
-            mWpadSound.Play(SND.effect.TOUCH_LATCHED);
-            switch(v.getId())
-            {
-                case R.id.top_home:
-                {
-                    if (DEBUG)  Log.d(TAG, "onClick() top_home" );
-
-                    // mCallbacks.onHeaderSelected(AdminHeader.HEADER_HOME);
-                    goHome();
-                }
-                break;
-
-                default:
-                    break;
-            }
-
-        }
-    };
-
-
-    // go Home
-    public void goHome()
-    {
-        //mContext.startActivity(new Intent().setAction("android.intent.action.MAIN").addCategory("android.intent.category.HOME"));
-        ((MainActivity) mContext).exitActivity();
-
-// System.exit(0);
-    }
-
-    // go Back
-    public void goBack()
-    {
-        //((Activity) mContext).finish();
-        //((Activity) mContext).moveTaskToBack(true);
-        //popBackStack();
-        ((Activity) mContext).onBackPressed();
-
-//System.exit(0);
-    }
-}
+package com.artncore.managersetting.ui;
+
+import kr.co.icontrols.wallpadsupport.WpadSound;
+import kr.co.icontrols.wallpadsupport.WpadSound.SND;
+
+import android.app.Activity;
+import android.content.Context;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.Button;
+import android.widget.RelativeLayout;
+
+import com.artncore.managersetting.ui.activities.MainActivity;
+
+import com.artncore.managersetting.R;
+
+
+public class AdminHeader extends RelativeLayout {
+    private static final String TAG = "AdminHeader";
+
+    private final boolean DEBUG = true;
+
+    public static final int HEADER_HOME = 1;
+
+    private Context mContext;
+    private WpadSound mWpadSound;
+    private View mRootView;
+    // private Callbacks mCallbacks;
+
+    /**
+     * A callback interface that all activities containing this fragment must
+     * implement. This mechanism allows activities to be notified of item
+     * selections.
+     */
+    public interface Callbacks {
+        /**
+         * Callback for when an item has been selected.
+         */
+        public void onHeaderSelected(int id);
+    }
+
+/*
+    public AdminHeader(Context context, Callbacks callbacks, int idxMenu) {
+        mContext = context;
+        mCallbacks = callbacks;
+
+        LayoutInflater inflater = (LayoutInflater)mContext
+                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+        mRootView = vi.inflate(R.layout.call_header, null);
+
+        ImageView imgTopHome = (ImageView) mRootView.findViewById(R.id.top_home);
+        ImageView imgTopBack = (ImageView) mRootView.findViewById(R.id.top_back);
+
+        imgTopHome.setOnClickListener(mHeaderClick);
+        imgTopBack.setOnClickListener(mHeaderClick);
+    }
+
+    public View getView() {
+        return mRootView;
+    }
+*/
+
+    // constructor
+    public AdminHeader(Context context) {
+        super(context);
+
+        if (DEBUG) Log.d(TAG, "AdminHeader(Context context)");
+
+        initAdminHeader(context);
+    }
+
+    // constructor
+    public AdminHeader(Context context, AttributeSet attrs) {
+        this(context,attrs,0);
+
+        if (DEBUG) Log.d(TAG, "AdminHeader(Context context, AttributeSet attrs)");
+
+//        this.setOrientation(VERTICAL);
+        initAdminHeader(context);
+    }
+
+    // constructor
+    public AdminHeader(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+
+        if (DEBUG) Log.d(TAG, "AdminHeader(Context context, AttributeSet attrs, int defStyle)");
+
+        initAdminHeader(context);
+    }
+
+    // init AdminHeader
+    void initAdminHeader(Context context) {
+        mContext = context;
+        mWpadSound = MainActivity.getWpadSound();
+
+        LayoutInflater inflater = (LayoutInflater)mContext
+                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+        mRootView = inflater.inflate(R.layout.admin_header, null);
+
+        Button btnTopHome = (Button) mRootView.findViewById(R.id.top_home);
+
+        btnTopHome.setSoundEffectsEnabled(false);
+
+        btnTopHome.setOnClickListener(mHeaderClick);
+
+        addView(mRootView);
+    }
+
+    @Override
+    protected void onFinishInflate() {
+        //setClickable(true);
+        //setFocusable(true);
+        Log.d(TAG,"onFinishInflate()");
+    }
+
+
+
+    private OnClickListener mHeaderClick = new OnClickListener() {
+        @Override
+        public void onClick(View v) {
+            MainActivity.setFinishTimerReset();
+            mWpadSound.Play(SND.effect.TOUCH_LATCHED);
+            switch(v.getId())
+            {
+                case R.id.top_home:
+                {
+                    if (DEBUG)  Log.d(TAG, "onClick() top_home" );
+
+                    // mCallbacks.onHeaderSelected(AdminHeader.HEADER_HOME);
+                    goHome();
+                }
+                break;
+
+                default:
+                    break;
+            }
+
+        }
+    };
+
+
+    // go Home
+    public void goHome()
+    {
+        //mContext.startActivity(new Intent().setAction("android.intent.action.MAIN").addCategory("android.intent.category.HOME"));
+        ((MainActivity) mContext).exitActivity();
+
+// System.exit(0);
+    }
+
+    // go Back
+    public void goBack()
+    {
+        //((Activity) mContext).finish();
+        //((Activity) mContext).moveTaskToBack(true);
+        //popBackStack();
+        ((Activity) mContext).onBackPressed();
+
+//System.exit(0);
+    }
+}

+ 3 - 19
ManagerSetting/src/main/java/com/artncore/managersetting/ui/AudioRecordController.java

@@ -9,8 +9,6 @@ import android.media.AudioRecord;
 import android.media.AudioTrack;
 import android.media.MediaRecorder;
 
-import com.util.LogUtil;
-
 
 public class AudioRecordController {
     private static final String TAG = "AudioRecordController";
@@ -82,7 +80,7 @@ public class AudioRecordController {
 
                 mRecordingFile = new File(mRecordingFilePath);
                 if(mRecordingFile.exists()){
-                    FileDelete(mRecordingFile);
+                    mRecordingFile.delete();
                 }
 
                 Thread recordStartThread = (new Thread() {
@@ -101,10 +99,7 @@ public class AudioRecordController {
 
                 mAudioRecord.startRecording();
                 mAudioTrack.play();
-            } catch (RuntimeException re) {
-                LogUtil.errorLogInfo("", TAG, re);
-        } catch (Exception e) {
-                LogUtil.errorLogInfo("", TAG, e);
+            } catch (Exception e) {
             }
         }
     }
@@ -118,10 +113,7 @@ public class AudioRecordController {
 
                 mAudioRecord.stop();
                 mAudioTrack.pause();
-            } catch (RuntimeException re) {
-                LogUtil.errorLogInfo("", TAG, re);
-        } catch (Exception e) {
-                LogUtil.errorLogInfo("", TAG, e);
+            } catch (Exception e) {
             }
         }
     }
@@ -132,14 +124,6 @@ public class AudioRecordController {
         recordAndPlayStop();
     }
 
-    private synchronized void FileDelete(File file)
-    {
-        if(file!=null && file.exists())
-        {
-            file.delete();
-        }
-    }
-
 
 
 

+ 568 - 615
ManagerSetting/src/main/java/com/artncore/managersetting/ui/CameraTestDialog.java

@@ -1,615 +1,568 @@
-package com.artncore.managersetting.ui;
-
-import android.app.Dialog;
-import android.content.Context;
-import android.hardware.Camera;
-import android.hardware.Camera.Size;
-import android.os.Build;
-import android.os.Handler;
-import android.util.Log;
-import android.view.SurfaceHolder;
-import android.view.SurfaceHolder.Callback;
-import android.view.SurfaceView;
-import android.view.View;
-import android.view.Window;
-import android.view.WindowManager;
-import android.widget.Button;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import com.artncore.WallPadDataMgr.WallpadDeviceSet;
-import com.artncore.deviceinterface.WallPadInterface;
-import com.artncore.managersetting.R;
-import com.artncore.managersetting.domain.Const;
-import com.artncore.managersetting.ui.activities.MainActivity;
-import com.artncore.managersetting.ui.fragments.CheckEtcFragment;
-import com.util.LogUtil;
-
-import java.io.IOException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.List;
-
-import kr.co.icontrols.managersetting.declare.Common;
-import kr.co.icontrols.wallpadsupport.Version;
-
-public class CameraTestDialog extends Dialog {
-    private static final String TAG = "CameraTestDialog";
-
-    private final boolean DEBUG = true;
-    private final boolean DEBUG_CAMERA = true;
-
-    public static final int PREVIEW_SIZE_DEFAULT_W = 320;
-    public static final int PREVIEW_SIZE_DEFAULT_H = 240;
-
-    private WallPadInterface mWallPadInterface;
-
-    private Context mContext;
-    private Handler mHandler;
-
-    private TextView mTV_Title;
-
-
-    private Camera mCamera;
-    private SurfaceHolder mSurfaceHolder;
-    private SurfaceView sfvCamera;
-
-    private int mCameraType = Const.CAMERA_TYPE_WALLPAD;
-    private boolean bOpenedDoorCamera = false;
-
-    // constructor
-    public CameraTestDialog(Context context, int cameraType, Handler handler) {
-        super(context);
-
-        mContext = context;
-        mHandler = handler;
-
-        mWallPadInterface = MainActivity.getWallPadInterface();
-
-        switch (cameraType) {
-            case Const.CAMERA_TYPE_DOOR:
-                mCameraType = cameraType;
-                Common.command_iGW200(mContext, Common.IGW200_DOOR_MONITERING);
-                break;
-
-            case Const.CAMERA_TYPE_WALLPAD:
-                mWallPadInterface.videoInputControll(WallPadInterface.VIDEO_INPUT_TYPE_CAMERA);
-                mCameraType = Const.CAMERA_TYPE_WALLPAD;
-                break;
-
-            default:
-                break;
-        }
-
-        requestWindowFeature(Window.FEATURE_NO_TITLE);
-//        getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
-        setContentView(R.layout.camera_test_dialog);
-
-        sfvCamera = (SurfaceView) findViewById(R.id.sfv_camera);
-
-        mSurfaceHolder = sfvCamera.getHolder();
-        mSurfaceHolder.addCallback(mCameraCallback);
-
-
-        mTV_Title = (TextView)findViewById(R.id.tv_title);
-        Button btnClose = (Button)findViewById(R.id.btn_close);
-
-
-        btnClose.setOnClickListener(mButtonClick);
-
-        setCancelable(false);
-
-        initCameraTestDialogWidget();
-
-        switch (mCameraType) {
-            case Const.CAMERA_TYPE_DOOR:
-                doorCameraOpen();
-                break;
-
-            case Const.CAMERA_TYPE_WALLPAD:
-            default:
-                break;
-        }
-    }
-
-
-    // init CameraTestDialog
-    public void initCameraTestDialogWidget() {
-        //mTV_Title.setText();
-        WindowManager.LayoutParams params = getWindow().getAttributes();
-        params.dimAmount = 0.2f; //0.0f;
-        getWindow().setAttributes(params);
-    }
-
-
-    private View.OnClickListener mButtonClick = new View.OnClickListener() {
-        @Override
-        public void onClick(View v) {
-
-            MainActivity.setFinishTimerReset();
-            switch(v.getId())
-            {
-                case R.id.btn_close:
-                {
-                    if (DEBUG)  Log.d(TAG, "onClick() btn_close" );
-                    Common.command_iGW200(mContext, Common.IGW200_DOOR_CLOSE);
-                    dismiss();
-                }
-                break;
-
-                default:
-                    break;
-            }
-
-        }
-    };
-
-
-
-
-
-
-
-
-
-    private /*final*/ int cFrameRate = 20;
-    private Size videoSize;
-    private Size previewSize;
-
-
-    // get OptimalPreviewSize
-    private Size getOptimalPreviewSize(List<Size> sizes, int w, int h) {
-        final double ASPECT_TOLERANCE = 0.1;
-        double targetRatio = (double) w / h;
-        if (sizes == null) return null;
-
-        Size optimalSize = null;
-        double minDiff = Double.MAX_VALUE;
-
-        int targetHeight = h;
-
-        // Try to find an size match aspect ratio and size
-        for (Size size : sizes) {
-            double ratio = (double) size.width / size.height;
-            if (Math.abs(ratio - targetRatio) > ASPECT_TOLERANCE) continue;
-            if (Math.abs(size.height - targetHeight) < minDiff) {
-                optimalSize = size;
-                minDiff = Math.abs(size.height - targetHeight);
-            }
-        }
-
-        // Cannot find the one match the aspect ratio, ignore the requirement
-        if (optimalSize == null) {
-            minDiff = Double.MAX_VALUE;
-            for (Size size : sizes) {
-                if (Math.abs(size.height - targetHeight) < minDiff) {
-                    optimalSize = size;
-                    minDiff = Math.abs(size.height - targetHeight);
-                }
-            }
-        }
-        return optimalSize;
-    }
-
-
-    private Callback mCameraCallback = new Callback() {
-
-        @Override
-        public void surfaceChanged(SurfaceHolder _holder, int _format, int _width, int _height) {
-            if (DEBUG) Log.d(TAG, "surfaceChanged() ");
-
-            setCameraParam();
-        }
-
-        @Override
-        public void surfaceCreated(SurfaceHolder arg0) {
-            if (DEBUG) Log.d(TAG, "surfaceCreated() ");
-
-            try
-            {
-                openCamera(mCameraType);
-            }
-            catch (RuntimeException re) {
-                LogUtil.errorLogInfo("", TAG, re);
-            }
-            catch(Exception e)
-            {
-                Toast.makeText(getContext(), "카메라를 실행하는데 오류가 생겼습니다.", Toast.LENGTH_SHORT).show();
-
-                //e.printStackTrace();
-                LogUtil.errorLogInfo("", TAG, e);
-                closeCamera();
-            }
-
-        }
-
-
-        @Override
-        public void surfaceDestroyed(SurfaceHolder arg0) {
-            if (DEBUG) Log.d(TAG, "surfaceDestroyed() ");
-
-            closeCamera();
-        }
-    };
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    // close Dialog
-    private void closeDialog() {
-        if (DEBUG) Log.d(TAG, "closeDialog ");
-
-        closeCamera();
-        dismiss();
-    }
-
-    // open Camera
-    private void openCamera(int nType) {
-        if (DEBUG_CAMERA) Log.d(TAG, "[openCamera] nType [" + nType + "]");
-
-        boolean bAOS7 = false;   // 한국생산(다담, AOS 6.0.1)과 중국생산(사니코, 7.1.1) 구분 (true: 중국생산, false: 한국생산)
-        if (Build.VERSION.SDK_INT > 23) bAOS7 = true;
-        Log.d(TAG, "[openCamera] Build.VERSION.SDK_INT [" + Build.VERSION.SDK_INT + "], bAOS7 [" + bAOS7 + "]");
-
-        if (Version.getModelType() == Version.MODEL_TYPE.IHN_D101) {
-            if (bAOS7) {
-                // AOS 7.1.1
-                if (nType == Const.CAMERA_TYPE_WALLPAD) {
-                    mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT);   // 확인완료 (JEFF, 2020.09.02)
-                }
-                else if (nType == Const.CAMERA_TYPE_DOOR) {
-                    mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_BACK);   // 확인완료 (JEFF, 2020.09.02) -> 일반, AHD 모두 확인
-                }
-            }
-            else {
-                // AOS 6.0.1
-                if (nType == Const.CAMERA_TYPE_WALLPAD) {
-                    mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT);
-                }
-                else if (nType == Const.CAMERA_TYPE_DOOR) {
-                    if (CheckEtcFragment.doorCamType == WallpadDeviceSet.DOORTYPE_IOT_SMART) mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT);
-                    else mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT);
-                }
-            }
-        }
-        else {
-            if (bAOS7) {
-                /**
-                 * 확인완료 (JEFF, 2020.09.02)
-                 * IHN-1020B-I, IHN-D101-I, IHN-1010(중국)
-                 */
-                // AOS 7.1.1
-                if (Version.getModelType() == Version.MODEL_TYPE.IHN_1010) {
-                    if (nType == Const.CAMERA_TYPE_WALLPAD) {
-                        mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_BACK);
-                    }
-                    else if (nType == Const.CAMERA_TYPE_DOOR) {
-                        mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT);
-                    }
-                }
-                else {
-                    if (nType == Const.CAMERA_TYPE_WALLPAD) {
-                        if (Version.getModelType() == Version.MODEL_TYPE.IHN_1020B_I && !getCompareBSPVersion()) mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_BACK);
-                        else mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT);
-                    }
-                    else if (nType == Const.CAMERA_TYPE_DOOR) {
-                        if (Version.getModelType() == Version.MODEL_TYPE.IHN_1020B_I && !getCompareBSPVersion()) mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT);
-                        else mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_BACK);
-                    }
-                }
-            }
-            else {
-                /**
-                 * 확인완료 (JEFF, 2020.09.11)
-                 * IHN-HS101, IHN-1010
-                 */
-                // AOS 6.0.1
-                if (nType == Const.CAMERA_TYPE_WALLPAD) {
-                    mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_BACK);   // 확인완료 (JEFF, 2020.09.11)
-                }
-                else if (nType == Const.CAMERA_TYPE_DOOR) {
-                    mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT);   // 확인완료 (JEFF, 2020.09.11)
-                }
-            }
-        }
-
-//        if (Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I
-//                || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K_I
-//                || Version.getModelType() == Version.MODEL_TYPE.IHN_1010_I
-//                || Version.getModelType() == Version.MODEL_TYPE.IHN_T1010 || Version.getModelType() == Version.MODEL_TYPE.IHN_T1010_I
-//                || Version.getModelType() == Version.MODEL_TYPE.IHN_1030_I) {
-//            if (nType == Const.CAMERA_TYPE_WALLPAD) {
-//                mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT);
-//            }
-//            else if (nType == Const.CAMERA_TYPE_DOOR) {
-//                mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_BACK);
-//            }
-//        }
-//        else if (Version.getModelType() == Version.MODEL_TYPE.IHN_D101) {
-//            boolean bAOS7 = false;
-//            if (Build.VERSION.SDK_INT > 23) bAOS7 = true;
-//            Log.d(TAG, "[openCamera] Build.VERSION.SDK_INT [" + Build.VERSION.SDK_INT + "], bAOS7 [" + bAOS7 + "]");
-//            if (bAOS7) {
-//                // AOS 7.1.1
-//                if (nType == Const.CAMERA_TYPE_WALLPAD) {
-//                    mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT);
-//                }
-//                else if (nType == Const.CAMERA_TYPE_DOOR) {
-//                    mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_BACK);
-//                }
-//            }
-//            else {
-//                // AOS 6.0
-//                if (nType == Const.CAMERA_TYPE_WALLPAD) {
-//                    mCamera = Camera.open(1);
-//                }
-//                else if (nType == Const.CAMERA_TYPE_DOOR) {
-//                    Log.d(TAG, "[openCamera] doorCamType [" + CheckEtcFragment.doorCamType + "]");
-//                    if (CheckEtcFragment.doorCamType == WallpadDeviceSet.DOORTYPE_IOT_SMART) mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_BACK);
-//                    else mCamera = Camera.open();
-//                }
-//            }
-//        }
-//        else if (Version.getModelType() == Version.MODEL_TYPE.IHN_1010
-//                || Version.getModelType() == Version.MODEL_TYPE.IHN_1040 || Version.getModelType() == Version.MODEL_TYPE.IHN_1040_I
-//                || Version.getModelType() == Version.MODEL_TYPE.IHN_1050 || Version.getModelType() == Version.MODEL_TYPE.IHN_1050_I
-//                || Version.getModelType() == Version.MODEL_TYPE.IHN_HS101 || Version.getModelType() == Version.MODEL_TYPE.IHN_HS101_I
-//                || Version.getModelType() == Version.MODEL_TYPE.IHN_1050DW_I || Version.getModelType() == Version.MODEL_TYPE.IHN_1020B_I)
-//        {
-//            if (nType == Const.CAMERA_TYPE_WALLPAD) mCamera = Camera.open(0);
-//            else if (nType == Const.CAMERA_TYPE_DOOR) mCamera = Camera.open();
-//            else Log.w(TAG, "[openCamera] Unavailable nType [" + nType + "]");
-//        }
-//        else {
-//            Log.d(TAG, "[openCamera] Unavailable Wallpad model [" + Version.getModelType() + "]");
-//        }
-
-        if (mCamera == null) {
-            //Toast.makeText(mContext, "Camera is not available!", Toast.LENGTH_SHORT).show();
-            closeDialog();
-        }
-    }
-
-
-    // close Camera
-    private void closeCamera() {
-        if (DEBUG_CAMERA) Log.d(TAG, "closeCamera ");
-
-        if (mCamera != null) {
-            mCamera.setPreviewCallback(null);
-            //mSurfaceHolder.removeCallback(mPreview);
-
-            mCamera.stopPreview();
-            mCamera.release();
-            mCamera = null;
-        }
-
-        doorCameraClose();
-    }
-
-
-    // set CameraParam
-    private void setCameraParam() {
-        if(mCamera == null)
-        {
-            Log.d(TAG, "mCamera is null");
-            return;
-        }
-        Camera.Parameters lParam = mCamera.getParameters();
-        if(lParam == null)
-        {
-            Log.d(TAG, "lParam is null");
-            return;
-        }
-//      //lParam.setPreviewSize(_width, _height);
-//      //lParam.setPreviewSize(320, 240);
-//      lParam.setPreviewFormat(PixelFormat.JPEG);
-
-        previewSize = lParam.getPreferredPreviewSizeForVideo();
-        if (DEBUG_CAMERA) {
-            Log.d(TAG, "getPreferredPreviewSizeForVideo = "+ previewSize);
-
-            if (previewSize != null) {
-                Log.d(TAG, "previewSize.width : " + previewSize.width
-                        + ", previewSize.height : " + previewSize.height
-                );
-            }
-        }
-        try {
-            lParam.setPreviewSize(previewSize.width, previewSize.height);
-        }
-        catch(NullPointerException e) {
-            List<Size> previewSizes = lParam.getSupportedPreviewSizes();
-            if (DEBUG_CAMERA) {
-                Log.d(TAG, "getSupportedPreviewSizes = "+ previewSizes);
-            }
-
-            try {
-                previewSize = getOptimalPreviewSize(previewSizes, PREVIEW_SIZE_DEFAULT_W, PREVIEW_SIZE_DEFAULT_H);
-                lParam.setPreviewSize(previewSize.width, previewSize.height);
-                if (previewSize != null) {
-                    Log.d(TAG, "previewSize.width : " + previewSize.width
-                            + ", previewSize.height : " + previewSize.height
-                    );
-                }
-            }
-            catch(NullPointerException ee) {
-                LogUtil.errorLogInfo("", TAG, ee);
-            }
-        }
-
-        List<Integer> frameRates = lParam.getSupportedPreviewFrameRates();
-        if (DEBUG_CAMERA) {
-            Log.d(TAG, "getSupportedPreviewFrameRates = "+ frameRates);
-        }
-
-        cFrameRate = frameRates.get( 0 );
-        for( int rate : frameRates ) {
-            if( cFrameRate > rate )
-                cFrameRate = rate;
-        }
-
-        List<Size> videoSizes = lParam.getSupportedVideoSizes();
-        if (DEBUG_CAMERA) {
-            Log.d(TAG, "getSupportedVideoSizes = "+ videoSizes);
-        }
-
-        try {
-            videoSize = videoSizes.get( 0 );
-            for (Size size : videoSizes) {
-                if( videoSize.width > size.width )
-                    videoSize = size;
-            }
-        }
-        catch(NullPointerException e) {
-            LogUtil.errorLogInfo("", TAG, e);
-        }
-
-
-        List<int[]> fpsList  = lParam.getSupportedPreviewFpsRange();
-        for (int i=0;i < fpsList.size();i++) {
-            if (DEBUG_CAMERA)
-                Log.d(TAG, i + " fps= " + fpsList.get(i)[Camera.Parameters.PREVIEW_FPS_MIN_INDEX]);
-
-            if (DEBUG_CAMERA)
-                Log.d(TAG, i + " fps= " + fpsList.get(i)[Camera.Parameters.PREVIEW_FPS_MAX_INDEX]);
-        }
-
-        mCamera.setParameters(lParam);
-
-/*
-        mCamera.setPreviewCallback (new Camera.PreviewCallback() {
-
-            @Override
-            public void onPreviewFrame(byte[] data, Camera camera) {
-                // TODO Auto-generated method stub
-
-                if (DEBUG_CAMERA_FRAME) Log.d(TAG, "onPreviewFrame : "+ data.length);
-
-            }
-        });
-
-        mCamera.setPreviewCallbackWithBuffer(new PreviewCallback() {
-
-            public void onPreviewFrame(byte[] data, Camera arg1) {
-                if (DEBUG_CAMERA) Log.d(TAG, "onPreviewFrame : "+ data.length);
-
-                    //codecs.encoder(data);
-            }
-        });
-*/
-
-
-        try {
-            mCamera.setPreviewDisplay(mSurfaceHolder);
-            mCamera.startPreview();
-
-            int ret = 0;
-
-            switch (mCameraType) {
-                case Const.CAMERA_TYPE_DOOR:
-                    ret = mWallPadInterface.videoInputControll(WallPadInterface.VIDEO_INPUT_TYPE_DOOR);
-                    String result = "btn_videoInput (" + WallPadInterface.VIDEO_INPUT_TYPE_DOOR + "): " + ret + "\n";
-                    Log.d(TAG, result);
-                    break;
-
-                case Const.CAMERA_TYPE_WALLPAD:
-                default:
-                    break;
-            }
-
-//            mWallPadInterface.setCameraBrightness(mCameraBrightController.getBrightness()     );
-
-        } catch (IOException _le) {
-            //_le.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, _le);
-        }
-    }
-
-
-
-    // open doorCamera
-    private void doorCameraOpen() {
-        int ret = mWallPadInterface.doorPowerControll(true);
-
-        String result = "btn_doorPower (" + true + "): " + ret + "\n";
-        Log.e(TAG, "[doorCameraOpen] result = " + result);
-
-        if (ret != -1) {
-            bOpenedDoorCamera = true;
-
-//sfvCamera.setVisibility(View.VISIBLE);
-
-            //openCamera();
-            //setCameraParam();
-        }
-    }
-
-
-    // close doorCamera
-    private void doorCameraClose() {
-        try {
-            bOpenedDoorCamera = false;
-
-            //closeCamera();
-//sfvCamera.setVisibility(View.INVISIBLE);
-            if (mWallPadInterface != null) {
-                mWallPadInterface.doorPowerControll(false);
-                mWallPadInterface.close();
-            }
-            else {
-                Log.w(TAG, "[doorCameraClose] mWallPadInterface is null!!");
-            }
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
-        } catch (Exception e) {
-            Log.e(TAG, "[Exception] doorCameraClose()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
-        }
-    }
-
-    /**
-     * 절전모드에서 백라이트를 키는 경우, BSP에서 PowerManager 또는 속성값으로 상태를 구분하는데
-     * BSP 버전에 따라 상이하게 동작하므로 BSP 버전 구분하여 절전모드 판별 필요
-     * @return true: 기준 BSP 이후 버전, false: 기준 BSP 이전 버전
-     */
-    public boolean getCompareBSPVersion() {
-        try {
-            StringBuilder strBSPVersion = new StringBuilder();
-            StringBuffer sysInfoBuffer = new StringBuffer();
-            sysInfoBuffer.append(Build.DISPLAY);
-            strBSPVersion.append(sysInfoBuffer.toString());
-
-            String result = strBSPVersion.toString();
-            Log.i(TAG, "[getCompareBSPVersion] result [" + result + "]");
-
-            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy.MM.dd");
-            Date date = simpleDateFormat.parse(result);
-            Date standardDate = simpleDateFormat.parse("2020.09.18"); // 비교 기준 BSP 버전
-            if (date.compareTo(standardDate) >= 0) {
-                Log.i(TAG, "[getCompareBSPVersion] BSP VERSION OVER!");
-                return true;
-            }
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
-        } catch (Exception e) {
-            Log.e(TAG, "[Exception] getCompareBSPVersion()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
-        }
-        return false;
-    }
-
-
-}
+package com.artncore.managersetting.ui;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.hardware.Camera;
+import android.hardware.Camera.Size;
+import android.os.Build;
+import android.os.Handler;
+import android.util.Log;
+import android.view.SurfaceHolder;
+import android.view.SurfaceHolder.Callback;
+import android.view.SurfaceView;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.Button;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.artncore.WallPadDataMgr.WallpadDeviceSet;
+import com.artncore.deviceinterface.WallPadInterface;
+import com.artncore.managersetting.R;
+import com.artncore.managersetting.domain.Const;
+import com.artncore.managersetting.ui.activities.MainActivity;
+import com.artncore.managersetting.ui.fragments.CheckEtcFragment;
+
+import java.io.IOException;
+import java.util.List;
+
+import kr.co.icontrols.managersetting.declare.Common;
+import kr.co.icontrols.wallpadsupport.Version;
+
+public class CameraTestDialog extends Dialog {
+    private static final String TAG = "CameraTestDialog";
+
+    private final boolean DEBUG = true;
+    private final boolean DEBUG_CAMERA = true;
+
+    public static final int PREVIEW_SIZE_DEFAULT_W = 320;
+    public static final int PREVIEW_SIZE_DEFAULT_H = 240;
+
+    private WallPadInterface mWallPadInterface;
+
+    private Context mContext;
+    private Handler mHandler;
+
+    private TextView mTV_Title;
+
+
+    private Camera mCamera;
+    private SurfaceHolder mSurfaceHolder;
+    private SurfaceView sfvCamera;
+
+    private int mCameraType = Const.CAMERA_TYPE_WALLPAD;
+    private boolean bOpenedDoorCamera = false;
+
+    // constructor
+    public CameraTestDialog(Context context, int cameraType, Handler handler) {
+        super(context);
+
+        mContext = context;
+        mHandler = handler;
+
+        mWallPadInterface = MainActivity.getWallPadInterface();
+
+        switch (cameraType) {
+            case Const.CAMERA_TYPE_DOOR:
+                mCameraType = cameraType;
+                Common.command_iGW200(mContext, Common.IGW200_DOOR_MONITERING);
+                break;
+
+            case Const.CAMERA_TYPE_WALLPAD:
+                mWallPadInterface.videoInputControll(WallPadInterface.VIDEO_INPUT_TYPE_CAMERA);
+                mCameraType = Const.CAMERA_TYPE_WALLPAD;
+                break;
+
+            default:
+                break;
+        }
+
+        requestWindowFeature(Window.FEATURE_NO_TITLE);
+//        getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
+        setContentView(R.layout.camera_test_dialog);
+
+        sfvCamera = (SurfaceView) findViewById(R.id.sfv_camera);
+
+        mSurfaceHolder = sfvCamera.getHolder();
+        mSurfaceHolder.addCallback(mCameraCallback);
+
+
+        mTV_Title = (TextView)findViewById(R.id.tv_title);
+        Button btnClose = (Button)findViewById(R.id.btn_close);
+
+
+        btnClose.setOnClickListener(mButtonClick);
+
+        setCancelable(false);
+
+        initCameraTestDialogWidget();
+
+        switch (mCameraType) {
+            case Const.CAMERA_TYPE_DOOR:
+                doorCameraOpen();
+                break;
+
+            case Const.CAMERA_TYPE_WALLPAD:
+            default:
+                break;
+        }
+    }
+
+
+    // init CameraTestDialog
+    public void initCameraTestDialogWidget() {
+        //mTV_Title.setText();
+        WindowManager.LayoutParams params = getWindow().getAttributes();
+        params.dimAmount = 0.2f; //0.0f;
+        getWindow().setAttributes(params);
+    }
+
+
+    private View.OnClickListener mButtonClick = new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+
+            MainActivity.setFinishTimerReset();
+            switch(v.getId())
+            {
+                case R.id.btn_close:
+                {
+                    if (DEBUG)  Log.d(TAG, "onClick() btn_close" );
+                    Common.command_iGW200(mContext, Common.IGW200_DOOR_CLOSE);
+                    dismiss();
+                }
+                break;
+
+                default:
+                    break;
+            }
+
+        }
+    };
+
+
+
+
+
+
+
+
+
+    private /*final*/ int cFrameRate = 20;
+    private Size videoSize;
+    private Size previewSize;
+
+
+    // get OptimalPreviewSize
+    private Size getOptimalPreviewSize(List<Size> sizes, int w, int h) {
+        final double ASPECT_TOLERANCE = 0.1;
+        double targetRatio = (double) w / h;
+        if (sizes == null) return null;
+
+        Size optimalSize = null;
+        double minDiff = Double.MAX_VALUE;
+
+        int targetHeight = h;
+
+        // Try to find an size match aspect ratio and size
+        for (Size size : sizes) {
+            double ratio = (double) size.width / size.height;
+            if (Math.abs(ratio - targetRatio) > ASPECT_TOLERANCE) continue;
+            if (Math.abs(size.height - targetHeight) < minDiff) {
+                optimalSize = size;
+                minDiff = Math.abs(size.height - targetHeight);
+            }
+        }
+
+        // Cannot find the one match the aspect ratio, ignore the requirement
+        if (optimalSize == null) {
+            minDiff = Double.MAX_VALUE;
+            for (Size size : sizes) {
+                if (Math.abs(size.height - targetHeight) < minDiff) {
+                    optimalSize = size;
+                    minDiff = Math.abs(size.height - targetHeight);
+                }
+            }
+        }
+        return optimalSize;
+    }
+
+
+    private Callback mCameraCallback = new Callback() {
+
+        @Override
+        public void surfaceChanged(SurfaceHolder _holder, int _format, int _width, int _height) {
+            if (DEBUG) Log.d(TAG, "surfaceChanged() ");
+
+            setCameraParam();
+        }
+
+        @Override
+        public void surfaceCreated(SurfaceHolder arg0) {
+            if (DEBUG) Log.d(TAG, "surfaceCreated() ");
+
+            try
+            {
+                openCamera(mCameraType);
+            }
+            catch(Exception e)
+            {
+                Toast.makeText(getContext(), "카메라를 실행하는데 오류가 생겼습니다.", Toast.LENGTH_SHORT).show();
+
+                e.printStackTrace();
+                closeCamera();
+            }
+
+        }
+
+
+        @Override
+        public void surfaceDestroyed(SurfaceHolder arg0) {
+            if (DEBUG) Log.d(TAG, "surfaceDestroyed() ");
+
+            closeCamera();
+        }
+    };
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    // close Dialog
+    private void closeDialog() {
+        if (DEBUG) Log.d(TAG, "closeDialog ");
+
+        closeCamera();
+        dismiss();
+    }
+
+    // open Camera
+    private void openCamera(int nType) {
+        if (DEBUG_CAMERA) Log.d(TAG, "[openCamera] nType [" + nType + "]");
+
+        boolean bAOS7 = false;   // 한국생산(다담, AOS 6.0.1)과 중국생산(사니코, 7.1.1) 구분 (true: 중국생산, false: 한국생산)
+        if (Build.VERSION.SDK_INT > 23) bAOS7 = true;
+        Log.d(TAG, "[openCamera] Build.VERSION.SDK_INT [" + Build.VERSION.SDK_INT + "], bAOS7 [" + bAOS7 + "]");
+
+        if (Version.getModelType() == Version.MODEL_TYPE.IHN_D101) {
+            if (bAOS7) {
+                // AOS 7.1.1
+                if (nType == Const.CAMERA_TYPE_WALLPAD) {
+                    mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT);   // 확인완료 (JEFF, 2020.09.02)
+                }
+                else if (nType == Const.CAMERA_TYPE_DOOR) {
+                    mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_BACK);   // 확인완료 (JEFF, 2020.09.02) -> 일반, AHD 모두 확인
+                }
+            }
+            else {
+                // AOS 6.0.1
+                if (nType == Const.CAMERA_TYPE_WALLPAD) {
+                    mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT);
+                }
+                else if (nType == Const.CAMERA_TYPE_DOOR) {
+                    if (CheckEtcFragment.doorCamType == WallpadDeviceSet.DOORTYPE_IOT_SMART) mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT);
+                    else mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT);
+                }
+            }
+        }
+        else {
+            if (bAOS7) {
+                /**
+                 * 확인완료 (JEFF, 2020.09.02)
+                 * IHN-1020B-I, IHN-D101-I, IHN-1010(중국)
+                 */
+                // AOS 7.1.1
+                if (Version.getModelType() == Version.MODEL_TYPE.IHN_1010) {
+                    if (nType == Const.CAMERA_TYPE_WALLPAD) {
+                        mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_BACK);
+                    }
+                    else if (nType == Const.CAMERA_TYPE_DOOR) {
+                        mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT);
+                    }
+                }
+                else {
+                    if (nType == Const.CAMERA_TYPE_WALLPAD) {
+                        mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT);
+                    }
+                    else if (nType == Const.CAMERA_TYPE_DOOR) {
+                        mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_BACK);
+                    }
+                }
+            }
+            else {
+                /**
+                 * 확인완료 (JEFF, 2020.09.11)
+                 * IHN-HS101, IHN-1010
+                 */
+                // AOS 6.0.1
+                if (nType == Const.CAMERA_TYPE_WALLPAD) {
+                    mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_BACK);   // 확인완료 (JEFF, 2020.09.11)
+                }
+                else if (nType == Const.CAMERA_TYPE_DOOR) {
+                    mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT);   // 확인완료 (JEFF, 2020.09.11)
+                }
+            }
+        }
+
+//        if (Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I
+//                || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K_I
+//                || Version.getModelType() == Version.MODEL_TYPE.IHN_1010_I
+//                || Version.getModelType() == Version.MODEL_TYPE.IHN_T1010 || Version.getModelType() == Version.MODEL_TYPE.IHN_T1010_I
+//                || Version.getModelType() == Version.MODEL_TYPE.IHN_1030_I) {
+//            if (nType == Const.CAMERA_TYPE_WALLPAD) {
+//                mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT);
+//            }
+//            else if (nType == Const.CAMERA_TYPE_DOOR) {
+//                mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_BACK);
+//            }
+//        }
+//        else if (Version.getModelType() == Version.MODEL_TYPE.IHN_D101) {
+//            boolean bAOS7 = false;
+//            if (Build.VERSION.SDK_INT > 23) bAOS7 = true;
+//            Log.d(TAG, "[openCamera] Build.VERSION.SDK_INT [" + Build.VERSION.SDK_INT + "], bAOS7 [" + bAOS7 + "]");
+//            if (bAOS7) {
+//                // AOS 7.1.1
+//                if (nType == Const.CAMERA_TYPE_WALLPAD) {
+//                    mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT);
+//                }
+//                else if (nType == Const.CAMERA_TYPE_DOOR) {
+//                    mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_BACK);
+//                }
+//            }
+//            else {
+//                // AOS 6.0
+//                if (nType == Const.CAMERA_TYPE_WALLPAD) {
+//                    mCamera = Camera.open(1);
+//                }
+//                else if (nType == Const.CAMERA_TYPE_DOOR) {
+//                    Log.d(TAG, "[openCamera] doorCamType [" + CheckEtcFragment.doorCamType + "]");
+//                    if (CheckEtcFragment.doorCamType == WallpadDeviceSet.DOORTYPE_IOT_SMART) mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_BACK);
+//                    else mCamera = Camera.open();
+//                }
+//            }
+//        }
+//        else if (Version.getModelType() == Version.MODEL_TYPE.IHN_1010
+//                || Version.getModelType() == Version.MODEL_TYPE.IHN_1040 || Version.getModelType() == Version.MODEL_TYPE.IHN_1040_I
+//                || Version.getModelType() == Version.MODEL_TYPE.IHN_1050 || Version.getModelType() == Version.MODEL_TYPE.IHN_1050_I
+//                || Version.getModelType() == Version.MODEL_TYPE.IHN_HS101 || Version.getModelType() == Version.MODEL_TYPE.IHN_HS101_I
+//                || Version.getModelType() == Version.MODEL_TYPE.IHN_1050DW_I || Version.getModelType() == Version.MODEL_TYPE.IHN_1020B_I)
+//        {
+//            if (nType == Const.CAMERA_TYPE_WALLPAD) mCamera = Camera.open(0);
+//            else if (nType == Const.CAMERA_TYPE_DOOR) mCamera = Camera.open();
+//            else Log.w(TAG, "[openCamera] Unavailable nType [" + nType + "]");
+//        }
+//        else {
+//            Log.d(TAG, "[openCamera] Unavailable Wallpad model [" + Version.getModelType() + "]");
+//        }
+
+        if (mCamera == null) {
+            //Toast.makeText(mContext, "Camera is not available!", Toast.LENGTH_SHORT).show();
+            closeDialog();
+        }
+    }
+
+
+    // close Camera
+    private void closeCamera() {
+        if (DEBUG_CAMERA) Log.d(TAG, "closeCamera ");
+
+        if (mCamera != null) {
+            mCamera.setPreviewCallback(null);
+            //mSurfaceHolder.removeCallback(mPreview);
+
+            mCamera.stopPreview();
+            mCamera.release();
+            mCamera = null;
+        }
+
+        doorCameraClose();
+    }
+
+
+    // set CameraParam
+    private void setCameraParam() {
+        if(mCamera == null)
+        {
+            Log.d(TAG, "mCamera is null");
+            return;
+        }
+        Camera.Parameters lParam = mCamera.getParameters();
+        if(lParam == null)
+        {
+            Log.d(TAG, "lParam is null");
+            return;
+        }
+//      //lParam.setPreviewSize(_width, _height);
+//      //lParam.setPreviewSize(320, 240);
+//      lParam.setPreviewFormat(PixelFormat.JPEG);
+
+        previewSize = lParam.getPreferredPreviewSizeForVideo();
+        if (DEBUG_CAMERA) {
+            Log.d(TAG, "getPreferredPreviewSizeForVideo = "+ previewSize);
+
+            if (previewSize != null) {
+                Log.d(TAG, "previewSize.width : " + previewSize.width
+                        + ", previewSize.height : " + previewSize.height
+                );
+            }
+        }
+        try {
+            lParam.setPreviewSize(previewSize.width, previewSize.height);
+        }
+        catch(NullPointerException e) {
+            List<Size> previewSizes = lParam.getSupportedPreviewSizes();
+            if (DEBUG_CAMERA) {
+                Log.d(TAG, "getSupportedPreviewSizes = "+ previewSizes);
+            }
+
+            try {
+                previewSize = getOptimalPreviewSize(previewSizes, PREVIEW_SIZE_DEFAULT_W, PREVIEW_SIZE_DEFAULT_H);
+                lParam.setPreviewSize(previewSize.width, previewSize.height);
+                if (previewSize != null) {
+                    Log.d(TAG, "previewSize.width : " + previewSize.width
+                            + ", previewSize.height : " + previewSize.height
+                    );
+                }
+            }
+            catch(NullPointerException ee) {
+            }
+        }
+
+        List<Integer> frameRates = lParam.getSupportedPreviewFrameRates();
+        if (DEBUG_CAMERA) {
+            Log.d(TAG, "getSupportedPreviewFrameRates = "+ frameRates);
+        }
+
+        cFrameRate = frameRates.get( 0 );
+        for( int rate : frameRates ) {
+            if( cFrameRate > rate )
+                cFrameRate = rate;
+        }
+
+        List<Size> videoSizes = lParam.getSupportedVideoSizes();
+        if (DEBUG_CAMERA) {
+            Log.d(TAG, "getSupportedVideoSizes = "+ videoSizes);
+        }
+
+        try {
+            videoSize = videoSizes.get( 0 );
+            for (Size size : videoSizes) {
+                if( videoSize.width > size.width )
+                    videoSize = size;
+            }
+        }
+        catch(NullPointerException e) {
+        }
+
+
+        List<int[]> fpsList  = lParam.getSupportedPreviewFpsRange();
+        for (int i=0;i < fpsList.size();i++) {
+            if (DEBUG_CAMERA)
+                Log.d(TAG, i + " fps= " + fpsList.get(i)[Camera.Parameters.PREVIEW_FPS_MIN_INDEX]);
+
+            if (DEBUG_CAMERA)
+                Log.d(TAG, i + " fps= " + fpsList.get(i)[Camera.Parameters.PREVIEW_FPS_MAX_INDEX]);
+        }
+
+        mCamera.setParameters(lParam);
+
+/*
+        mCamera.setPreviewCallback (new Camera.PreviewCallback() {
+
+            @Override
+            public void onPreviewFrame(byte[] data, Camera camera) {
+                // TODO Auto-generated method stub
+
+                if (DEBUG_CAMERA_FRAME) Log.d(TAG, "onPreviewFrame : "+ data.length);
+
+            }
+        });
+
+        mCamera.setPreviewCallbackWithBuffer(new PreviewCallback() {
+
+            public void onPreviewFrame(byte[] data, Camera arg1) {
+                if (DEBUG_CAMERA) Log.d(TAG, "onPreviewFrame : "+ data.length);
+
+                    //codecs.encoder(data);
+            }
+        });
+*/
+
+
+        try {
+            mCamera.setPreviewDisplay(mSurfaceHolder);
+            mCamera.startPreview();
+
+            int ret = 0;
+
+            switch (mCameraType) {
+                case Const.CAMERA_TYPE_DOOR:
+                    ret = mWallPadInterface.videoInputControll(WallPadInterface.VIDEO_INPUT_TYPE_DOOR);
+                    String result = "btn_videoInput (" + WallPadInterface.VIDEO_INPUT_TYPE_DOOR + "): " + ret + "\n";
+                    Log.d(TAG, result);
+                    break;
+
+                case Const.CAMERA_TYPE_WALLPAD:
+                default:
+                    break;
+            }
+
+//            mWallPadInterface.setCameraBrightness(mCameraBrightController.getBrightness()     );
+
+        } catch (IOException _le) {
+            _le.printStackTrace();
+        }
+    }
+
+
+
+    // open doorCamera
+    private void doorCameraOpen() {
+        int ret = mWallPadInterface.doorPowerControll(true);
+
+        String result = "btn_doorPower (" + true + "): " + ret + "\n";
+        Log.e(TAG, "[doorCameraOpen] result = " + result);
+
+        if (ret != -1) {
+            bOpenedDoorCamera = true;
+
+//sfvCamera.setVisibility(View.VISIBLE);
+
+            //openCamera();
+            //setCameraParam();
+        }
+    }
+
+
+    // close doorCamera
+    private void doorCameraClose() {
+        try {
+            bOpenedDoorCamera = false;
+
+            //closeCamera();
+//sfvCamera.setVisibility(View.INVISIBLE);
+            if (mWallPadInterface != null) {
+                mWallPadInterface.doorPowerControll(false);
+                mWallPadInterface.close();
+            }
+            else {
+                Log.w(TAG, "[doorCameraClose] mWallPadInterface is null!!");
+            }
+        } catch (Exception e) {
+            Log.e(TAG, "[Exception] doorCameraClose()");
+            e.printStackTrace();
+        }
+    }
+
+
+}

+ 249 - 249
ManagerSetting/src/main/java/com/artncore/managersetting/ui/ControllerListAdapter.java

@@ -1,249 +1,249 @@
-package com.artncore.managersetting.ui;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import android.content.Context;
-import android.content.DialogInterface;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.AdapterView;
-import android.widget.AdapterView.OnItemSelectedListener;
-import android.widget.ArrayAdapter;
-import android.widget.Spinner;
-import android.widget.TextView;
-
-import com.artncore.managersetting.R;
-import com.artncore.managersetting.domain.ControllerVO;
-import com.artncore.managersetting.ui.activities.MainActivity;
-import com.artncore.managersetting.util.DialogUtil;
-
-
-public class ControllerListAdapter extends ArrayAdapter {
-    private static final String TAG = "ControllerListAdapter";
-
-    private final boolean DEBUG = true;
-
-    private Context mContext;
-    private int mLayoutId;
-    private ItemChangedListener mItemChangedListener;
-
-
-    // ConstrollerList spinner item select listener
-    public interface ItemChangedListener {
-        /* param */
-        /* int controllerIdx : controller index    */
-        /* int position : position    */
-        /* String itemName : item Name    */
-        public void onItemChanged(final int controllerIdx, final int position, final String itemName);
-    }
-
-
-//    private final String[] arrString = {"1", "2", "3", "4"};
-
-    // constructor
-    /* param */
-    /* Context context : Context    */
-    /* int layoutId : layout id */
-    /* List contollerList : contoller List  */
-    /* ItemChangedListener itemChangedListener : ItemChangedListener */
-    public ControllerListAdapter(Context context, int layoutId, List contollerList, ItemChangedListener itemChangedListener) {
-        super(context, layoutId, contollerList);
-        this.mContext = context;
-        this.mLayoutId = layoutId;
-        mItemChangedListener = itemChangedListener;
-    }
-
-
-    @Override
-    public View getView(int position, View convertView, ViewGroup parent) {
-        View view = convertView;
-
-        //if (view == null) {
-        // if (DEBUG)  Log.d(TAG, "--getView v == null");
-
-        LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(
-                Context.LAYOUT_INFLATER_SERVICE);
-        view = inflater.inflate(this.mLayoutId, null);
-        //}
-        ControllerVO item = (ControllerVO)getItem(position);
-
-        if (item != null) {
-            int controllerType = item.getType();
-            int controllerCount = item.getCount();
-            List<String> itemList = item.getItemList();
-            List<String> listString;
-
-            TextView controllerName = (TextView)view.findViewById(R.id.tv_name);
-            Spinner countSpinner = (Spinner)view.findViewById(R.id.count_spinner);
-
-            controllerName.setText(item.getName());
-            if (DEBUG)  Log.d(TAG, "item.getType() : " + item.getType()
-                    + ", item.getName() : " + item.getName()
-                    + ", item.getCount() : " + item.getCount()
-                    + ", \nitem.getItemList() : " + item.getItemList()
-            );
-
-            if (controllerCount > -1) {
-                if ((itemList != null) && (itemList.size() > 0)) {
-                    listString = itemList;
-                }
-                else {
-                    listString = new ArrayList<String>();
-                    listString.add(mContext.getString(R.string.do_not_used));
-
-                    if (controllerCount == 1) {
-                        listString.add(mContext.getString(R.string.do_used));
-                    }
-                    else {
-                        for (int i=1; i<=controllerCount; i++) {
-                            listString.add(String.valueOf(i));
-                        }
-                    }
-                }
-
-                ArrayAdapter counterAdapter = new ArrayAdapter(mContext
-                        , android.R.layout.simple_spinner_item
-                        , listString);
-
-                counterAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
-                countSpinner.setAdapter(counterAdapter);
-                countSpinner.setPrompt("select count");
-
-                countSpinner.setSelection(item.getInitCount());
-
-                SpinnerItemSelectedListener itemSelectedListener = new SpinnerItemSelectedListener(position, item.getName());
-                countSpinner.setOnItemSelectedListener(itemSelectedListener);
-
-            }
-            else {
-                countSpinner.setClickable(false);
-            }
-        }
-
-        return view;
-    }
-
-
-    private class SpinnerItemSelectedListener implements OnItemSelectedListener {
-        int mControllerIdx = 0;
-        String mControllerName;
-        int mPrePosition = 0;
-        private boolean bFirst = true;
-        private boolean bItemChanging = false;
-
-        // constructor
-        /* param */
-        /* int idx : controller id    */
-        /* String controllerName : controller Name   */
-        public SpinnerItemSelectedListener(int idx, String controllerName) {
-            mControllerIdx= idx;
-            mControllerName = controllerName;
-        }
-
-        @Override
-        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
-            if (DEBUG)   Log.d(TAG, "onItemSelected() position : " + position
-                    + ", mPrePosition : " + mPrePosition
-            );
-
-            MainActivity.setFinishTimerReset();
-
-            if (!bFirst) {
-                if (!bItemChanging && (mPrePosition != position)) {
-                    bItemChanging = true;
-
-                    String itemName = parent.getItemAtPosition(position).toString();
-                    openDialog(mControllerIdx, position, itemName, mControllerName, this, parent, mPrePosition);
-                }
-                else
-                    bItemChanging = false;
-            }
-            else
-                bFirst = false;
-
-            mPrePosition = position;
-        }
-
-        @Override
-        public void onNothingSelected(AdapterView<?> parent) {
-        }
-
-
-        // Item 변경완료 여부를 설정
-        /* param */
-        /* boolean itemChanged : true : changed    */
-        /*                       false : unchanged  */
-        public void setItemChangeCompleted(boolean itemChanged) {
-            if (itemChanged)
-                bItemChanging = false;
-        }
-    }
-
-
-
-
-
-
-
-
-
-
-
-    private DialogUtil mDialog;
-    // open Dialog
-    /* param */
-    /* int controllerIdx : controller id */
-    /* int position : position */
-    /* String itemName :  item Name */
-    /* String controllerName :  controller Name */
-    /* SpinnerItemSelectedListener spinnerItemSelectedListener :  SpinnerItemSelectedListener */
-    /* View view :  Spinner */
-    /* int prePosition :  previous Position */
-    public void openDialog(final int controllerIdx, final int position
-            , final String itemName, final String controllerName
-            , final SpinnerItemSelectedListener spinnerItemSelectedListener
-            , final View view, final int prePosition) {
-        mDialog = new DialogUtil(mContext);
-        String title = controllerName + " 변경";
-        //String message = "개수를 " + String.valueOf(position) + " 으로 변경하시겠습니까?";
-        String message = "[" + itemName + "]  으로 변경하시겠습니까?";
-
-        DialogInterface.OnClickListener positiveListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        dialog.dismiss();
-
-                        if (mItemChangedListener != null)
-                            mItemChangedListener.onItemChanged(controllerIdx, position, itemName);
-
-                        spinnerItemSelectedListener.setItemChangeCompleted(true);
-                    }
-                };
-
-        DialogInterface.OnClickListener negativeListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        Spinner spinner = (Spinner)view;
-                        spinner.setSelection(prePosition);
-
-                        dialog.dismiss();
-                    }
-                };
-
-        mDialog.openCommonDialog(title, message, positiveListener, negativeListener);
-    }
-
-    // close Dialog
-    public void closeDialog() {
-        if (mDialog != null) {
-            mDialog.closeDialog();
-            mDialog = null;
-        }
-    }
-
-}
+package com.artncore.managersetting.ui;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import android.content.Context;
+import android.content.DialogInterface;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemSelectedListener;
+import android.widget.ArrayAdapter;
+import android.widget.Spinner;
+import android.widget.TextView;
+
+import com.artncore.managersetting.R;
+import com.artncore.managersetting.domain.ControllerVO;
+import com.artncore.managersetting.ui.activities.MainActivity;
+import com.artncore.managersetting.util.DialogUtil;
+
+
+public class ControllerListAdapter extends ArrayAdapter {
+    private static final String TAG = "ControllerListAdapter";
+
+    private final boolean DEBUG = true;
+
+    private Context mContext;
+    private int mLayoutId;
+    private ItemChangedListener mItemChangedListener;
+
+
+    // ConstrollerList spinner item select listener
+    public interface ItemChangedListener {
+        /* param */
+        /* int controllerIdx : controller index    */
+        /* int position : position    */
+        /* String itemName : item Name    */
+        public void onItemChanged(final int controllerIdx, final int position, final String itemName);
+    }
+
+
+//    private final String[] arrString = {"1", "2", "3", "4"};
+
+    // constructor
+    /* param */
+    /* Context context : Context    */
+    /* int layoutId : layout id */
+    /* List contollerList : contoller List  */
+    /* ItemChangedListener itemChangedListener : ItemChangedListener */
+    public ControllerListAdapter(Context context, int layoutId, List contollerList, ItemChangedListener itemChangedListener) {
+        super(context, layoutId, contollerList);
+        this.mContext = context;
+        this.mLayoutId = layoutId;
+        mItemChangedListener = itemChangedListener;
+    }
+
+
+    @Override
+    public View getView(int position, View convertView, ViewGroup parent) {
+        View view = convertView;
+
+        //if (view == null) {
+        // if (DEBUG)  Log.d(TAG, "--getView v == null");
+
+        LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(
+                Context.LAYOUT_INFLATER_SERVICE);
+        view = inflater.inflate(this.mLayoutId, null);
+        //}
+        ControllerVO item = (ControllerVO)getItem(position);
+
+        if (item != null) {
+            int controllerType = item.getType();
+            int controllerCount = item.getCount();
+            List<String> itemList = item.getItemList();
+            List<String> listString;
+
+            TextView controllerName = (TextView)view.findViewById(R.id.tv_name);
+            Spinner countSpinner = (Spinner)view.findViewById(R.id.count_spinner);
+
+            controllerName.setText(item.getName());
+            if (DEBUG)  Log.d(TAG, "item.getType() : " + item.getType()
+                    + ", item.getName() : " + item.getName()
+                    + ", item.getCount() : " + item.getCount()
+                    + ", \nitem.getItemList() : " + item.getItemList()
+            );
+
+            if (controllerCount > -1) {
+                if ((itemList != null) && (itemList.size() > 0)) {
+                    listString = itemList;
+                }
+                else {
+                    listString = new ArrayList<String>();
+                    listString.add(mContext.getString(R.string.do_not_used));
+
+                    if (controllerCount == 1) {
+                        listString.add(mContext.getString(R.string.do_used));
+                    }
+                    else {
+                        for (int i=1; i<=controllerCount; i++) {
+                            listString.add(String.valueOf(i));
+                        }
+                    }
+                }
+
+                ArrayAdapter counterAdapter = new ArrayAdapter(mContext
+                        , android.R.layout.simple_spinner_item
+                        , listString);
+
+                counterAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+                countSpinner.setAdapter(counterAdapter);
+                countSpinner.setPrompt("select count");
+
+                countSpinner.setSelection(item.getInitCount());
+
+                SpinnerItemSelectedListener itemSelectedListener = new SpinnerItemSelectedListener(position, item.getName());
+                countSpinner.setOnItemSelectedListener(itemSelectedListener);
+
+            }
+            else {
+                countSpinner.setClickable(false);
+            }
+        }
+
+        return view;
+    }
+
+
+    private class SpinnerItemSelectedListener implements OnItemSelectedListener {
+        int mControllerIdx = 0;
+        String mControllerName;
+        int mPrePosition = 0;
+        private boolean bFirst = true;
+        private boolean bItemChanging = false;
+
+        // constructor
+        /* param */
+        /* int idx : controller id    */
+        /* String controllerName : controller Name   */
+        public SpinnerItemSelectedListener(int idx, String controllerName) {
+            mControllerIdx= idx;
+            mControllerName = controllerName;
+        }
+
+        @Override
+        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
+            if (DEBUG)   Log.d(TAG, "onItemSelected() position : " + position
+                    + ", mPrePosition : " + mPrePosition
+            );
+
+            MainActivity.setFinishTimerReset();
+
+            if (!bFirst) {
+                if (!bItemChanging && (mPrePosition != position)) {
+                    bItemChanging = true;
+
+                    String itemName = parent.getItemAtPosition(position).toString();
+                    openDialog(mControllerIdx, position, itemName, mControllerName, this, parent, mPrePosition);
+                }
+                else
+                    bItemChanging = false;
+            }
+            else
+                bFirst = false;
+
+            mPrePosition = position;
+        }
+
+        @Override
+        public void onNothingSelected(AdapterView<?> parent) {
+        }
+
+
+        // Item 변경완료 여부를 설정
+        /* param */
+        /* boolean itemChanged : true : changed    */
+        /*                       false : unchanged  */
+        public void setItemChangeCompleted(boolean itemChanged) {
+            if (itemChanged)
+                bItemChanging = false;
+        }
+    }
+
+
+
+
+
+
+
+
+
+
+
+    private DialogUtil mDialog;
+    // open Dialog
+    /* param */
+    /* int controllerIdx : controller id */
+    /* int position : position */
+    /* String itemName :  item Name */
+    /* String controllerName :  controller Name */
+    /* SpinnerItemSelectedListener spinnerItemSelectedListener :  SpinnerItemSelectedListener */
+    /* View view :  Spinner */
+    /* int prePosition :  previous Position */
+    public void openDialog(final int controllerIdx, final int position
+            , final String itemName, final String controllerName
+            , final SpinnerItemSelectedListener spinnerItemSelectedListener
+            , final View view, final int prePosition) {
+        mDialog = new DialogUtil(mContext);
+        String title = controllerName + " 변경";
+        //String message = "개수를 " + String.valueOf(position) + " 으로 변경하시겠습니까?";
+        String message = "[" + itemName + "]  으로 변경하시겠습니까?";
+
+        DialogInterface.OnClickListener positiveListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        dialog.dismiss();
+
+                        if (mItemChangedListener != null)
+                            mItemChangedListener.onItemChanged(controllerIdx, position, itemName);
+
+                        spinnerItemSelectedListener.setItemChangeCompleted(true);
+                    }
+                };
+
+        DialogInterface.OnClickListener negativeListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        Spinner spinner = (Spinner)view;
+                        spinner.setSelection(prePosition);
+
+                        dialog.dismiss();
+                    }
+                };
+
+        mDialog.openCommonDialog(title, message, positiveListener, negativeListener);
+    }
+
+    // close Dialog
+    public void closeDialog() {
+        if (mDialog != null) {
+            mDialog.closeDialog();
+            mDialog = null;
+        }
+    }
+
+}

+ 14 - 49
ManagerSetting/src/main/java/com/artncore/managersetting/ui/RecordTestDialog.java

@@ -23,7 +23,6 @@ import com.artncore.commons.define;
 import com.artncore.deviceinterface.WallPadInterface;
 import com.artncore.managersetting.R;
 import com.artncore.managersetting.ui.activities.MainActivity;
-import com.util.LogUtil;
 
 import java.io.File;
 import java.io.IOException;
@@ -174,16 +173,13 @@ public class RecordTestDialog extends Dialog {
                 File file = new File(VIDEO_TEMP_PATH);
                 if (file.exists()) {
                     Log.w(TAG, "[startVideoRecording] file delete!!");
-                    FileDelte(file);//file.delete();
+                    file.delete();
                 }
                 mMediaRecorder = new MediaRecorder();
                 mCameraOpenCheckHandler.sendEmptyMessage(0);
             }
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
         } catch (Exception e) {
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
             Log.e(TAG, "[Exception] startVideoRecording()");
         }
     }
@@ -205,11 +201,8 @@ public class RecordTestDialog extends Dialog {
 
                 closeCamera();
             }
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
         } catch (Exception e) {
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
             Log.e(TAG, "[Exception] stopVideoRecording()");
         }
     }
@@ -243,12 +236,9 @@ public class RecordTestDialog extends Dialog {
                 mVideoView.start();
                 Toast.makeText(getContext(), "녹화된 영상을 재생합니다.", Toast.LENGTH_SHORT).show();
             }
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
         } catch (Exception e) {
             Log.e(TAG, "[Exception] startVideoPlay()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -328,12 +318,9 @@ public class RecordTestDialog extends Dialog {
             Log.d(TAG, "[mCameraCallback] surfaceCreated() ");
             try {
                 openCamera();
-            } catch (RuntimeException re) {
-                Log.e(TAG, re.toString());
             } catch (Exception e) {
                 Toast.makeText(getContext(), "카메라를 실행하는데 오류가 생겼습니다.", Toast.LENGTH_SHORT).show();
-                //e.printStackTrace();
-                LogUtil.errorLogInfo("", TAG, e);
+                e.printStackTrace();
                 closeCamera();
             }
 
@@ -426,8 +413,7 @@ public class RecordTestDialog extends Dialog {
                     videoSize = size;
             }
         } catch (NullPointerException ne) {
-            //ne.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, ne);
+            ne.printStackTrace();
             Log.e(TAG, "[NullPointerException] setCameraParam() (2)");
         }
 
@@ -441,8 +427,7 @@ public class RecordTestDialog extends Dialog {
             String result = "btn_videoInput (" + WallPadInterface.VIDEO_INPUT_TYPE_DOOR + "): " + ret + "\n";
             Log.d(TAG, "[setCameraParam] result [" + result + "]");
         } catch (IOException ioe) {
-            //ioe.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, ioe);
+            ioe.printStackTrace();
             Log.e(TAG, "[IOException] setCameraParam()");
         }
     }
@@ -471,15 +456,12 @@ public class RecordTestDialog extends Dialog {
             File file = new File(VIDEO_TEMP_PATH);
             if (file.exists()) {
                 Log.w(TAG, "[finishRecordingPopup] file delete!!");
-                FileDelte(file);//file.delete();
+                file.delete();
             }
             closeDialog();
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
         } catch (Exception e) {
             Log.e(TAG, "[Exception] finishRecordingPopup()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -491,12 +473,9 @@ public class RecordTestDialog extends Dialog {
                 mMediaRecorder = null;
             }
             finishRecordingPopup(true);
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
         } catch (Exception e) {
             Log.e(TAG, "[Exception] resetRecorderSetting()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -526,13 +505,11 @@ public class RecordTestDialog extends Dialog {
                     mMediaRecorder.prepare();
                 } catch (IllegalStateException e) {
                     Log.e(TAG, "[IllegalStateException] mCameraOpenCheckHandler");
-                    //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+                    e.printStackTrace();
                     resetRecorderSetting();
                 } catch (IOException e) {
                     Log.e(TAG, "[IOException] mCameraOpenCheckHandler");
-                    //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+                    e.printStackTrace();
                     resetRecorderSetting();
                 }
 
@@ -541,26 +518,14 @@ public class RecordTestDialog extends Dialog {
                     Toast.makeText(getContext(), "영상 녹화를 시작합니다.", Toast.LENGTH_SHORT).show();
                 } catch (IllegalStateException e) {
                     Log.e(TAG, "[IllegalStateException] mCameraOpenCheckHandler.start");
-                    //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+                    e.printStackTrace();
                     resetRecorderSetting();
-                } catch (RuntimeException re) {
-                    Log.e(TAG, re.toString());
                 } catch (Exception e) {
                     Log.e(TAG, "[Exception] mCameraOpenCheckHandler.start");
-                    //e.printStackTrace();
-                    LogUtil.errorLogInfo("", TAG, e);
+                    e.printStackTrace();
                     resetRecorderSetting();
                 }
             }
         }
     };
-
-    private synchronized void FileDelte(File file)
-    {
-        if(file!=null && file.exists())
-        {
-            file.delete();
-        }
-    }
 }

+ 200 - 200
ManagerSetting/src/main/java/com/artncore/managersetting/ui/SwitchButton.java

@@ -1,200 +1,200 @@
-package com.artncore.managersetting.ui;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import kr.co.icontrols.wallpadsupport.Version;
-import kr.co.icontrols.wallpadsupport.WpadScale;
-import android.content.Context;
-import android.graphics.Color;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.Button;
-import android.widget.LinearLayout;
-
-import com.artncore.managersetting.R;
-import com.artncore.managersetting.ui.activities.MainActivity;
-
-
-public class SwitchButton extends LinearLayout {
-    private static final String TAG = "SwitchButton";
-
-    private final boolean DEBUG = true;
-
-
-    private Context mContext;
-    private SwitchButtonChangedListener mListener;
-    private int mIdx;
-    private Object mObject;
-    private boolean mIsSet = false;
-
-    private View mRootView;
-    private Button mBtnSet;
-    private Button mBtnClear;
-
-
-    final String NS = "http://schemas.android.com/apk/res/com.artncore.managersetting";
-    final String ATTR = "switch_choice";
-    
-    // SwitchButton changed listener
-    public interface SwitchButtonChangedListener {
-        public void onSwitchChanged(SwitchButton switchButton, boolean isSet, int position, Object object);
-    }
-
-
-    // constructor
-    public SwitchButton(Context context, AttributeSet attrs) {
-        super(context, attrs);
-
-        if (DEBUG)    Log.d(TAG, "SwitchButton() ");
-
-        initSwitchButton(context, null, mIsSet);
-    }
-
-
-    // constructor
-    public SwitchButton(Context context, SwitchButtonChangedListener listener, boolean isSet) {
-        super(context);
-
-        initSwitchButton(context, listener, isSet);
-    }
-
-
-    // init SwitchButton
-    public void initSwitchButton(Context context, SwitchButtonChangedListener listener, boolean isSet) {
-
-        mContext = context;
-        mListener = listener;
-        mIsSet = isSet;
-
-
-        LayoutInflater vi = (LayoutInflater)mContext
-                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-        
-        if ((WpadScale.getWidthPixels() == 800) && (WpadScale.getHeightPixels() == 480)) {
-            mRootView = vi.inflate(R.layout.switch_button_800x480, null);
-        }
-        else {
-            if (Version.getModelType() == Version.MODEL_TYPE.IHN_1030_D || Version.getModelType() == Version.MODEL_TYPE.IHN_1020B_C) {
-                mRootView = vi.inflate(R.layout.switch_button_1024x600_a20, null);   
-            }
-            else {
-                mRootView = vi.inflate(R.layout.switch_button, null);  
-            }
-        }
-  
-        
-        
-
-        mBtnSet = (Button) mRootView.findViewById(R.id.btn_set);
-        mBtnClear = (Button) mRootView.findViewById(R.id.btn_clear);
-
-        mBtnSet.setOnClickListener(mButtonClick);
-        mBtnClear.setOnClickListener(mButtonClick);
-
-        switchEnabled(mIsSet);
-
-        addView(mRootView);
-    }
-
-
-    // set SwitchButtonChangedListener
-    public void setSwitchButtonChangedListener(SwitchButtonChangedListener listener, int idx, Object object) {
-        mListener = listener;
-        mIdx = idx;
-        mObject = object;
-    }
-
-
-
-
-    private final int DISABLED_BACKGROUND_RESOURCE_ID = R.color.button_disabled;
-    private final int ENABLED_BACKGROUND_RESOURCE_ID = R.color.button_default;
-
-    private final int DISABLED_TEXT_COLOR_RESOURCE_ID = R.color.button_text_disabled;
-    private final int ENABLED_TEXT_COLOR_RESOURCE_ID = R.color.button_text_default;
-
-    // controll switch on/off
-    public void switchEnabled(boolean isSet) {
-        mIsSet = isSet;
-
-        if (mIsSet) {
-            mBtnSet.setBackgroundResource(ENABLED_BACKGROUND_RESOURCE_ID);
-            mBtnSet.setTextColor(getResources().getColor(ENABLED_TEXT_COLOR_RESOURCE_ID));
-
-            mBtnClear.setBackgroundResource(DISABLED_BACKGROUND_RESOURCE_ID);
-            mBtnClear.setTextColor(getResources().getColor(DISABLED_TEXT_COLOR_RESOURCE_ID));
-        }
-        else {
-            mBtnSet.setBackgroundResource(DISABLED_BACKGROUND_RESOURCE_ID);
-            mBtnSet.setTextColor(getResources().getColor(DISABLED_TEXT_COLOR_RESOURCE_ID));
-
-            mBtnClear.setBackgroundResource(ENABLED_BACKGROUND_RESOURCE_ID);
-            mBtnClear.setTextColor(getResources().getColor(ENABLED_TEXT_COLOR_RESOURCE_ID));
-        }
-    }
-
-
-
-
-    private OnClickListener mButtonClick = new OnClickListener() {
-        @Override
-        public void onClick(View v) {
-
-            MainActivity.setFinishTimerReset();
-            
-            switch (v.getId()) {
-                case R.id.btn_set:
-                {
-                    if (!mIsSet) {
-                        if (DEBUG)    Log.d(TAG, "switchEnabled(true) ");
-                        switchEnabled(true);
-                        if (mListener != null) mListener.onSwitchChanged(SwitchButton.this, mIsSet, mIdx, mObject);
-                    }
-                }
-                break;
-
-                case R.id.btn_clear:
-                {
-                    if (mIsSet) {
-                        if (DEBUG)    Log.d(TAG, "switchEnabled(false) ");
-                        switchEnabled(false);
-                        if (mListener != null) mListener.onSwitchChanged(SwitchButton.this, mIsSet, mIdx, mObject);
-                    }
-                }
-                break;
-
-                default:
-                    break;
-            }
-        }
-    };
-
-
-
-    // return switch on/off
-    public boolean IsSet() {
-        return mIsSet;
-    }
-
-    // set SwitchButton Text
-    public void setText(List<String> listButton) {
-        if ((listButton != null) && (listButton.size() > 1)) {
-            mBtnSet.setText(listButton.get(0));
-            mBtnClear.setText(listButton.get(1));
-        }
-    }
-
-    // get SwitchButton Text
-    public List<String> getText() {
-        List<String> listText = new ArrayList<String>();
-
-        listText.add(mBtnSet.getText().toString());
-        listText.add(mBtnClear.getText().toString());
-
-        return listText;
-    }
-
-}
+package com.artncore.managersetting.ui;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import kr.co.icontrols.wallpadsupport.Version;
+import kr.co.icontrols.wallpadsupport.WpadScale;
+import android.content.Context;
+import android.graphics.Color;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.Button;
+import android.widget.LinearLayout;
+
+import com.artncore.managersetting.R;
+import com.artncore.managersetting.ui.activities.MainActivity;
+
+
+public class SwitchButton extends LinearLayout {
+    private static final String TAG = "SwitchButton";
+
+    private final boolean DEBUG = true;
+
+
+    private Context mContext;
+    private SwitchButtonChangedListener mListener;
+    private int mIdx;
+    private Object mObject;
+    private boolean mIsSet = false;
+
+    private View mRootView;
+    private Button mBtnSet;
+    private Button mBtnClear;
+
+
+    final String NS = "http://schemas.android.com/apk/res/com.artncore.managersetting";
+    final String ATTR = "switch_choice";
+    
+    // SwitchButton changed listener
+    public interface SwitchButtonChangedListener {
+        public void onSwitchChanged(SwitchButton switchButton, boolean isSet, int position, Object object);
+    }
+
+
+    // constructor
+    public SwitchButton(Context context, AttributeSet attrs) {
+        super(context, attrs);
+
+        if (DEBUG)    Log.d(TAG, "SwitchButton() ");
+
+        initSwitchButton(context, null, mIsSet);
+    }
+
+
+    // constructor
+    public SwitchButton(Context context, SwitchButtonChangedListener listener, boolean isSet) {
+        super(context);
+
+        initSwitchButton(context, listener, isSet);
+    }
+
+
+    // init SwitchButton
+    public void initSwitchButton(Context context, SwitchButtonChangedListener listener, boolean isSet) {
+
+        mContext = context;
+        mListener = listener;
+        mIsSet = isSet;
+
+
+        LayoutInflater vi = (LayoutInflater)mContext
+                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+        
+        if ((WpadScale.getWidthPixels() == 800) && (WpadScale.getHeightPixels() == 480)) {
+            mRootView = vi.inflate(R.layout.switch_button_800x480, null);
+        }
+        else {
+            if (Version.getModelType() == Version.MODEL_TYPE.IHN_1030_D || Version.getModelType() == Version.MODEL_TYPE.IHN_1020B_C) {
+                mRootView = vi.inflate(R.layout.switch_button_1024x600_a20, null);   
+            }
+            else {
+                mRootView = vi.inflate(R.layout.switch_button, null);  
+            }
+        }
+  
+        
+        
+
+        mBtnSet = (Button) mRootView.findViewById(R.id.btn_set);
+        mBtnClear = (Button) mRootView.findViewById(R.id.btn_clear);
+
+        mBtnSet.setOnClickListener(mButtonClick);
+        mBtnClear.setOnClickListener(mButtonClick);
+
+        switchEnabled(mIsSet);
+
+        addView(mRootView);
+    }
+
+
+    // set SwitchButtonChangedListener
+    public void setSwitchButtonChangedListener(SwitchButtonChangedListener listener, int idx, Object object) {
+        mListener = listener;
+        mIdx = idx;
+        mObject = object;
+    }
+
+
+
+
+    private final int DISABLED_BACKGROUND_RESOURCE_ID = R.color.button_disabled;
+    private final int ENABLED_BACKGROUND_RESOURCE_ID = R.color.button_default;
+
+    private final int DISABLED_TEXT_COLOR_RESOURCE_ID = R.color.button_text_disabled;
+    private final int ENABLED_TEXT_COLOR_RESOURCE_ID = R.color.button_text_default;
+
+    // controll switch on/off
+    public void switchEnabled(boolean isSet) {
+        mIsSet = isSet;
+
+        if (mIsSet) {
+            mBtnSet.setBackgroundResource(ENABLED_BACKGROUND_RESOURCE_ID);
+            mBtnSet.setTextColor(getResources().getColor(ENABLED_TEXT_COLOR_RESOURCE_ID));
+
+            mBtnClear.setBackgroundResource(DISABLED_BACKGROUND_RESOURCE_ID);
+            mBtnClear.setTextColor(getResources().getColor(DISABLED_TEXT_COLOR_RESOURCE_ID));
+        }
+        else {
+            mBtnSet.setBackgroundResource(DISABLED_BACKGROUND_RESOURCE_ID);
+            mBtnSet.setTextColor(getResources().getColor(DISABLED_TEXT_COLOR_RESOURCE_ID));
+
+            mBtnClear.setBackgroundResource(ENABLED_BACKGROUND_RESOURCE_ID);
+            mBtnClear.setTextColor(getResources().getColor(ENABLED_TEXT_COLOR_RESOURCE_ID));
+        }
+    }
+
+
+
+
+    private OnClickListener mButtonClick = new OnClickListener() {
+        @Override
+        public void onClick(View v) {
+
+            MainActivity.setFinishTimerReset();
+            
+            switch (v.getId()) {
+                case R.id.btn_set:
+                {
+                    if (!mIsSet) {
+                        if (DEBUG)    Log.d(TAG, "switchEnabled(true) ");
+                        switchEnabled(true);
+                        if (mListener != null) mListener.onSwitchChanged(SwitchButton.this, mIsSet, mIdx, mObject);
+                    }
+                }
+                break;
+
+                case R.id.btn_clear:
+                {
+                    if (mIsSet) {
+                        if (DEBUG)    Log.d(TAG, "switchEnabled(false) ");
+                        switchEnabled(false);
+                        if (mListener != null) mListener.onSwitchChanged(SwitchButton.this, mIsSet, mIdx, mObject);
+                    }
+                }
+                break;
+
+                default:
+                    break;
+            }
+        }
+    };
+
+
+
+    // return switch on/off
+    public boolean IsSet() {
+        return mIsSet;
+    }
+
+    // set SwitchButton Text
+    public void setText(List<String> listButton) {
+        if ((listButton != null) && (listButton.size() > 1)) {
+            mBtnSet.setText(listButton.get(0));
+            mBtnClear.setText(listButton.get(1));
+        }
+    }
+
+    // get SwitchButton Text
+    public List<String> getText() {
+        List<String> listText = new ArrayList<String>();
+
+        listText.add(mBtnSet.getText().toString());
+        listText.add(mBtnClear.getText().toString());
+
+        return listText;
+    }
+
+}

+ 175 - 175
ManagerSetting/src/main/java/com/artncore/managersetting/ui/SwitchButtonListAdapter.java

@@ -1,175 +1,175 @@
-package com.artncore.managersetting.ui;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import android.content.Context;
-import android.content.DialogInterface;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ArrayAdapter;
-import android.widget.TextView;
-
-import com.artncore.managersetting.R;
-import com.artncore.managersetting.domain.ControllerVO;
-import com.artncore.managersetting.ui.activities.MainActivity;
-import com.artncore.managersetting.util.DialogUtil;
-
-
-public class SwitchButtonListAdapter extends ArrayAdapter implements SwitchButton.SwitchButtonChangedListener {
-    private static final String TAG = "SwitchButtonListAdapter";
-
-    private final boolean DEBUG = true;
-
-    private Context mContext;
-    private int mLayoutId;
-    private ItemChangedListener mItemChangedListener;
-
-
-
-    // SwitchButtnList item changed listener
-    public interface ItemChangedListener {
-        public void onItemChanged(final int controllerIdx, final int position, final String itemName);
-    }
-
-
-    // constructor
-    public SwitchButtonListAdapter(Context context, int layoutId, List contollerList, ItemChangedListener itemChangedListener) {
-        super(context, layoutId, contollerList);
-        this.mContext = context;
-        this.mLayoutId = layoutId;
-        mItemChangedListener = itemChangedListener;
-    }
-
-
-    @Override
-    public View getView(int position, View convertView, ViewGroup parent) {
-        View view = convertView;
-
-        if (view == null) {
-            // if (DEBUG)  Log.d(TAG, "--getView v == null");
-
-            LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(
-                    Context.LAYOUT_INFLATER_SERVICE);
-            view = inflater.inflate(this.mLayoutId, null);
-        }
-        ControllerVO item = (ControllerVO)getItem(position);
-
-        if (item != null) {
-            int controllerType = item.getType();
-            int controllerCount = item.getCount();
-            List<String> itemList = item.getItemList();
-            boolean initValue = (item.getInitCount() == 0) ? true : false;
-
-            TextView controllerName = (TextView)view.findViewById(R.id.tv_name);
-            SwitchButton btnSwitch = (SwitchButton)view.findViewById(R.id.btn_switch);
-            btnSwitch.setSwitchButtonChangedListener(this, position, (Object)item);
-            btnSwitch.switchEnabled(initValue);
-
-
-            controllerName.setText(item.getName());
-            if (DEBUG)  Log.d(TAG, "item.getType() : " + item.getType()
-                    + ", item.getName() : " + item.getName()
-                    + ", item.getCount() : " + item.getCount()
-                    + ", item.getInitCount() : " + item.getInitCount()
-            );
-
-            if (controllerCount > -1) {
-                if ((itemList == null) || (itemList.size() < 2)) {
-                    List<String> listString = new ArrayList<String>();
-                    listString.add(mContext.getString(R.string.set));
-                    listString.add(mContext.getString(R.string.clear));
-
-                    item.setItemList(listString);
-                }
-
-                btnSwitch.setText(item.getItemList());
-            }
-        }
-
-        return view;
-    }
-
-
-    @Override
-    public void onSwitchChanged(SwitchButton switchButton, boolean isSet, int position, Object object) {
-        ControllerVO item = (ControllerVO)object;
-        if (item != null) {
-            int idx = isSet ? 0 : 1;
-            String itemName = null;
-            String controllerName = null;
-            List<String> itemList = item.getItemList();
-
-            MainActivity.setFinishTimerReset();
-
-            if ((itemList != null) && (itemList.size() > 1)) {
-                controllerName = item.getName();
-                itemName = itemList.get(idx);
-
-                if (DEBUG)   Log.d(TAG, "onSwitchChanged() itemName : " + itemName
-                        +  ", controllerName : " + controllerName
-                );
-            }
-
-            openDialog(switchButton, position, idx/*isSet*/, itemName, controllerName);
-        }
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-
-    private DialogUtil mDialog;
-    // open dialog
-    public void openDialog(final SwitchButton switchButton, final int controllerIdx, final int position
-            , final String itemName, final String controllerName) {
-        mDialog = new DialogUtil(mContext);
-        String title = controllerName + " 변경";
-        //String message = "개수를 " + String.valueOf(position) + " 으로 변경하시겠습니까?";
-        String message = "[" + itemName + "]  으로 변경하시겠습니까?";
-        Log.d(TAG, "[openDialog] controllerIdx [" + controllerIdx + "], itemName [" + itemName + "]");
-
-        DialogInterface.OnClickListener positiveListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        dialog.dismiss();
-
-                        if (mItemChangedListener != null) {
-                            mItemChangedListener.onItemChanged(controllerIdx, position, itemName);
-                        }
-                    }
-                };
-
-        DialogInterface.OnClickListener negativeListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        switchButton.switchEnabled(!switchButton.IsSet());
-
-                        dialog.dismiss();
-                    }
-                };
-
-        mDialog.openCommonDialog(title, message, positiveListener, negativeListener);
-    }
-
-    // close dialog
-    public void closeDialog() {
-        if (mDialog != null) {
-            mDialog.closeDialog();
-            mDialog = null;
-        }
-    }
-
-}
+package com.artncore.managersetting.ui;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import android.content.Context;
+import android.content.DialogInterface;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ArrayAdapter;
+import android.widget.TextView;
+
+import com.artncore.managersetting.R;
+import com.artncore.managersetting.domain.ControllerVO;
+import com.artncore.managersetting.ui.activities.MainActivity;
+import com.artncore.managersetting.util.DialogUtil;
+
+
+public class SwitchButtonListAdapter extends ArrayAdapter implements SwitchButton.SwitchButtonChangedListener {
+    private static final String TAG = "SwitchButtonListAdapter";
+
+    private final boolean DEBUG = true;
+
+    private Context mContext;
+    private int mLayoutId;
+    private ItemChangedListener mItemChangedListener;
+
+
+
+    // SwitchButtnList item changed listener
+    public interface ItemChangedListener {
+        public void onItemChanged(final int controllerIdx, final int position, final String itemName);
+    }
+
+
+    // constructor
+    public SwitchButtonListAdapter(Context context, int layoutId, List contollerList, ItemChangedListener itemChangedListener) {
+        super(context, layoutId, contollerList);
+        this.mContext = context;
+        this.mLayoutId = layoutId;
+        mItemChangedListener = itemChangedListener;
+    }
+
+
+    @Override
+    public View getView(int position, View convertView, ViewGroup parent) {
+        View view = convertView;
+
+        if (view == null) {
+            // if (DEBUG)  Log.d(TAG, "--getView v == null");
+
+            LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(
+                    Context.LAYOUT_INFLATER_SERVICE);
+            view = inflater.inflate(this.mLayoutId, null);
+        }
+        ControllerVO item = (ControllerVO)getItem(position);
+
+        if (item != null) {
+            int controllerType = item.getType();
+            int controllerCount = item.getCount();
+            List<String> itemList = item.getItemList();
+            boolean initValue = (item.getInitCount() == 0) ? true : false;
+
+            TextView controllerName = (TextView)view.findViewById(R.id.tv_name);
+            SwitchButton btnSwitch = (SwitchButton)view.findViewById(R.id.btn_switch);
+            btnSwitch.setSwitchButtonChangedListener(this, position, (Object)item);
+            btnSwitch.switchEnabled(initValue);
+
+
+            controllerName.setText(item.getName());
+            if (DEBUG)  Log.d(TAG, "item.getType() : " + item.getType()
+                    + ", item.getName() : " + item.getName()
+                    + ", item.getCount() : " + item.getCount()
+                    + ", item.getInitCount() : " + item.getInitCount()
+            );
+
+            if (controllerCount > -1) {
+                if ((itemList == null) || (itemList.size() < 2)) {
+                    List<String> listString = new ArrayList<String>();
+                    listString.add(mContext.getString(R.string.set));
+                    listString.add(mContext.getString(R.string.clear));
+
+                    item.setItemList(listString);
+                }
+
+                btnSwitch.setText(item.getItemList());
+            }
+        }
+
+        return view;
+    }
+
+
+    @Override
+    public void onSwitchChanged(SwitchButton switchButton, boolean isSet, int position, Object object) {
+        ControllerVO item = (ControllerVO)object;
+        if (item != null) {
+            int idx = isSet ? 0 : 1;
+            String itemName = null;
+            String controllerName = null;
+            List<String> itemList = item.getItemList();
+
+            MainActivity.setFinishTimerReset();
+
+            if ((itemList != null) && (itemList.size() > 1)) {
+                controllerName = item.getName();
+                itemName = itemList.get(idx);
+
+                if (DEBUG)   Log.d(TAG, "onSwitchChanged() itemName : " + itemName
+                        +  ", controllerName : " + controllerName
+                );
+            }
+
+            openDialog(switchButton, position, idx/*isSet*/, itemName, controllerName);
+        }
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+    private DialogUtil mDialog;
+    // open dialog
+    public void openDialog(final SwitchButton switchButton, final int controllerIdx, final int position
+            , final String itemName, final String controllerName) {
+        mDialog = new DialogUtil(mContext);
+        String title = controllerName + " 변경";
+        //String message = "개수를 " + String.valueOf(position) + " 으로 변경하시겠습니까?";
+        String message = "[" + itemName + "]  으로 변경하시겠습니까?";
+        Log.d(TAG, "[openDialog] controllerIdx [" + controllerIdx + "], itemName [" + itemName + "]");
+
+        DialogInterface.OnClickListener positiveListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        dialog.dismiss();
+
+                        if (mItemChangedListener != null) {
+                            mItemChangedListener.onItemChanged(controllerIdx, position, itemName);
+                        }
+                    }
+                };
+
+        DialogInterface.OnClickListener negativeListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        switchButton.switchEnabled(!switchButton.IsSet());
+
+                        dialog.dismiss();
+                    }
+                };
+
+        mDialog.openCommonDialog(title, message, positiveListener, negativeListener);
+    }
+
+    // close dialog
+    public void closeDialog() {
+        if (mDialog != null) {
+            mDialog.closeDialog();
+            mDialog = null;
+        }
+    }
+
+}

+ 787 - 795
ManagerSetting/src/main/java/com/artncore/managersetting/ui/activities/MainActivity.java

@@ -1,795 +1,787 @@
-package com.artncore.managersetting.ui.activities;
-
-import android.annotation.SuppressLint;
-import android.app.Activity;
-import android.content.BroadcastReceiver;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.os.Bundle;
-import android.os.CountDownTimer;
-import android.os.Handler;
-import android.os.Message;
-//import android.support.v4.app.FragmentActivity;
-import androidx.fragment.app.FragmentActivity;
-import android.util.Log;
-import android.view.KeyEvent;
-import android.view.MotionEvent;
-import android.view.WindowManager;
-
-import androidx.fragment.app.FragmentActivity;
-
-import com.artncore.WallPadDataMgr.WallpadStatusData;
-import com.artncore.deviceinterface.WallPadInterface;
-import com.artncore.managersetting.MainApplication;
-import com.artncore.managersetting.R;
-import com.artncore.managersetting.dao.MainDatabaseManager;
-import com.artncore.managersetting.domain.Const;
-import com.artncore.managersetting.ui.fragments.AdminCheckFragment;
-import com.artncore.managersetting.ui.fragments.AdminDeveloperModeFragment;
-import com.artncore.managersetting.ui.fragments.AdminInRoomSensorSetFragment;
-import com.artncore.managersetting.ui.fragments.AdminMenu;
-import com.artncore.managersetting.ui.fragments.AdminMenuFragment;
-import com.artncore.managersetting.ui.fragments.AdminPasswordResetFragment;
-import com.artncore.managersetting.ui.fragments.AdminQueryFragment;
-import com.artncore.managersetting.ui.fragments.AdminSalesSampleFragment;
-import com.artncore.managersetting.ui.fragments.AdminSetIPFragment;
-import com.artncore.managersetting.ui.fragments.AdminSettingFragment;
-import com.artncore.managersetting.ui.fragments.AdminSystemResetFragment;
-import com.artncore.managersetting.util.DialogUtil;
-import com.artncore.wallpadapi.WallPadAPI;
-import com.util.LogUtil;
-
-import kr.co.icontrols.v40ioctl.V40IF;
-import kr.co.icontrols.wallpadsupport.Version;
-import kr.co.icontrols.wallpadsupport.WpadScale;
-import kr.co.icontrols.wallpadsupport.WpadSound;
-
-/**
- * An activity representing a list of Items. This activity has different
- * presentations for handset and tablet-size devices. On handsets, the activity
- * presents a list of items, which when touched, lead to a
- * {link ItemDetailActivity} representing item details. On tablets, the
- * activity presents the list of items and item details side-by-side using two
- * vertical panes.
- * <p>
- * The activity makes heavy use of fragments. The list of items is a
- * {@link AdminMenuFragment} and the item details (if present) is a
- * {link ItemDetailFragment}.
- * <p>
- * This activity also implements the required {@link AdminMenuFragment.Callbacks}
- * interface to listen for item selections.
- */
-public class MainActivity extends FragmentActivity implements
-        AdminMenuFragment.Callbacks {
-    private static final String TAG = "MainActivity";
-
-    private final boolean DEBUG = true;
-
-    public static WallPadAPI wpapi = null;
-
-    /**
-     * Whether or not the activity is in two-pane mode, i.e. running on a tablet
-     * device.
-     */
-    private boolean mTwoPane;
-
-    private static Activity mActivity = null;
-    private static WallPadAPI mWallPadAPI;
-    private static WpadSound mWpadSound;
-    private static WallPadInterface mWallPadInterface;
-    private static MainDatabaseManager mMainDatabaseManager;
-    private AppFinishEventReceiver mAppFinishEventReceiver;
-
-    private static boolean mFinishTimerEnable = false;
-    private static CountDownTimer mFinishTimer = null;
-    private int mFinishTime = 0;
-
-    //[Model]
-    private int ModelType = Version.getModelType();
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        WpadScale.Initializing(this);
-
-        //Log.i(TAG, "Inbo ONcreate~~~");
-
-        AppVersionLogOut();   // 버전정보 로그출력
-
-        try
-        {
-            wpapi = new WallPadAPI(this);
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
-        }
-        catch (Exception ee)
-        {
-            //ee.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, ee);
-        }
-        mWallPadApiCheckHandler.sendEmptyMessage(0);
-
-        mActivity = this;
-
-        mWallPadAPI = new WallPadAPI(this);
-        mMainDatabaseManager = new MainDatabaseManager(this, null, null);
-        mWpadSound = new WpadSound(this);
-        mWallPadInterface = new WallPadInterface();
-        mAppFinishEventReceiver = new AppFinishEventReceiver();
-
-        if(Const.FINISH_TIME_ENABLE) setFinishTimerCreate(Const.FINISH_TIME_SEC);
-
-
-        setContentView(R.layout.activity_item_list);
-        if (findViewById(R.id.item_detail_container) != null) {
-            // The detail container view will be present only in the
-            // large-screen layouts (res/values-large and
-            // res/values-sw600dp). If this view is present, then the
-            // activity should be in two-pane mode.
-            mTwoPane = true;
-
-            // In two-pane mode, list items should be given the
-            // 'activated' state when touched.
-            ((AdminMenuFragment) getSupportFragmentManager().findFragmentById(
-                    R.id.item_list)).setActivateOnItemClick(true);
-        }
-
-        // TODO: If exposing deep links into your app, handle intents here.
-
-        loadFragment();
-    }
-
-    private final Handler mHandler = new Handler();
-
-
-    @Override
-    protected void onResume() {
-        if (DEBUG)  Log.d(TAG, "onResume() ");
-
-        super.onResume();
-
-        if(Const.FINISH_TIME_ENABLE) setFinishTimerCreate(Const.FINISH_TIME_SEC);
-
-        mWallPadAPI.Resume();
-
-        if(wpapi != null) wpapi.Resume();
-
-        //loadFragment();
-
-        registerBroadCastReceiver();
-    }
-
-
-    @Override
-    public void onNewIntent(Intent intent) {
-        if (DEBUG)  Log.d(TAG, "--onNewIntent ");
-
-        super.onNewIntent(intent);
-        setIntent(intent);
-    }
-
-
-    @Override
-    protected void onPause() {
-        if (DEBUG)  Log.d(TAG, "onPause() ");
-
-        super.onPause();
-
-        setFinishTimerDestroy();
-
-        mWallPadAPI.Pause();
-
-        if(wpapi != null) wpapi.Pause();
-
-        unregisterBroadCastReceiver();
-    }
-
-
-    @Override
-    protected void onDestroy() {
-        if (DEBUG)  Log.d(TAG, "onDestroy() ");
-        //Log.i(TAG, "Inbo OnDestroy~~~");
-
-        setFinishTimerDestroy();
-        super.onDestroy();
-
-        mWpadSound.Release();
-        closeDialog();
-    }
-
-
-    // load Fragment
-    public void loadFragment() {
-
-        AdminMenuFragment adminMenuFragment
-                = (AdminMenuFragment)getSupportFragmentManager().findFragmentById(R.id.item_list);
-
-        if (adminMenuFragment != null)
-            adminMenuFragment.requestMenu(1);
-
-/*
-        Bundle arguments = new Bundle();
-        arguments.putString(Const.ARG_ITEM_ID, AdminMenu.MENU_IDX_1);
-        AdminQueryFragment fragment = new AdminQueryFragment();
-        fragment.setArguments(arguments);
-        getSupportFragmentManager().beginTransaction()
-                .replace(R.id.item_detail_container, fragment).commit();
-*/
-    }
-
-
-    /**
-     * Callback method from {@link AdminMenuFragment.Callbacks} indicating that
-     * the item with the given ID was selected.
-     */
-    @Override
-    public void onItemSelected(String id) {
-        setFinishTimerReset();
-        if (mTwoPane) {
-            if (AdminMenu.MENU_IDX_0.equals(id)) {
-                Intent intent = new Intent(this, SetAddress.class);
-                startActivity(intent);
-            }
-            else if (AdminMenu.MENU_IDX_1.equals(id)) {
-                Bundle arguments = new Bundle();
-                arguments.putString(Const.ARG_ITEM_ID, id);
-                AdminQueryFragment fragment = new AdminQueryFragment();
-                fragment.setArguments(arguments);
-                getSupportFragmentManager().beginTransaction()
-                        .replace(R.id.item_detail_container, fragment).commit();
-            }
-            else if (AdminMenu.MENU_IDX_2.equals(id)) {
-                Bundle arguments = new Bundle();
-                arguments.putString(Const.ARG_ITEM_ID, id);
-                AdminCheckFragment fragment = new AdminCheckFragment();
-                fragment.setArguments(arguments);
-                getSupportFragmentManager().beginTransaction()
-                        .replace(R.id.item_detail_container, fragment).commit();
-            }
-            else if (AdminMenu.MENU_IDX_3.equals(id)) {
-                Bundle arguments = new Bundle();
-                arguments.putString(Const.ARG_ITEM_ID, id);
-                AdminSettingFragment fragment = new AdminSettingFragment();
-                fragment.setArguments(arguments);
-                getSupportFragmentManager().beginTransaction()
-                        .replace(R.id.item_detail_container, fragment).commit();
-            }
-            else if (AdminMenu.MENU_IDX_4.equals(id)) {
-                Bundle arguments = new Bundle();
-                arguments.putString(Const.ARG_ITEM_ID, id);
-                AdminSystemResetFragment fragment = new AdminSystemResetFragment();
-                fragment.setArguments(arguments);
-                getSupportFragmentManager().beginTransaction()
-                        .replace(R.id.item_detail_container, fragment).commit();
-            }
-            else if (AdminMenu.MENU_IDX_5.equals(id)) {
-                Bundle arguments = new Bundle();
-                arguments.putString(Const.ARG_ITEM_ID, id);
-                AdminPasswordResetFragment fragment = new AdminPasswordResetFragment();
-                fragment.setArguments(arguments);
-                getSupportFragmentManager().beginTransaction()
-                        .replace(R.id.item_detail_container, fragment).commit();
-            }
-            else if (AdminMenu.MENU_IDX_6.equals(id)) {
-                Bundle arguments = new Bundle();
-                arguments.putString(Const.ARG_ITEM_ID, id);
-                AdminSetIPFragment fragment = new AdminSetIPFragment();
-                fragment.setArguments(arguments);
-                getSupportFragmentManager().beginTransaction()
-                        .replace(R.id.item_detail_container, fragment).commit();
-            }
-            else if (AdminMenu.MENU_IDX_7.equals(id)) {
-                openManagerPWDialog(id);
-            }
-            else if (AdminMenu.MENU_IDX_8.equals(id)) {
-                Bundle arguments = new Bundle();
-                arguments.putString(Const.ARG_ITEM_ID, id);
-                AdminDeveloperModeFragment fragment = new AdminDeveloperModeFragment();
-                fragment.setArguments(arguments);
-                getSupportFragmentManager().beginTransaction()
-                        .replace(R.id.item_detail_container, fragment).commit();
-            }
-            else if (AdminMenu.MENU_IDX_9.equals(id)) {
-                Bundle arguments = new Bundle();
-                arguments.putString(Const.ARG_ITEM_ID, id);
-                AdminInRoomSensorSetFragment fragment = new AdminInRoomSensorSetFragment();
-                fragment.setArguments(arguments);
-                getSupportFragmentManager().beginTransaction()
-                        .replace(R.id.item_detail_container, fragment).commit();
-            }
-        }
-        else {
-            // In single-pane mode, simply start the detail activity
-            // for the selected item ID.
-            //          Intent detailIntent = new Intent(this, ItemDetailActivity.class);
-            //          detailIntent.putExtra(ItemDetailFragment.ARG_ITEM_ID, id);
-            //          startActivity(detailIntent);
-        }
-    }
-
-
-
-    // return WpadSound
-    public static WpadSound getWpadSound() {
-        return mWpadSound;
-    }
-
-
-    // return WallPadAPI
-    public static WallPadAPI getWallPadAPI() {
-        return mWallPadAPI;
-    }
-
-
-    // return WallPadInterface
-    public static WallPadInterface getWallPadInterface() {
-        return mWallPadInterface;
-    }
-
-
-    // return MainDatabaseManager
-    public static MainDatabaseManager getMainDatabaseManager() {
-        if ((mMainDatabaseManager == null) && (mActivity != null)) {
-            mMainDatabaseManager = new MainDatabaseManager(mActivity, null, null);
-        }
-
-        return mMainDatabaseManager;
-    }
-
-    /**
-     * (평생코드) WallPadAPI 초기생성시 Connect 에 시간이 걸리며, <br>
-     * WallPadAPI 초기화후 바로 Get_GasValveController 등을 사용하여  API 를 가져올수 없기에, <br>
-     * 본 딜레이 코드를 임시로 적용한다.
-     */
-    @SuppressLint("HandlerLeak")
-    protected Handler mWallPadApiCheckHandler = new Handler()
-    {
-        @SuppressLint("HandlerLeak")
-        @Override
-        public void handleMessage(Message msg)
-        {
-            if (msg.what == 0)
-            {
-                if (wpapi != null)
-                {
-                    //Log.d(TAG, "Handler go");
-                    if (wpapi.Check_Connect())
-                        mWallPadApiCheckHandler.sendEmptyMessageDelayed(1, 10);
-                    else mWallPadApiCheckHandler.sendEmptyMessageDelayed(0, 10);
-                }
-            } else if (msg.what == 1)
-            {
-                Log.d(TAG, "Handler finish");
-                /*boolean result = setChangeScreen(mTempCurrentScreenId, false);
-                if (result == false)
-                {
-                    setChangeScreen(API_Menu.SubMenuConfig.Configuration, false);
-                }*/
-            }
-        }
-    };
-
-
-
-/*
-    @Override
-    public boolean onKeyDown(int keyCode, KeyEvent event) {
-        if (DEBUG) Log.d(TAG, "onKeyDown " + keyCode);
-
-        switch (keyCode) {
-            case Const.EVT_RING:
-            case Const.BTN_EMR:
-            case Const.BTN_CALL:
-            case Const.BTN_OPEN:
-
-            case Const.BTN_DOOR:
-            case Const.EVT_EMR:
-            case Const.EVT_MAG0:
-            case Const.EVT_MAG1:
-            case Const.EVT_EXIT:
-            case Const.EVT_MOTIN:
-            case Const.EVT_MOTOUT:
-                //KeyEventInterface keyEventInterface
-                //    = (KeyEventInterface)getSupportFragmentManager().findFragmentById(R.id.main_container);
-
-                //if (keyEventInterface != null)
-                //    keyEventInterface.onKeyDownEvent(keyCode);
-                return true;
-
-            default:
-               break;
-        }
-
-        return super.onKeyDown(keyCode, event);
-    }
-*/
-
-
-
-    // 관리자 비밀번호 입력 Dialog를 open
-    public void openManagerPWDialog(final String menuId) {
-
-        final AdminMenuFragment adminMenuFragment
-                = (AdminMenuFragment)getSupportFragmentManager().findFragmentById(R.id.item_list);
-
-        String title = getString(R.string.admin_setip_confirm_password);
-        String message = getString(R.string.admin_setip_insert_password_message);
-
-        DialogInterface.OnClickListener positiveListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        WallpadStatusData wallpadStatusData = new WallpadStatusData(mActivity);
-
-                        if (DEBUG)  Log.d(TAG, "wallpadStatusData.GetManagerPW() : " + wallpadStatusData.GetManagerPW());
-
-                        mDialog.hideSoftKeypad();
-
-                        //if (!wallpadStatusData.GetManagerPW().equals(mDialog.getEditText())) {
-                        if (!wallpadStatusData.GetManagerPW().equals("55554444")) {
-                            dialog.dismiss();
-
-                            failedPWDialog();
-
-                            if (adminMenuFragment != null)
-                                adminMenuFragment.goPreMenu();
-                        }
-                        else {
-                            dialog.dismiss();
-
-                            Bundle arguments = new Bundle();
-                            arguments.putString(Const.ARG_ITEM_ID, menuId);
-                            AdminSalesSampleFragment fragment = new AdminSalesSampleFragment();
-                            fragment.setArguments(arguments);
-                            getSupportFragmentManager().beginTransaction()
-                                    .replace(R.id.item_detail_container, fragment).commit();
-                        }
-
-                        wallpadStatusData.closeDB();
-                    }
-                };
-
-        DialogInterface.OnClickListener negativeListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        dialog.dismiss();
-
-                        if (adminMenuFragment != null)
-                            adminMenuFragment.goPreMenu();
-                    }
-                };
-
-        mDialog = new DialogUtil(this);
-        mDialog.openPasswordDialog(title, message, positiveListener, negativeListener, null);
-    }
-
-
-    // 관리자 비밀번호 입력 오류 Dialog를 open
-    public void failedPWDialog() {
-        String title = getString(R.string.admin_setip_confirm_password);
-        String message = getString(R.string.admin_setip_failed_password);
-        mDialog = new DialogUtil(this);
-
-        DialogInterface.OnClickListener positiveListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        //finish();
-                    }
-                };
-
-        mDialog.openCommonDialog(title, message, positiveListener, null);
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-    public String getAppVersion()
-    {
-        String version;
-        try {
-            PackageInfo i =  this.getPackageManager().getPackageInfo(this.getPackageName(), 0);
-            version = i.versionName;
-        } catch(NameNotFoundException e) { return null; }
-
-        return version;
-    }
-
-    public void AppVersionLogOut()
-    {
-        Log.i("Version", "<><><><>  Applications   Version = [" + getAppVersion() + "] " + "<><><><>");
-//        Version.LogOut();  // WallPadSupport 버전정보 출력 (사용않할시 주석처리)
-    }
-
-
-
-
-
-
-
-    // exit Activity
-    public void exitActivity() {
-        if(DEBUG)   Log.i(TAG, "exitActivity() ");
-
-        if (MainApplication.getApplication().isSetReboot()) {
-            resetNotiDialog();
-        }
-        else {
-            finish();
-        }
-    }
-
-
-    // unregister BR
-    private void unregisterBroadCastReceiver() {
-        if (mAppFinishEventReceiver != null) {
-            unregisterReceiver(mAppFinishEventReceiver);
-        }
-    }
-
-    // register BR
-    private void registerBroadCastReceiver() {
-        // Create a filter with the broadcast intents we are interested in.
-        IntentFilter filter = new IntentFilter();
-        filter.addAction(Const.BR_APP_FINISH);
-        registerReceiver(mAppFinishEventReceiver, filter, null, null);
-    }
-
-
-
-
-
-
-    public class AppFinishEventReceiver extends BroadcastReceiver {
-        private final String TAG = "AppFinishEventReceiver";
-
-        private final boolean DEBUG = true;
-
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            // TODO Auto-generated method stub
-            if (DEBUG)  Log.d(TAG, "--onReceive");
-
-            String action = intent.getAction();
-
-            if (Const.BR_APP_FINISH.equals(action)) {
-                exitActivity();
-            }
-        }
-    }
-
-    // device rebooting 요청
-    private void doSystemReset() {
-
-        if ((ModelType == Version.MODEL_TYPE.IHN_1020B_C) || (ModelType == Version.MODEL_TYPE.IHN_1030_D)) {
-            // pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
-            //pm.userActivity(8, true);
-            getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); // 화면 켜짐 유지
-        }
-        else if (Version.getPlatformType() == Version.PLATFORM_TYPE.A40i) {
-            // IP 설정을 한 후, 팝업창의 "확인" or "Ok"를 누른 경우 재부팅 설정
-            V40IF mV40IF = new V40IF();
-            Log.d("D101 MANAGERSETTING", "Setting Change -> Do Reboot !!!");
-            mV40IF.setV40Reboot(5);
-        }
-        else {
-            //finish();
-            ComponentName cnA = new ComponentName("com.artncore.updater", "com.artncore.updater.MainActivity");
-            Intent intent = new Intent(Intent.ACTION_MAIN);
-            intent.addCategory(Intent.CATEGORY_LAUNCHER);
-            intent.putExtra("updatesystem", "no");
-            intent.putExtra("updateapp", " no ");
-            intent.putExtra("rebootcmd", "reboot");
-            intent.setComponent(cnA);
-
-            startActivity(intent);
-        }
-    }
-
-
-
-
-    private DialogUtil mDialog;
-    // device rebooting dialog를 open
-    private void resetNotiDialog() {
-        mDialog = new DialogUtil(mActivity);
-        String title = getString(R.string.system_reboot);
-        String message = getString(R.string.system_reboot_info_message);
-
-        DialogInterface.OnClickListener positiveListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        dialog.dismiss();
-
-                        doSystemReset();
-                    }
-                };
-
-        mDialog.openCommonDialog(title, message, positiveListener, null);
-    }
-
-
-    // close dialog
-    private void closeDialog() {
-        if (mDialog != null) {
-            mDialog.closeDialog();
-            mDialog = null;
-        }
-    }
-
-
-
-
-    /**
-     * 자동종료 타이머 생성 (생성자)<br>
-     * 엑티비티가 자동종료를 사용한다면 본메소드를 사용한다.<br>
-     *
-     * @param nFinishTime - 자동종료 시간 (단위 : 초)
-     * @reutrn true : 성공, false : 실패
-     * <br><br>
-     * @Example
-     * <pre class="prettyprint">
-     * super.setFinishTimerCreate(30);      // 자동종료 타이머 30초 설정
-     * </pre>
-     */
-    protected boolean setFinishTimerCreate(int nFinishTime)
-    {
-        Log.d(TAG, "setFinishTimerStart - nFinishTime : " + nFinishTime + " Sec");
-
-        mFinishTime = nFinishTime;
-        if(nFinishTime <= 0)
-        {
-            Log.e(TAG, "setFinishTimerCreate - param : nFinishTime - Out of range !!! (" + nFinishTime + ")");
-            mFinishTimerEnable = false;
-            return false;
-        }
-
-        if(mFinishTimer != null) mFinishTimer.cancel();
-        mFinishTimer = new CountDownTimer( (long)(mFinishTime * 1000), 1000) {
-            @Override
-            public void onFinish() {
-                Log.d(TAG, "FinishTimer - onFinish !!!");
-
-                finish();
-            }
-
-            @Override
-            public void onTick(long arg0) {
-                long RemainingTime = (long)(arg0/1000);
-                if(RemainingTime <= 10)
-                {
-                    Log.d(TAG, "FinishTimer - onTick (" + RemainingTime + " sec)");
-                }
-            }
-        };
-
-        mFinishTimer.cancel();
-        mFinishTimer.start();
-
-        mFinishTimerEnable = true;
-        return true;
-    }
-
-    /**
-     * 자동종료 타이머 리셋<br>
-     * 본 메소드는 {@link #setFinishTimerCreate} 를 통하여 생성된<br>
-     * 자동종료 타이머를 설정된 시간으로 리셋 시킨다.<br>
-     * ※ 특별한 경우가 아니라면 본 클래스에서 자동으로 조정하므로 사용할 필요가 없다.<br>
-     *
-     * @reutrn true : 성공, false : 실패
-     * <br><br>
-     * @Example
-     * <pre class="prettyprint">
-     * super.setFinishTimerReset();      // 자동종료 타이머 리셋
-     * </pre>
-     */
-    public static boolean setFinishTimerReset()
-    {
-        if(mFinishTimerEnable)
-        {
-            if(mFinishTimer != null)
-            {
-                mFinishTimer.cancel();
-                mFinishTimer.start();
-            }
-            //Log.d(TAG, "FinishTimer - setFinishTimerReset !!!");
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * 자동종료 타이머 삭제<br>
-     * 본 메소드는 {@link #setFinishTimerCreate} 를 통하여 생성된<br>
-     * 자동종료 타이머를 삭제시킨다.<br>
-     * ※ 삭제된 후에는 다시 사용할 경우에는 {@link #setFinishTimerCreate} 를 사용하여 재 생성한다.<br>
-     * @reutrn true : 성공, false : 실패
-     * <br><br>
-     * @Example
-     * <pre class="prettyprint">
-     * super.setFinishTimerDestroy();      // 자동종료 타이머 삭제
-     * </pre>
-     */
-    protected boolean setFinishTimerDestroy()
-    {
-        mFinishTimerEnable = false;
-        if(mFinishTimer != null)
-        {
-            //Log.d(TAG, "setFinishTimerDestroy");
-            mFinishTimer.cancel();
-            mFinishTimer = null;
-            return true;
-        }
-        return false;
-    }
-
-
-    /**
-     *
-     */
-    @Override
-    public boolean onTouchEvent(MotionEvent event) {
-        if(event.getAction() == MotionEvent.ACTION_UP)
-        {
-            //Log.d(TAG, "MotionEvent.ACTION_UP");
-            setFinishTimerReset();
-        }
-        return super.onTouchEvent(event);
-    }
-
-    /**
-     * H/W Key Event
-     */
-    @Override
-    public boolean onKeyDown(int keyCode, KeyEvent event)
-    {
-        Log.i(TAG, "[onKeyDown] keyCode : " + keyCode + ", Action : " + event.getAction());
-        return super.onKeyDown(keyCode, event);
-    }
-
-    /**
-     * 현관호출 or 전화호출시 사용되는 keycode - Broadcast 을 송신한다.
-     *
-     * @param code - (int) 송신할 keycode
-     * @return (int) - >=0 : 성공, <0 : 실패
-     */
-    private int setSendEventBR(int code)
-    {
-        try
-        {
-            KeyEvent event = new KeyEvent(KeyEvent.ACTION_UP, code);
-            Intent intent = new Intent("EVENT_DEVICE_CONTROL", null);
-            intent.putExtra(Intent.EXTRA_KEY_EVENT, event);
-            intent.putExtra("keycode",code);
-            getApplicationContext().sendBroadcast(intent);
-        }
-        catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-        }
-        catch(Exception e)
-        {
-            Log.e(TAG, "[setSendEventBR] - [Exception Error] code:" + code);
-            LogUtil.errorLogInfo("", TAG, e);
-            //e.printStackTrace();
-            return -100;
-        }
-        return 0;
-    }
-
-}
+package com.artncore.managersetting.ui.activities;
+
+import android.annotation.SuppressLint;
+import android.app.Activity;
+import android.content.BroadcastReceiver;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager.NameNotFoundException;
+import android.os.Bundle;
+import android.os.CountDownTimer;
+import android.os.Handler;
+import android.os.Message;
+//import android.support.v4.app.FragmentActivity;
+import androidx.fragment.app.FragmentActivity;
+import android.util.Log;
+import android.view.KeyEvent;
+import android.view.MotionEvent;
+import android.view.WindowManager;
+
+import androidx.fragment.app.FragmentActivity;
+
+import com.artncore.WallPadDataMgr.WallpadStatusData;
+import com.artncore.deviceinterface.WallPadInterface;
+import com.artncore.managersetting.MainApplication;
+import com.artncore.managersetting.R;
+import com.artncore.managersetting.dao.MainDatabaseManager;
+import com.artncore.managersetting.domain.Const;
+import com.artncore.managersetting.ui.fragments.AdminCheckFragment;
+import com.artncore.managersetting.ui.fragments.AdminDeveloperModeFragment;
+import com.artncore.managersetting.ui.fragments.AdminInRoomSensorSetFragment;
+import com.artncore.managersetting.ui.fragments.AdminMenu;
+import com.artncore.managersetting.ui.fragments.AdminMenuFragment;
+import com.artncore.managersetting.ui.fragments.AdminPasswordResetFragment;
+import com.artncore.managersetting.ui.fragments.AdminQueryFragment;
+import com.artncore.managersetting.ui.fragments.AdminSalesSampleFragment;
+import com.artncore.managersetting.ui.fragments.AdminSetIPFragment;
+import com.artncore.managersetting.ui.fragments.AdminSettingFragment;
+import com.artncore.managersetting.ui.fragments.AdminSystemResetFragment;
+import com.artncore.managersetting.util.DialogUtil;
+import com.artncore.wallpadapi.WallPadAPI;
+
+import kr.co.icontrols.v40ioctl.V40IF;
+import kr.co.icontrols.wallpadsupport.Version;
+import kr.co.icontrols.wallpadsupport.WpadScale;
+import kr.co.icontrols.wallpadsupport.WpadSound;
+
+/**
+ * An activity representing a list of Items. This activity has different
+ * presentations for handset and tablet-size devices. On handsets, the activity
+ * presents a list of items, which when touched, lead to a
+ * {link ItemDetailActivity} representing item details. On tablets, the
+ * activity presents the list of items and item details side-by-side using two
+ * vertical panes.
+ * <p>
+ * The activity makes heavy use of fragments. The list of items is a
+ * {@link AdminMenuFragment} and the item details (if present) is a
+ * {link ItemDetailFragment}.
+ * <p>
+ * This activity also implements the required {@link AdminMenuFragment.Callbacks}
+ * interface to listen for item selections.
+ */
+public class MainActivity extends FragmentActivity implements
+        AdminMenuFragment.Callbacks {
+    private static final String TAG = "MainActivity";
+
+    private final boolean DEBUG = true;
+
+    public static WallPadAPI wpapi = null;
+
+    /**
+     * Whether or not the activity is in two-pane mode, i.e. running on a tablet
+     * device.
+     */
+    private boolean mTwoPane;
+
+    private static Activity mActivity = null;
+    private static WallPadAPI mWallPadAPI;
+    private static WpadSound mWpadSound;
+    private static WallPadInterface mWallPadInterface;
+    private static MainDatabaseManager mMainDatabaseManager;
+    private AppFinishEventReceiver mAppFinishEventReceiver;
+
+    private static boolean mFinishTimerEnable = false;
+    private static CountDownTimer mFinishTimer = null;
+    private int mFinishTime = 0;
+
+    //[Model]
+    private int ModelType = Version.getModelType();
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        WpadScale.Initializing(this);
+
+        //Log.i(TAG, "Inbo ONcreate~~~");
+
+        AppVersionLogOut();   // 버전정보 로그출력
+
+        try
+        {
+            wpapi = new WallPadAPI(this);
+        }
+        catch (Exception ee)
+        {
+            ee.printStackTrace();
+        }
+        mWallPadApiCheckHandler.sendEmptyMessage(0);
+
+        mActivity = this;
+
+        mWallPadAPI = new WallPadAPI(this);
+        mMainDatabaseManager = new MainDatabaseManager(this, null, null);
+        mWpadSound = new WpadSound(this);
+        mWallPadInterface = new WallPadInterface();
+        mAppFinishEventReceiver = new AppFinishEventReceiver();
+
+        if(Const.FINISH_TIME_ENABLE) setFinishTimerCreate(Const.FINISH_TIME_SEC);
+
+
+        setContentView(R.layout.activity_item_list);
+        if (findViewById(R.id.item_detail_container) != null) {
+            // The detail container view will be present only in the
+            // large-screen layouts (res/values-large and
+            // res/values-sw600dp). If this view is present, then the
+            // activity should be in two-pane mode.
+            mTwoPane = true;
+
+            // In two-pane mode, list items should be given the
+            // 'activated' state when touched.
+            ((AdminMenuFragment) getSupportFragmentManager().findFragmentById(
+                    R.id.item_list)).setActivateOnItemClick(true);
+        }
+
+        // TODO: If exposing deep links into your app, handle intents here.
+
+        loadFragment();
+    }
+
+    private final Handler mHandler = new Handler();
+
+
+    @Override
+    protected void onResume() {
+        if (DEBUG)  Log.d(TAG, "onResume() ");
+
+        super.onResume();
+
+        if(Const.FINISH_TIME_ENABLE) setFinishTimerCreate(Const.FINISH_TIME_SEC);
+
+        mWallPadAPI.Resume();
+
+        if(wpapi != null) wpapi.Resume();
+
+        //loadFragment();
+
+        registerBroadCastReceiver();
+    }
+
+
+    @Override
+    public void onNewIntent(Intent intent) {
+        if (DEBUG)  Log.d(TAG, "--onNewIntent ");
+
+        super.onNewIntent(intent);
+        setIntent(intent);
+    }
+
+
+    @Override
+    protected void onPause() {
+        if (DEBUG)  Log.d(TAG, "onPause() ");
+
+        super.onPause();
+
+        setFinishTimerDestroy();
+
+        mWallPadAPI.Pause();
+
+        if(wpapi != null) wpapi.Pause();
+
+        unregisterBroadCastReceiver();
+    }
+
+
+    @Override
+    protected void onDestroy() {
+        if (DEBUG)  Log.d(TAG, "onDestroy() ");
+        //Log.i(TAG, "Inbo OnDestroy~~~");
+
+        setFinishTimerDestroy();
+        super.onDestroy();
+
+        mWpadSound.Release();
+        closeDialog();
+    }
+
+
+    // load Fragment
+    public void loadFragment() {
+
+        AdminMenuFragment adminMenuFragment
+                = (AdminMenuFragment)getSupportFragmentManager().findFragmentById(R.id.item_list);
+
+        if (adminMenuFragment != null)
+            adminMenuFragment.requestMenu(1);
+
+/*
+        Bundle arguments = new Bundle();
+        arguments.putString(Const.ARG_ITEM_ID, AdminMenu.MENU_IDX_1);
+        AdminQueryFragment fragment = new AdminQueryFragment();
+        fragment.setArguments(arguments);
+        getSupportFragmentManager().beginTransaction()
+                .replace(R.id.item_detail_container, fragment).commit();
+*/
+    }
+
+
+    /**
+     * Callback method from {@link AdminMenuFragment.Callbacks} indicating that
+     * the item with the given ID was selected.
+     */
+    @Override
+    public void onItemSelected(String id) {
+        setFinishTimerReset();
+        if (mTwoPane) {
+            if (AdminMenu.MENU_IDX_0.equals(id)) {
+                Intent intent = new Intent(this, SetAddress.class);
+                startActivity(intent);
+            }
+            else if (AdminMenu.MENU_IDX_1.equals(id)) {
+                Bundle arguments = new Bundle();
+                arguments.putString(Const.ARG_ITEM_ID, id);
+                AdminQueryFragment fragment = new AdminQueryFragment();
+                fragment.setArguments(arguments);
+                getSupportFragmentManager().beginTransaction()
+                        .replace(R.id.item_detail_container, fragment).commit();
+            }
+            else if (AdminMenu.MENU_IDX_2.equals(id)) {
+                Bundle arguments = new Bundle();
+                arguments.putString(Const.ARG_ITEM_ID, id);
+                AdminCheckFragment fragment = new AdminCheckFragment();
+                fragment.setArguments(arguments);
+                getSupportFragmentManager().beginTransaction()
+                        .replace(R.id.item_detail_container, fragment).commit();
+            }
+            else if (AdminMenu.MENU_IDX_3.equals(id)) {
+                Bundle arguments = new Bundle();
+                arguments.putString(Const.ARG_ITEM_ID, id);
+                AdminSettingFragment fragment = new AdminSettingFragment();
+                fragment.setArguments(arguments);
+                getSupportFragmentManager().beginTransaction()
+                        .replace(R.id.item_detail_container, fragment).commit();
+            }
+            else if (AdminMenu.MENU_IDX_4.equals(id)) {
+                Bundle arguments = new Bundle();
+                arguments.putString(Const.ARG_ITEM_ID, id);
+                AdminSystemResetFragment fragment = new AdminSystemResetFragment();
+                fragment.setArguments(arguments);
+                getSupportFragmentManager().beginTransaction()
+                        .replace(R.id.item_detail_container, fragment).commit();
+            }
+            else if (AdminMenu.MENU_IDX_5.equals(id)) {
+                Bundle arguments = new Bundle();
+                arguments.putString(Const.ARG_ITEM_ID, id);
+                AdminPasswordResetFragment fragment = new AdminPasswordResetFragment();
+                fragment.setArguments(arguments);
+                getSupportFragmentManager().beginTransaction()
+                        .replace(R.id.item_detail_container, fragment).commit();
+            }
+            else if (AdminMenu.MENU_IDX_6.equals(id)) {
+                Bundle arguments = new Bundle();
+                arguments.putString(Const.ARG_ITEM_ID, id);
+                AdminSetIPFragment fragment = new AdminSetIPFragment();
+                fragment.setArguments(arguments);
+                getSupportFragmentManager().beginTransaction()
+                        .replace(R.id.item_detail_container, fragment).commit();
+            }
+            else if (AdminMenu.MENU_IDX_7.equals(id)) {
+                openManagerPWDialog(id);
+            }
+            else if (AdminMenu.MENU_IDX_8.equals(id)) {
+                Bundle arguments = new Bundle();
+                arguments.putString(Const.ARG_ITEM_ID, id);
+                AdminDeveloperModeFragment fragment = new AdminDeveloperModeFragment();
+                fragment.setArguments(arguments);
+                getSupportFragmentManager().beginTransaction()
+                        .replace(R.id.item_detail_container, fragment).commit();
+            }
+            else if (AdminMenu.MENU_IDX_9.equals(id)) {
+                Bundle arguments = new Bundle();
+                arguments.putString(Const.ARG_ITEM_ID, id);
+                AdminInRoomSensorSetFragment fragment = new AdminInRoomSensorSetFragment();
+                fragment.setArguments(arguments);
+                getSupportFragmentManager().beginTransaction()
+                        .replace(R.id.item_detail_container, fragment).commit();
+            }
+        }
+        else {
+            // In single-pane mode, simply start the detail activity
+            // for the selected item ID.
+            //          Intent detailIntent = new Intent(this, ItemDetailActivity.class);
+            //          detailIntent.putExtra(ItemDetailFragment.ARG_ITEM_ID, id);
+            //          startActivity(detailIntent);
+        }
+    }
+
+
+
+    // return WpadSound
+    public static WpadSound getWpadSound() {
+        return mWpadSound;
+    }
+
+
+    // return WallPadAPI
+    public static WallPadAPI getWallPadAPI() {
+        return mWallPadAPI;
+    }
+
+
+    // return WallPadInterface
+    public static WallPadInterface getWallPadInterface() {
+        return mWallPadInterface;
+    }
+
+
+    // return MainDatabaseManager
+    public static MainDatabaseManager getMainDatabaseManager() {
+        if ((mMainDatabaseManager == null) && (mActivity != null)) {
+            mMainDatabaseManager = new MainDatabaseManager(mActivity, null, null);
+        }
+
+        return mMainDatabaseManager;
+    }
+
+    /**
+     * (평생코드) WallPadAPI 초기생성시 Connect 에 시간이 걸리며, <br>
+     * WallPadAPI 초기화후 바로 Get_GasValveController 등을 사용하여  API 를 가져올수 없기에, <br>
+     * 본 딜레이 코드를 임시로 적용한다.
+     */
+    @SuppressLint("HandlerLeak")
+    protected Handler mWallPadApiCheckHandler = new Handler()
+    {
+        @SuppressLint("HandlerLeak")
+        @Override
+        public void handleMessage(Message msg)
+        {
+            if (msg.what == 0)
+            {
+                if (wpapi != null)
+                {
+                    //Log.d(TAG, "Handler go");
+                    if (wpapi.Check_Connect())
+                        mWallPadApiCheckHandler.sendEmptyMessageDelayed(1, 10);
+                    else mWallPadApiCheckHandler.sendEmptyMessageDelayed(0, 10);
+                }
+            } else if (msg.what == 1)
+            {
+                Log.d(TAG, "Handler finish");
+                /*boolean result = setChangeScreen(mTempCurrentScreenId, false);
+                if (result == false)
+                {
+                    setChangeScreen(API_Menu.SubMenuConfig.Configuration, false);
+                }*/
+            }
+        }
+    };
+
+
+
+/*
+    @Override
+    public boolean onKeyDown(int keyCode, KeyEvent event) {
+        if (DEBUG) Log.d(TAG, "onKeyDown " + keyCode);
+
+        switch (keyCode) {
+            case Const.EVT_RING:
+            case Const.BTN_EMR:
+            case Const.BTN_CALL:
+            case Const.BTN_OPEN:
+
+            case Const.BTN_DOOR:
+            case Const.EVT_EMR:
+            case Const.EVT_MAG0:
+            case Const.EVT_MAG1:
+            case Const.EVT_EXIT:
+            case Const.EVT_MOTIN:
+            case Const.EVT_MOTOUT:
+                //KeyEventInterface keyEventInterface
+                //    = (KeyEventInterface)getSupportFragmentManager().findFragmentById(R.id.main_container);
+
+                //if (keyEventInterface != null)
+                //    keyEventInterface.onKeyDownEvent(keyCode);
+                return true;
+
+            default:
+               break;
+        }
+
+        return super.onKeyDown(keyCode, event);
+    }
+*/
+
+
+
+    // 관리자 비밀번호 입력 Dialog를 open
+    public void openManagerPWDialog(final String menuId) {
+
+        final AdminMenuFragment adminMenuFragment
+                = (AdminMenuFragment)getSupportFragmentManager().findFragmentById(R.id.item_list);
+
+        String title = getString(R.string.admin_setip_confirm_password);
+        String message = getString(R.string.admin_setip_insert_password_message);
+
+        DialogInterface.OnClickListener positiveListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        WallpadStatusData wallpadStatusData = new WallpadStatusData(mActivity);
+
+                        if (DEBUG)  Log.d(TAG, "wallpadStatusData.GetManagerPW() : " + wallpadStatusData.GetManagerPW());
+
+                        mDialog.hideSoftKeypad();
+
+                        //if (!wallpadStatusData.GetManagerPW().equals(mDialog.getEditText())) {
+                        if (!wallpadStatusData.GetManagerPW().equals("55554444")) {
+                            dialog.dismiss();
+
+                            failedPWDialog();
+
+                            if (adminMenuFragment != null)
+                                adminMenuFragment.goPreMenu();
+                        }
+                        else {
+                            dialog.dismiss();
+
+                            Bundle arguments = new Bundle();
+                            arguments.putString(Const.ARG_ITEM_ID, menuId);
+                            AdminSalesSampleFragment fragment = new AdminSalesSampleFragment();
+                            fragment.setArguments(arguments);
+                            getSupportFragmentManager().beginTransaction()
+                                    .replace(R.id.item_detail_container, fragment).commit();
+                        }
+
+                        wallpadStatusData.closeDB();
+                    }
+                };
+
+        DialogInterface.OnClickListener negativeListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        dialog.dismiss();
+
+                        if (adminMenuFragment != null)
+                            adminMenuFragment.goPreMenu();
+                    }
+                };
+
+        mDialog = new DialogUtil(this);
+        mDialog.openPasswordDialog(title, message, positiveListener, negativeListener, null);
+    }
+
+
+    // 관리자 비밀번호 입력 오류 Dialog를 open
+    public void failedPWDialog() {
+        String title = getString(R.string.admin_setip_confirm_password);
+        String message = getString(R.string.admin_setip_failed_password);
+        mDialog = new DialogUtil(this);
+
+        DialogInterface.OnClickListener positiveListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        //finish();
+                    }
+                };
+
+        mDialog.openCommonDialog(title, message, positiveListener, null);
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+    public String getAppVersion()
+    {
+        String version;
+        try {
+            PackageInfo i =  this.getPackageManager().getPackageInfo(this.getPackageName(), 0);
+            version = i.versionName;
+        } catch(NameNotFoundException e) { return null; }
+
+        return version;
+    }
+
+    public void AppVersionLogOut()
+    {
+        Log.i("Version", "<><><><>  Applications   Version = [" + getAppVersion() + "] " + "<><><><>");
+//        Version.LogOut();  // WallPadSupport 버전정보 출력 (사용않할시 주석처리)
+    }
+
+
+
+
+
+
+
+    // exit Activity
+    public void exitActivity() {
+        if(DEBUG)   Log.i(TAG, "exitActivity() ");
+
+        if (MainApplication.getApplication().isSetReboot()) {
+            resetNotiDialog();
+        }
+        else {
+            finish();
+        }
+    }
+
+
+    // unregister BR
+    private void unregisterBroadCastReceiver() {
+        if (mAppFinishEventReceiver != null) {
+            unregisterReceiver(mAppFinishEventReceiver);
+        }
+    }
+
+    // register BR
+    private void registerBroadCastReceiver() {
+        // Create a filter with the broadcast intents we are interested in.
+        IntentFilter filter = new IntentFilter();
+        filter.addAction(Const.BR_APP_FINISH);
+        registerReceiver(mAppFinishEventReceiver, filter, null, null);
+    }
+
+
+
+
+
+
+    public class AppFinishEventReceiver extends BroadcastReceiver {
+        private final String TAG = "AppFinishEventReceiver";
+
+        private final boolean DEBUG = true;
+
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            // TODO Auto-generated method stub
+            if (DEBUG)  Log.d(TAG, "--onReceive");
+
+            String action = intent.getAction();
+
+            if (Const.BR_APP_FINISH.equals(action)) {
+                exitActivity();
+            }
+        }
+    }
+
+    // device rebooting 요청
+    private void doSystemReset() {
+
+        if ((ModelType == Version.MODEL_TYPE.IHN_1020B_C) || (ModelType == Version.MODEL_TYPE.IHN_1030_D)) {
+            // pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
+            //pm.userActivity(8, true);
+            getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); // 화면 켜짐 유지
+        }
+        else if (Version.getPlatformType() == Version.PLATFORM_TYPE.A40i) {
+            // IP 설정을 한 후, 팝업창의 "확인" or "Ok"를 누른 경우 재부팅 설정
+            V40IF mV40IF = new V40IF();
+            Log.d("D101 MANAGERSETTING", "Setting Change -> Do Reboot !!!");
+            mV40IF.setV40Reboot(5);
+        }
+        else {
+            //finish();
+            ComponentName cnA = new ComponentName("com.artncore.updater", "com.artncore.updater.MainActivity");
+            Intent intent = new Intent(Intent.ACTION_MAIN);
+            intent.addCategory(Intent.CATEGORY_LAUNCHER);
+            intent.putExtra("updatesystem", "no");
+            intent.putExtra("updateapp", " no ");
+            intent.putExtra("rebootcmd", "reboot");
+            intent.setComponent(cnA);
+
+            startActivity(intent);
+        }
+    }
+
+
+
+
+    private DialogUtil mDialog;
+    // device rebooting dialog를 open
+    private void resetNotiDialog() {
+        mDialog = new DialogUtil(mActivity);
+        String title = getString(R.string.system_reboot);
+        String message = getString(R.string.system_reboot_info_message);
+
+        DialogInterface.OnClickListener positiveListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        dialog.dismiss();
+
+                        doSystemReset();
+                    }
+                };
+
+        mDialog.openCommonDialog(title, message, positiveListener, null);
+    }
+
+
+    // close dialog
+    private void closeDialog() {
+        if (mDialog != null) {
+            mDialog.closeDialog();
+            mDialog = null;
+        }
+    }
+
+
+
+
+    /**
+     * 자동종료 타이머 생성 (생성자)<br>
+     * 엑티비티가 자동종료를 사용한다면 본메소드를 사용한다.<br>
+     *
+     * @param nFinishTime - 자동종료 시간 (단위 : 초)
+     * @reutrn true : 성공, false : 실패
+     * <br><br>
+     * @Example
+     * <pre class="prettyprint">
+     * super.setFinishTimerCreate(30);      // 자동종료 타이머 30초 설정
+     * </pre>
+     */
+    protected boolean setFinishTimerCreate(int nFinishTime)
+    {
+        Log.d(TAG, "setFinishTimerStart - nFinishTime : " + nFinishTime + " Sec");
+
+        mFinishTime = nFinishTime;
+        if(nFinishTime <= 0)
+        {
+            Log.e(TAG, "setFinishTimerCreate - param : nFinishTime - Out of range !!! (" + nFinishTime + ")");
+            mFinishTimerEnable = false;
+            return false;
+        }
+
+        if(mFinishTimer != null) mFinishTimer.cancel();
+        mFinishTimer = new CountDownTimer( (long)(mFinishTime * 1000), 1000) {
+            @Override
+            public void onFinish() {
+                Log.d(TAG, "FinishTimer - onFinish !!!");
+
+                finish();
+            }
+
+            @Override
+            public void onTick(long arg0) {
+                long RemainingTime = (long)(arg0/1000);
+                if(RemainingTime <= 10)
+                {
+                    Log.d(TAG, "FinishTimer - onTick (" + RemainingTime + " sec)");
+                }
+            }
+        };
+
+        mFinishTimer.cancel();
+        mFinishTimer.start();
+
+        mFinishTimerEnable = true;
+        return true;
+    }
+
+    /**
+     * 자동종료 타이머 리셋<br>
+     * 본 메소드는 {@link #setFinishTimerCreate} 를 통하여 생성된<br>
+     * 자동종료 타이머를 설정된 시간으로 리셋 시킨다.<br>
+     * ※ 특별한 경우가 아니라면 본 클래스에서 자동으로 조정하므로 사용할 필요가 없다.<br>
+     *
+     * @reutrn true : 성공, false : 실패
+     * <br><br>
+     * @Example
+     * <pre class="prettyprint">
+     * super.setFinishTimerReset();      // 자동종료 타이머 리셋
+     * </pre>
+     */
+    public static boolean setFinishTimerReset()
+    {
+        if(mFinishTimerEnable)
+        {
+            if(mFinishTimer != null)
+            {
+                mFinishTimer.cancel();
+                mFinishTimer.start();
+            }
+            //Log.d(TAG, "FinishTimer - setFinishTimerReset !!!");
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * 자동종료 타이머 삭제<br>
+     * 본 메소드는 {@link #setFinishTimerCreate} 를 통하여 생성된<br>
+     * 자동종료 타이머를 삭제시킨다.<br>
+     * ※ 삭제된 후에는 다시 사용할 경우에는 {@link #setFinishTimerCreate} 를 사용하여 재 생성한다.<br>
+     * @reutrn true : 성공, false : 실패
+     * <br><br>
+     * @Example
+     * <pre class="prettyprint">
+     * super.setFinishTimerDestroy();      // 자동종료 타이머 삭제
+     * </pre>
+     */
+    protected boolean setFinishTimerDestroy()
+    {
+        mFinishTimerEnable = false;
+        if(mFinishTimer != null)
+        {
+            //Log.d(TAG, "setFinishTimerDestroy");
+            mFinishTimer.cancel();
+            mFinishTimer = null;
+            return true;
+        }
+        return false;
+    }
+
+
+    /**
+     *
+     */
+    @Override
+    public boolean onTouchEvent(MotionEvent event) {
+        if(event.getAction() == MotionEvent.ACTION_UP)
+        {
+            //Log.d(TAG, "MotionEvent.ACTION_UP");
+            setFinishTimerReset();
+        }
+        return super.onTouchEvent(event);
+    }
+
+    /**
+     * H/W Key Event
+     */
+    @Override
+    public boolean onKeyDown(int keyCode, KeyEvent event)
+    {
+        Log.i(TAG, "[onKeyDown] keyCode : " + keyCode + ", Action : " + event.getAction());
+        return super.onKeyDown(keyCode, event);
+    }
+
+    /**
+     * 현관호출 or 전화호출시 사용되는 keycode - Broadcast 을 송신한다.
+     *
+     * @param code - (int) 송신할 keycode
+     * @return (int) - >=0 : 성공, <0 : 실패
+     */
+    private int setSendEventBR(int code)
+    {
+        try
+        {
+            KeyEvent event = new KeyEvent(KeyEvent.ACTION_UP, code);
+            Intent intent = new Intent("EVENT_DEVICE_CONTROL", null);
+            intent.putExtra(Intent.EXTRA_KEY_EVENT, event);
+            intent.putExtra("keycode",code);
+            getApplicationContext().sendBroadcast(intent);
+        }
+        catch(Exception e)
+        {
+            Log.e(TAG, "[setSendEventBR] - [Exception Error] code:" + code);
+            e.printStackTrace();
+            return -100;
+        }
+        return 0;
+    }
+
+}

+ 2538 - 2686
ManagerSetting/src/main/java/com/artncore/managersetting/ui/activities/SetAddress.java

@@ -1,2686 +1,2538 @@
-package com.artncore.managersetting.ui.activities;
-
-import android.app.Activity;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.net.ethernet.EthernetDevInfo;
-import android.net.ethernet.EthernetManager;
-import android.os.Bundle;
-import android.os.CountDownTimer;
-import android.util.Log;
-import android.view.View;
-import android.view.WindowManager;
-import android.view.inputmethod.InputMethodManager;
-import android.widget.AdapterView;
-import android.widget.ArrayAdapter;
-import android.widget.Button;
-import android.widget.Spinner;
-import android.widget.TextView;
-
-import com.artncore.WallPadDataMgr.WallpadDeviceSet;
-import com.artncore.WallPadDataMgr.WallpadScheduleData;
-import com.artncore.WallPadDataMgr.WallpadStatusData;
-import com.artncore.WallPadDataMgr.wallpaddbmgr;
-import com.artncore.WallPadDataMgr.wallpaddbmgr.AddressSet;
-import com.artncore.WallPadDataMgr.wallpaddbmgr.AddressSetBackup;
-import com.artncore.deviceinterface.WallPadInterface;
-import com.artncore.managersetting.MainApplication;
-import com.artncore.managersetting.R;
-import com.artncore.managersetting.dao.MainDatabaseManager;
-import com.artncore.managersetting.domain.Const;
-import com.artncore.managersetting.ui.SwitchButton;
-import com.artncore.managersetting.util.DialogUtil;
-import com.artncore.managersetting.util.StringUtil;
-import com.util.LogUtil;
-
-import java.io.BufferedWriter;
-import java.io.FileOutputStream;
-import java.io.OutputStreamWriter;
-import java.util.ArrayList;
-import java.util.List;
-
-import kr.co.icontrols.a20ioctl.A20IOInterface;
-import kr.co.icontrols.v40ioctl.V40IF;
-import kr.co.icontrols.wallpadsupport.Version;
-import kr.co.icontrols.wallpadsupport.WpadScale;
-import kr.co.icontrols.wallpadsupport.WpadSound;
-import kr.co.icontrols.wallpadsupport.WpadSound.SND;
-
-public class SetAddress extends Activity
-        implements SwitchButton.SwitchButtonChangedListener {
-
-    private static final String TAG = "SetAddress";
-
-    private final boolean DEBUG = true;
-
-    private final int DONG_HO_INPUT_STATE_DONG = 0;
-    private final int DONG_HO_INPUT_STATE_HO = 1;
-    private final int DONG_HO_INPUT_STATE_FINISH = 2;
-
-
-    public final int DETAIL_TYPE_BASE =       Const.CONTROLLER_TYPE_BASE;
-    public final int DETAIL_TYPE_USE_INNER_MOTION_DETECTOR =                    DETAIL_TYPE_BASE + 15;
-    public final int DETAIL_TYPE_USE_OUTER_MOTION_DETECTOR =                    DETAIL_TYPE_BASE + 16;
-    public final int DETAIL_TYPE_USE_OUTER_MOTION_DETECTOR_TO_INNER_MOTION =    DETAIL_TYPE_BASE + 17;
-    public final int DETAIL_TYPE_USE_WALLPAD_CAMERA =                           DETAIL_TYPE_BASE + 18;
-
-    public final int DETAIL_TYPE_USE_ENERGY_DEVICES =                           DETAIL_TYPE_BASE + 19;
-    public final int DETAIL_TYPE_USE_SMART_KEY =                                DETAIL_TYPE_BASE + 20;
-
-    public final int DETAIL_TYPE_USE_MULTI_SWITCH =                             DETAIL_TYPE_BASE + 21;
-    public final int DETAIL_TYPE_USE_LIGHT_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT =   DETAIL_TYPE_BASE + 22;
-    public final int DETAIL_TYPE_USE_DANJI_CONFIG =                             DETAIL_TYPE_BASE + 23;
-    public final int DETAIL_TYPE_USE_RENT_HOME =                                DETAIL_TYPE_BASE + 24;
-    public final int DETAIL_TYPE_USE_DANJI_RENT_HOME_USE =                      DETAIL_TYPE_BASE + 25;
-    public final int DETAIL_TYPE_USE_KCC_DIM_CTR =                              DETAIL_TYPE_BASE + 26;
-    public final int DETAIL_TYPE_USE_DISTRIBUTION_KIND =                        DETAIL_TYPE_BASE + 27;
-    public final int DETAIL_TYPE_USE_GATEWAY_MODEL_KIND =               		DETAIL_TYPE_BASE + 28;
-    public final int DETAIL_TYPE_USE_ELECTRIC_RANGE =               		    DETAIL_TYPE_BASE + 29;
-    public final int DETAIL_TYPE_USE_ESCAPE_LADDER_DOWN_SEND =                  DETAIL_TYPE_BASE + 30;
-    public final int DETAIL_TYPE_USE_SUBWPD_USE =                  				DETAIL_TYPE_BASE + 31;
-
-    private MainDatabaseManager mMainDatabaseManager;
-
-    private String mDong;
-    private String mHo;
-    private String mIPAddress;
-    private WpadSound mWpadSound;
-
-    private byte mSel_Mode = DONG_HO_INPUT_STATE_DONG;
-
-    private static boolean mFinishTimerEnable = false;
-    private static CountDownTimer mFinishTimer = null;
-    private int mFinishTime = 0;
-
-    private boolean DanjiSettingUse = false;
-    private boolean KccDimCtrUse = false;
-    private boolean ElectricRangeUse = false;
-    private boolean RentHomeSettingUse = false;
-    private boolean DongHoInfo_NONE = false; //동호정보가 입력되지 않았으면 true, 입력되었으면 false
-
-    //[Model]
-    private int ModelType = Version.getModelType();
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        AppVersionLogOut();   // 버전정보 로그출력
-
-        WpadScale.Initializing(this);
-
-        if (ModelType == Version.MODEL_TYPE.IHN_1020GL) {
-            setContentView(R.layout.activity_set_address_gle);
-        }
-        else {
-            if ((WpadScale.getWidthPixels() == 800) && (WpadScale.getHeightPixels() == 480)) {
-                setContentView(R.layout.activity_set_address_800x480);
-            }
-            else {
-                if (ModelType == Version.MODEL_TYPE.IHN_1030_D) {
-                    setContentView(R.layout.activity_set_address_a20);
-                }
-                else if (ModelType == Version.MODEL_TYPE.IHN_1020B_C) {
-                    setContentView(R.layout.activity_set_address_a20_1280x800);
-                }
-                else if (ModelType == Version.MODEL_TYPE.IHN_1010 || ModelType == Version.MODEL_TYPE.IHN_1010_I) {
-                    setContentView(R.layout.activity_set_address_1010);
-                }
-                else if (ModelType == Version.MODEL_TYPE.IHN_D101 || ModelType == Version.MODEL_TYPE.IHN_D101_I) {
-                    setContentView(R.layout.activity_set_address_d101);
-                }
-                else if (ModelType == Version.MODEL_TYPE.IHN_D101K || ModelType == Version.MODEL_TYPE.IHN_D101K_I) {
-                    setContentView(R.layout.activity_set_address_d101k);
-                }
-                else if (ModelType == Version.MODEL_TYPE.IHN_1010GL || ModelType == Version.MODEL_TYPE.IHN_1010GL_I) {
-                    setContentView(R.layout.activity_set_address_d101);
-                }
-                else if (ModelType == Version.MODEL_TYPE.IHN_1030_I) {
-                    setContentView(R.layout.activity_set_address_1030);
-                }
-                else if (ModelType == Version.MODEL_TYPE.IHN_1040 || ModelType == Version.MODEL_TYPE.IHN_1040_I) {
-                    setContentView(R.layout.activity_set_address_1040);
-                }
-                else if (ModelType == Version.MODEL_TYPE.IHN_1050 || ModelType == Version.MODEL_TYPE.IHN_1050_I) {
-                    setContentView(R.layout.activity_set_address_1050);
-                }
-                else if (ModelType == Version.MODEL_TYPE.IHN_T1010 || ModelType == Version.MODEL_TYPE.IHN_T1010_I) {
-                    setContentView(R.layout.activity_set_address_t1010);
-                }
-                else if (ModelType == Version.MODEL_TYPE.IHN_HS101 || ModelType == Version.MODEL_TYPE.IHN_HS101_I) {
-                    setContentView(R.layout.activity_set_address_hs101);
-                }
-                else if (ModelType == Version.MODEL_TYPE.IHN_1050DW_I) {
-                    setContentView(R.layout.activity_set_address_1050);
-                }
-                else if (ModelType == Version.MODEL_TYPE.IHN_1020B_I) {
-                    setContentView(R.layout.activity_set_address_1020b_i);
-                }
-                else if (ModelType == Version.MODEL_TYPE.IHN_1303_I) {
-                    setContentView(R.layout.activity_set_address_1303);
-                }
-                else {
-                    setContentView(R.layout.activity_set_address);
-                }
-            }
-        }
-
-        mMainDatabaseManager = MainActivity.getMainDatabaseManager();
-
-        if (mMainDatabaseManager == null) {
-            if (DEBUG)  Log.d(TAG, "onCreate() (mMainDatabaseManager == null)");
-        }
-        else {
-            if (DEBUG)  Log.d(TAG, "onCreate() (mMainDatabaseManager != null)");
-        }
-
-        if (mMainDatabaseManager == null) {
-            DongHoInfo_NONE = true;
-            mMainDatabaseManager = new MainDatabaseManager(this, null, null);
-            setFinishTimerCreate(Const.FINISH_TIME_SEC_20MIN);
-        }
-        else {
-            setFinishTimerCreate(Const.FINISH_TIME_SEC);
-        }
-
-        mWpadSound = new WpadSound(this);
-        mDong = "";
-        mHo = "";
-
-        Button btnNum1 = (Button) findViewById(R.id.num1);
-        Button btnNum2 = (Button) findViewById(R.id.num2);
-        Button btnNum3 = (Button) findViewById(R.id.num3);
-        Button btnNum4 = (Button) findViewById(R.id.num4);
-        Button btnNum5 = (Button) findViewById(R.id.num5);
-        Button btnNum6 = (Button) findViewById(R.id.num6);
-        Button btnNum7 = (Button) findViewById(R.id.num7);
-        Button btnNum8 = (Button) findViewById(R.id.num8);
-        Button btnNum9 = (Button) findViewById(R.id.num9);
-        Button btnNum0 = (Button) findViewById(R.id.num0);
-
-        Button btnDong = (Button) findViewById(R.id.btn_dong);
-        Button btnHo = (Button) findViewById(R.id.btn_ho);
-
-        btnNum1.setSoundEffectsEnabled(false);
-        btnNum2.setSoundEffectsEnabled(false);
-        btnNum3.setSoundEffectsEnabled(false);
-        btnNum4.setSoundEffectsEnabled(false);
-        btnNum5.setSoundEffectsEnabled(false);
-        btnNum6.setSoundEffectsEnabled(false);
-        btnNum7.setSoundEffectsEnabled(false);
-        btnNum8.setSoundEffectsEnabled(false);
-        btnNum9.setSoundEffectsEnabled(false);
-        btnNum0.setSoundEffectsEnabled(false);
-
-        btnDong.setSoundEffectsEnabled(false);
-        btnHo.setSoundEffectsEnabled(false);
-
-        if (ModelType == Version.MODEL_TYPE.IHN_1020GL) {
-            initView_GLE();
-        }
-        else if (ModelType == Version.MODEL_TYPE.IHN_1010 || ModelType == Version.MODEL_TYPE.IHN_1010_I) {
-            initView_1010();
-        }
-        else if (ModelType == Version.MODEL_TYPE.IHN_D101 || ModelType == Version.MODEL_TYPE.IHN_D101K || ModelType == Version.MODEL_TYPE.IHN_1010GL
-                || ModelType == Version.MODEL_TYPE.IHN_D101_I || ModelType == Version.MODEL_TYPE.IHN_D101K_I || ModelType == Version.MODEL_TYPE.IHN_1010GL_I)
-        {
-            initView_D101();
-        }
-        /*else if (ModelType == Version.MODEL_TYPE.IHN_1010GL) {
-            initView_1010GL();
-        }*/
-        else if (ModelType == Version.MODEL_TYPE.IHN_1030_I) {
-            initView_1030();
-        }
-        else if (ModelType == Version.MODEL_TYPE.IHN_1040 || ModelType == Version.MODEL_TYPE.IHN_1040_I) {
-            initView_1040();
-        }
-        else if (ModelType == Version.MODEL_TYPE.IHN_1050 || ModelType == Version.MODEL_TYPE.IHN_1050_I) {
-            initView_1050();
-        }
-        else if (ModelType == Version.MODEL_TYPE.IHN_T1010 || ModelType == Version.MODEL_TYPE.IHN_T1010_I) {
-            initView_T1010();
-        }
-        else if (ModelType == Version.MODEL_TYPE.IHN_HS101 || ModelType == Version.MODEL_TYPE.IHN_HS101_I) {
-            initView_HS101();
-        }
-        else if (ModelType == Version.MODEL_TYPE.IHN_1050DW_I) {
-            initView_1050();
-        }
-        else if (ModelType == Version.MODEL_TYPE.IHN_1020B_I) {
-            initView_1020B_I();
-        }
-        else if (ModelType == Version.MODEL_TYPE.IHN_1303_I) {
-            initView_1303();
-        }
-        /*else if (ModelType == Version.MODEL_TYPE.IHN_D101K) {
-            initView_D101K();
-        }*/
-        else {
-            initView_SA();
-        }
-    }
-
-
-    @Override
-    public void onResume() {
-        if (DEBUG)  Log.d(TAG, "--onResume ");
-
-        super.onResume();
-
-        //PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
-        //pm.userActivity(2, true);
-        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
-    }
-
-
-    @Override
-    public void onPause() {
-        if (DEBUG)  Log.d(TAG, "--onPause ");
-
-        super.onPause();
-
-        closeDialog();
-
-        //PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
-        //pm.userActivity(1, true);
-
-        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
-    }
-
-
-    @Override
-    protected void onDestroy() {
-        if (DEBUG)  Log.d(TAG, "onDestroy() ");
-        setFinishTimerDestroy();
-        super.onDestroy();
-
-        mWpadSound.Release();
-    }
-
-
-    // init View
-    private void initView_SA() {
-        initUseInnerMotionDetector();
-        initUseOuterMotionDetector();
-        initUseInnerMotionDetectorToOuterMotion();
-        initUseWallpadCamera();
-
-        initUseMultiSwitch();
-        initUseDanjiConfig();
-        initUseRentHome();
-        initUseDanjiRentHomeUse();
-        initEscapeLadderDownSend();
-    }
-
-    private void initView_1010() {
-        initUseInnerMotionDetector();
-        initUseOuterMotionDetector();
-        initUseInnerMotionDetectorToOuterMotion();
-        initUseWallpadCamera();
-        initUseMultiSwitch();
-        initUseKccDimCtr();
-        initUseDanjiConfig();
-        initUseRentHome();
-        initUseDanjiRentHomeUse();
-        initEscapeLadderDownSend();
-        initSubWallpad();
-    }
-
-    private void initView_D101() {
-        initUseInnerMotionDetector();
-        initUseOuterMotionDetector();
-        initUseInnerMotionDetectorToOuterMotion();
-        initDistributionModel();
-        initUseElectricRange();
-        initGatewayModel();
-
-        //initUseWallpadCamera();
-        //initUseMultiSwitch();
-        //initUseKccDimCtr();
-
-        initUseDanjiConfig();
-        initUseRentHome();
-        initUseDanjiRentHomeUse();
-        initEscapeLadderDownSend();
-    }
-
-    private void initView_D101K() {
-        initUseInnerMotionDetector();
-        initUseOuterMotionDetector();
-        initUseInnerMotionDetectorToOuterMotion();
-        initDistributionModel();
-        initUseElectricRange();
-        initGatewayModel();
-
-        //initUseWallpadCamera();
-        //initUseMultiSwitch();
-        //initUseKccDimCtr();
-
-        initUseDanjiConfig();
-        initUseRentHome();
-        initUseDanjiRentHomeUse();
-        initEscapeLadderDownSend();
-    }
-
-    private void initView_1010GL() {
-        initUseInnerMotionDetector();
-        initUseOuterMotionDetector();
-        initUseInnerMotionDetectorToOuterMotion();
-        initGatewayModel();
-
-        //initUseWallpadCamera();
-        //initUseMultiSwitch();
-        //initUseKccDimCtr();
-
-        initUseDanjiConfig();
-        initUseRentHome();
-        initUseDanjiRentHomeUse();
-        initEscapeLadderDownSend();
-    }
-
-    private void initView_1030() {
-        initUseInnerMotionDetector();
-        initUseOuterMotionDetector();
-        initUseInnerMotionDetectorToOuterMotion();
-        initUseWallpadCamera();
-        initUseMultiSwitch();
-        initUseKccDimCtr();
-        initUseDanjiConfig();
-        initUseRentHome();
-        initUseDanjiRentHomeUse();
-        initEscapeLadderDownSend();
-    }
-
-    private void initView_1040() {
-        initUseInnerMotionDetector();
-        initUseOuterMotionDetector();
-        initUseInnerMotionDetectorToOuterMotion();
-        initUseWallpadCamera();
-        initUseMultiSwitch();
-        initUseKccDimCtr();
-        initUseDanjiConfig();
-        initUseRentHome();
-        initUseDanjiRentHomeUse();
-        initEscapeLadderDownSend();
-    }
-
-    private void initView_1050() {
-        initUseInnerMotionDetector();
-        initUseOuterMotionDetector();
-        initUseInnerMotionDetectorToOuterMotion();
-        initUseWallpadCamera();
-        initUseMultiSwitch();
-        initUseKccDimCtr();
-        initUseDanjiConfig();
-        initUseRentHome();
-        initUseDanjiRentHomeUse();
-        initEscapeLadderDownSend();
-    }
-
-    private void initView_T1010() {
-        initUseInnerMotionDetector();
-        initUseOuterMotionDetector();
-        initUseInnerMotionDetectorToOuterMotion();
-        initUseWallpadCamera();
-        initUseMultiSwitch();
-        initUseKccDimCtr();
-        initUseDanjiConfig();
-        initUseRentHome();
-        initUseDanjiRentHomeUse();
-        initEscapeLadderDownSend();
-    }
-
-    private void initView_HS101() {
-        initUseInnerMotionDetector();
-        initUseOuterMotionDetector();
-        initUseInnerMotionDetectorToOuterMotion();
-        initUseWallpadCamera();
-        initUseMultiSwitch();
-        initUseKccDimCtr();
-        initUseDanjiConfig();
-        initUseRentHome();
-        initUseDanjiRentHomeUse();
-        initEscapeLadderDownSend();
-    }
-
-    // init View
-    private void initView_GLE() {
-        initUseInnerEnergyDevices();
-        initUseInnerSmartKey();
-        initUseInnerAllLightPlusType();
-
-        initUseRentHome();
-        initUseDanjiRentHomeUse();
-    }
-
-    private void initView_1020B_I() {
-        initUseInnerMotionDetector();
-        initUseOuterMotionDetector();
-        initUseInnerMotionDetectorToOuterMotion();
-        initUseWallpadCamera();
-        initUseMultiSwitch();
-        initUseKccDimCtr();
-        initUseDanjiConfig();
-        initUseRentHome();
-        initUseDanjiRentHomeUse();
-        initEscapeLadderDownSend();
-    }
-
-    private void initView_1303() {
-        initUseInnerMotionDetector();
-        initUseOuterMotionDetector();
-        initUseInnerMotionDetectorToOuterMotion();
-        initUseWallpadCamera();
-        initUseMultiSwitch();
-        initUseKccDimCtr();
-        initUseDanjiConfig();
-        initUseRentHome();
-        initUseDanjiRentHomeUse();
-        initEscapeLadderDownSend();
-        initSubWallpad();
-    }
-
-
-
-    // update DongHo
-    private void updateDongHo() {
-        StringBuilder dongHoBuffer = new StringBuilder();
-
-        if (mSel_Mode >= DONG_HO_INPUT_STATE_DONG) {
-            dongHoBuffer.append(mDong);
-        }
-
-        if (mSel_Mode >= DONG_HO_INPUT_STATE_HO) {
-            dongHoBuffer.append(getString(R.string.dong));
-            dongHoBuffer.append("  ");
-            dongHoBuffer.append(mHo);
-        }
-
-        if (mSel_Mode == DONG_HO_INPUT_STATE_FINISH) {
-            dongHoBuffer.append(getString(R.string.ho));
-        }
-
-        TextView tvDongHo = (TextView) findViewById(R.id.tv_dongho);
-        tvDongHo.setText(dongHoBuffer.toString());
-    }
-
-
-
-    // add Dong
-    private void addDong(int dong) {
-        if (mDong.length() == 4) return;
-
-        mDong += dong;
-
-        updateDongHo();
-    }
-
-
-    // add Ho
-    private void addHo(int ho) {
-        if (mHo.length() == 4) return;
-
-        mHo += ho;
-
-        updateDongHo();
-    }
-
-    // 현재 입력 mode에 따라, 입력된 id를 추가
-    private void numkeyProc(int id) {
-        if (mSel_Mode == DONG_HO_INPUT_STATE_DONG) {
-            addDong(id);
-        }
-        else if (mSel_Mode == DONG_HO_INPUT_STATE_HO) {
-            addHo(id);
-        }
-    }
-
-
-    // 입력된 동/호를 clear
-    private void eraseProc() {
-        mDong = "";
-        mHo = "";
-
-        mSel_Mode = DONG_HO_INPUT_STATE_DONG;
-
-        updateDongHo();
-    }
-
-
-    // 입력 mode 설정하고, TextView를 update
-    private void set_mode(byte mode) {
-        if (mSel_Mode == mode) return;
-
-        mSel_Mode = mode;
-
-        updateDongHo();
-    }
-
-
-    // Button Click listener
-    public void mOnClick(View v) {
-        int getnum = -1;
-
-        setFinishTimerReset();
-        switch(v.getId()) {
-            case R.id.num1: getnum = 1;
-                mWpadSound.Play(SND.number.NUM1);
-                break;
-
-            case R.id.num2: getnum = 2;
-                mWpadSound.Play(SND.number.NUM2);
-                break;
-
-            case R.id.num3: getnum = 3;
-                mWpadSound.Play(SND.number.NUM3);
-                break;
-
-            case R.id.num4: getnum = 4;
-                mWpadSound.Play(SND.number.NUM4);
-                break;
-
-            case R.id.num5: getnum = 5;
-                mWpadSound.Play(SND.number.NUM5);
-                break;
-
-            case R.id.num6: getnum = 6;
-                mWpadSound.Play(SND.number.NUM6);
-                break;
-
-            case R.id.num7: getnum = 7;
-                mWpadSound.Play(SND.number.NUM7);
-                break;
-
-            case R.id.num8: getnum = 8;
-                mWpadSound.Play(SND.number.NUM8);
-                break;
-
-            case R.id.num9: getnum = 9;
-                mWpadSound.Play(SND.number.NUM9);
-                break;
-
-            case R.id.num0: getnum = 0;
-                mWpadSound.Play(SND.number.NUM0);
-                break;
-
-            case R.id.btn_eraser:
-                eraseProc();
-                break;
-
-            case R.id.btn_dong:
-                mWpadSound.Play(SND.setting.DONG);
-                set_mode((byte)DONG_HO_INPUT_STATE_HO);
-                break;
-
-            case R.id.btn_ho:
-                mWpadSound.Play(SND.setting.HO);
-                set_mode((byte)DONG_HO_INPUT_STATE_FINISH);
-                break;
-
-            case R.id.btn_inspection_mode:
-            {
-                String title = "Inspection mode";
-                String message = "Set as production inspection?\n";
-                if (Version.getModelType() == Version.MODEL_TYPE.IHN_D101 || Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I
-                        || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K_I
-                        || Version.getModelType() == Version.MODEL_TYPE.IHN_1010GL || Version.getModelType() == Version.MODEL_TYPE.IHN_1010GL_I) {
-                    message += "IP: 10.1.1.1\n" +
-                            "Door: Smart IoT Cam\n" +
-                            "Smartkey: BLE Band\n" +
-                            "In/Out Sensor: Enabled\n" +
-                            "Use Out Sensor as In Sensor: Enabled\n" +
-                            "Refuge ladder: Enabled";
-                }
-                else if (Version.getModelType() == Version.MODEL_TYPE.IHN_HS101 || Version.getModelType() == Version.MODEL_TYPE.IHN_HS101_I) {
-                    message += "IP: 10.1.1.1\n" +
-                            "Light: Each room\n" +
-                            "IntegSW: Enabled\n" +
-                            "Door: Hyosung\n" +
-                            "In/Out Sensor: Enabled\n" +
-                            "Use Out Sensor as In Sensor: Enabled\n" +
-                            "Refuge ladder: Enabled";
-                }
-                else if (Version.getModelType() == Version.MODEL_TYPE.IHN_1050DW_I) {
-                    message += "IP: 10.1.1.1\n" +
-                            "Light: Each room\n" +
-                            "IntegSW: Enabled\n" +
-                            "Door: Deawoo\n" +
-                            "In/Out Sensor: Enabled\n" +
-                            "Use Out Sensor as In Sensor: Enabled\n" +
-                            "Refuge ladder: Enabled";
-                }
-                else {
-                    message += "IP: 10.1.1.1\n" +
-                            "Light: Each room\n" +
-                            "IntegSW: Enabled\n" +
-                            "Door: RF Cam\n" +
-                            "In/Out Sensor: Enabled\n" +
-                            "Use Out Sensor as In Sensor: Enabled\n" +
-                            "Refuge ladder: Enabled";
-                }
-
-                openSetInspectionModeDialog(title, message);
-            }
-                break;
-
-            case R.id.btn_back:
-                finish();
-                break;
-
-            case R.id.btn_set: {
-                if ((mSel_Mode != DONG_HO_INPUT_STATE_FINISH) || (mHo.length() < 3 || mDong.length() < 3)) {
-                    String title = getString(R.string.menu_title_set_dongho);
-                    String message = "동/호 입력 값을 확인 바랍니다. 길이 오류";
-                    openDialog(title, message);
-                    return;
-                }
-
-                int DanjiNum = 10;
-
-                try {
-                    if (DanjiSettingUse == true) {
-                        if (mDong.length() == 3) {
-                            DanjiNum = Integer.parseInt(mDong.substring(0, 1));
-                        }
-                        else if (mDong.length() == 4) {
-                            DanjiNum = Integer.parseInt(mDong.substring(0, 2));
-                        }
-                    }
-
-                    int secNum =  Integer.parseInt(mDong.substring(mDong.length()-2));
-                    int thirdNum = Integer.parseInt(mHo.substring(0, mHo.length()-2));
-                    int forthNum = Integer.parseInt(mHo.substring(mHo.length()-2));
-
-                    if (DanjiSettingUse == true) {
-                        if ((DanjiNum == 0) || (DanjiNum > 255)) {
-                            String title = getString(R.string.menu_title_set_dongho);
-                            String message = "동 입력 값을 확인 바랍니다. \r\nIP 생성 오류";
-                            openDialog(title, message);
-                            return;
-                        }
-                    }
-
-                    if (RentHomeSettingUse == true) {
-                        if (forthNum > 55) {
-                            String title = getString(R.string.menu_title_set_dongho);
-                            String message = "호 입력 값을 확인 바랍니다.\r\n(임대세대 인 경우는 55호를 넘지 못합니다.) \r\nIP 생성 오류";
-                            openDialog(title, message);
-                            return;
-                        }
-                    }
-
-                    if ((thirdNum > 125) || (forthNum > 99)) {
-                        String title = getString(R.string.menu_title_set_dongho);
-                        String message = "동/호 입력 값을 확인 바랍니다. \r\nIP 생성 오류";
-                        openDialog(title, message);
-                    }
-                    else {
-                        String title = getString(R.string.menu_title_set_dongho);
-                        String message = mDong + getString(R.string.dong) + " " + mHo+ getString(R.string.ho) + " " +" 로 설정하시겠습니까?";
-
-                        if (DanjiSettingUse == true) {
-                            openSetDongHoDialog(title, message, DanjiNum, secNum, thirdNum, forthNum);
-                        }
-                        else if (RentHomeSettingUse == true) {
-                            openSetDongHoDialog(title, message, 10, secNum, thirdNum, forthNum + 200);
-                        }
-                        else {
-                            openSetDongHoDialog(title, message, 10, secNum, thirdNum, forthNum);
-                        }
-                    }
-                } catch (RuntimeException re) {
-                    Log.e(TAG, re.toString());
-                } catch (Exception e) {
-                    //e.printStackTrace();            
-                    LogUtil.errorLogInfo("", TAG, e);
-                }
-            }
-            break;
-        }
-
-        if (getnum > -1) numkeyProc(getnum);
-    }
-
-
-    private final int DEFAULT_LOBBY_IP_THIRD = 0;
-    private final int DEFAULT_LOBBY_IP_FORTH = 1;
-    // IP를 DB에 저장하고, info popup을 open
-    private void setNetworkAddr(int DanjiNum, int secNum, int thirdNum, int forthNum) {
-
-        if (DanjiSettingUse == false) {
-            DanjiNum = 10;
-        }
-
-        if (RentHomeSettingUse == true) {
-            mHo = mHo + "-1";
-        }
-
-        String IPAddress = String.format("%d.%d.%d.%d", DanjiNum, secNum, thirdNum, forthNum);
-        String gateWayIPAddress = String.format("%d.%d.%d.%d", DanjiNum, secNum, Const.DEFAULT_GATEWAY_IP_THIRD, Const.DEFAULT_GATEWAY_IP_FORTH);
-        String MacAddr = String.format("00:%02x:%02x:%02x:%02x:00", DanjiNum, secNum, thirdNum, forthNum);
-
-        String serverIP = Const.DEFAULT_SERVER_IP;
-        int serverPort = Const.DEFAULT_SERVER_PORT;
-
-        String managePCIP = Const.DEFAULT_MANAGER_PC_IP;
-        int managePCPort = Const.DEFAULT_MANAGER_PC_PORT;
-
-        String lobbyIP = String.format("%d.%d.%d.%d", DanjiNum, secNum, DEFAULT_LOBBY_IP_THIRD, DEFAULT_LOBBY_IP_FORTH);
-        String lobbyName = mDong + getString(R.string.dong) + " " + getString(R.string.check_network_lobby) + " : ";
-
-        wallpaddbmgr dbmgr = new wallpaddbmgr(this);
-        AddressSet addc =  dbmgr.getAddressMGR();
-        addc.setAddress(mDong, mHo);
-        addc.setIPAddress(IPAddress);
-        dbmgr.closeDB();
-        mIPAddress = IPAddress;
-
-        wallpaddbmgr dbmgr2 = new wallpaddbmgr(this);
-        AddressSetBackup addc_Backup =  dbmgr2.getAddressMGR_Backup();
-        addc_Backup.setAddress(mDong, mHo);
-        addc_Backup.setIPAddress(IPAddress);
-        dbmgr2.closeDB();
-
-        WallpadStatusData wallpadStatusData = new WallpadStatusData(this);
-        wallpadStatusData.SetServerIP(serverIP, serverPort);
-        wallpadStatusData.SetManagePC(managePCIP, managePCPort);
-        wallpadStatusData.closeDB();
-
-        if (Version.getPlatformType() == Version.PLATFORM_TYPE.A40i) {
-            V40IF mV40IF = new V40IF();
-            mV40IF.setNetworkInterface(IPAddress, Const.SUBNET_MASK, gateWayIPAddress, Const.DNS_IP, MacAddr);
-            Log.d(TAG, "[SetAddress] IP : "+IPAddress+" Mac : "+ MacAddr);
-
-            mV40IF.setDns(Const.DNS_IP, Const.DNS_IP2);
-            Log.d(TAG, "[SetAddress] DNS 1 : " + Const.DNS_IP +" / DNS 2 : " + Const.DNS_IP2);
-        }
-        else {
-            EthernetDevInfo info = new EthernetDevInfo();
-
-            info.setIfName("eth0");
-            info.setConnectMode(EthernetDevInfo.ETH_CONN_MODE_MANUAL);
-            info.setIpAddress(IPAddress);
-            info.setRouteAddr(gateWayIPAddress);
-            info.setDnsAddr(Const.DNS_IP);
-            info.setNetMask(Const.SUBNET_MASK);
-
-            EthernetManager mEthManager = (EthernetManager) getSystemService("ethernet");
-            mEthManager.setEthernetState(EthernetManager.ETH_STATE_DISABLED);
-            mEthManager.UpdateEthDevInfo(info);
-            mEthManager.setEthernetState(EthernetManager.ETH_STATE_ENABLING);
-
-            if ((ModelType == Version.MODEL_TYPE.IHN_1020B_C) || (ModelType == Version.MODEL_TYPE.IHN_1030_D)) {
-                A20IOInterface wallPadInterface = new A20IOInterface();
-                wallPadInterface.WpdInterfaceOpen();
-                wallPadInterface.SetMacAddr(0xFB01, MacAddr);
-                wallPadInterface.WpdInterfaceClose();
-                Log.d(TAG, " IP : "+IPAddress+" Mac : "+ MacAddr);
-                writeMacAddress(MacAddr);
-            }
-            else {
-                WallPadInterface wallPadInterface = new WallPadInterface();
-                wallPadInterface.setMacAddr(MacAddr);
-                wallPadInterface.close();
-                Log.d(TAG, " IP : "+IPAddress+" Mac : "+ MacAddr);
-                writeMacAddress(MacAddr);
-            }
-        }
-        ////////////////////////
-
-        String title = getString(R.string.menu_title_set_dongho);
-        String message = "IP : " + IPAddress
-                + "\n G/W : " + gateWayIPAddress
-                + "\n MacAddr : " + MacAddr
-                + "\n Server : " + serverIP + " : " + serverPort
-                + "\n ManagePC : " + managePCIP + " : " + managePCPort
-                + "\n Lobby : " + lobbyName + " - " + lobbyIP
-                + "\n 로 설정되었습니다.";
-        openFinishDialog(title, message);
-    }
-
-
-
-    private final String NETWORK_SETTING = "network_setting";
-    private final String MAC_ADDRESS_FILE_PATH = Const.CONTENTS_ROOT + NETWORK_SETTING + ".inc";
-    // write MacAddress to file
-    private boolean writeMacAddress(String MacAddr) {
-        boolean ret = false;
-        String read = null;
-
-        BufferedWriter bufferWriter = null;
-
-        try {
-            FileOutputStream fos = new FileOutputStream(MAC_ADDRESS_FILE_PATH, false);
-            OutputStreamWriter osr = new OutputStreamWriter(fos, "UTF-8");
-            bufferWriter = new BufferedWriter(osr, 1024);
-
-            if ((bufferWriter != null) && (MacAddr != null)) {
-                bufferWriter.write(MacAddr, 0, MacAddr.length());
-                bufferWriter.newLine();
-                bufferWriter.flush();
-
-                ret = true;
-            }
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
-        } catch (Exception e) {
-            //e.printStackTrace();            
-            LogUtil.errorLogInfo("", TAG, e);
-        } finally {
-            try {
-                if (bufferWriter != null) {
-                    bufferWriter.close();
-                }
-            } catch (RuntimeException re) {
-                Log.e(TAG, re.toString());
-            } catch (Exception e) {
-                //e.printStackTrace();            
-                LogUtil.errorLogInfo("", TAG, e);
-            }
-        }
-
-
-        if (DEBUG)  Log.d(TAG, "writeMacAddress() path : " + MAC_ADDRESS_FILE_PATH
-                + ", MacAddr : " + MacAddr
-                + ", ret : " + ret
-        );
-
-        return ret;
-    }
-
-
-    private DialogUtil mDialog;
-    // open dialog
-    public void openDialog(final String title, final String message) {
-        mDialog = new DialogUtil(this);
-
-        DialogInterface.OnClickListener positiveListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        closeDialog();
-                    }
-                };
-
-        mDialog.openCommonDialog(title, message, positiveListener, null);
-    }
-
-    // open FinishDialog
-    public void openFinishDialog(final String title, final String message) {
-        mDialog = new DialogUtil(this);
-
-        DialogInterface.OnClickListener positiveListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        WallpadScheduleData wallpadScheduleData = new WallpadScheduleData(SetAddress.this);
-                        wallpadScheduleData.DeleteTableInst(wallpaddbmgr.ScheduleTBL);
-                        wallpadScheduleData.closeDB();
-
-                        if (Version.getPlatformType() == Version.PLATFORM_TYPE.A40i) {
-
-                            // IP 설정을 한 후, 팝업창의 "확인" or "Ok"를 누른 경우 재부팅 설정
-                            V40IF mV40IF = new V40IF();
-							Log.d(TAG, "IP Set PopUp Ok -> Do Reboot !!!");
-							mV40IF.setV40Reboot(5);
-                        }
-                        else if (Version.getPlatformType() == Version.PLATFORM_TYPE.A20) {
-                            //PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
-                            //pm.userActivity(8, true);
-                            getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
-
-                        }
-                        else {
-                            //finish();
-                            ComponentName cnA = new ComponentName("com.artncore.updater", "com.artncore.updater.MainActivity");
-                            Intent intent = new Intent(Intent.ACTION_MAIN);
-                            intent.addCategory(Intent.CATEGORY_LAUNCHER);
-                            intent.putExtra("updatesystem", "no");
-                            intent.putExtra("updateapp", " no ");
-                            intent.putExtra("rebootcmd", "reboot");
-                            intent.setComponent(cnA);
-
-                            startActivity(intent);
-                        }
-
-                    }
-                };
-
-        mDialog.openCommonDialog(title, message, positiveListener, null);
-    }
-
-    // open SetDongHoDialog
-    public void openSetDongHoDialog(final String title, final String message,
-                                    final int DanjiNum, final int secNum, final int thirdNum, final int forthNum) {
-        mDialog = new DialogUtil(this);
-
-        DialogInterface.OnClickListener positiveListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        closeDialog();
-
-                        mWpadSound.Play(SND.setting.SETTING);
-                        setFinishTimerReset();
-                        setNetworkAddr(DanjiNum, secNum, thirdNum, forthNum);
-                    }
-                };
-
-        DialogInterface.OnClickListener negativeListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        closeDialog();
-                    }
-                };
-
-        mDialog.openCommonDialog(title, message, positiveListener, negativeListener);
-    }
-
-    // open SetInspectionModeDialog
-    public void openSetInspectionModeDialog(final String title, final String message) {
-        mDialog = new DialogUtil(this);
-
-        DialogInterface.OnClickListener positiveListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        closeDialog();
-                        mWpadSound.Play(SND.setting.SETTING);
-                        setFinishTimerReset();
-                        setInspectionMode();
-                        setNetworkAddr(10, 1, 1, 1);
-                    }
-                };
-
-        DialogInterface.OnClickListener negativeListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        closeDialog();
-                    }
-                };
-
-        mDialog.openCommonDialog(title, message, positiveListener, negativeListener);
-    }
-
-    private void setInspectionMode() {
-        WallpadDeviceSet mWallpadDeviceSet = new WallpadDeviceSet(this);
-        try {
-            /**
-             * 생산검수모드 설정
-             * IHN-D101/D101-I/D101K/D101-I/D101-IC
-             *  -> 현관카메라(스마트IoT현관카메라), BLE스마트키(스마트밴드), 내부동체(사용), 외부동체(사용), 외부동체를 내부동체로 사용(미사용), 피난사다리(사용)
-             *  IHN-HS101/101-I
-             *  -> 조명 유형(조명(각실)), 통합스위치(사용), 현관카메라(효성현관카메라), 내부동체(사용), 외부동체(사용), 외부동체를 내부동체로 사용(미사용), 피난사다리(사용)
-             *  IHN-1050DW-I
-             *  -> 조명 유형(조명(각실)), 통합스위치(사용), 현관카메라(대우현관카메라), 내부동체(사용), 외부동체(사용), 외부동체를 내부동체로 사용(미사용), 피난사다리(사용)
-             *  이외의 모델
-             *  -> 조명 유형(조명(각실)), 통합스위치(사용), 현관카메라(RF현관카메라), 내부동체(사용), 외부동체(사용), 외부동체를 내부동체로 사용(미사용), 피난사다리(사용)
-             */
-
-            mDong = "101";   // 동정보 입력
-            mHo = "101";   // 호정보 입력
-
-            if (Version.getModelType() == Version.MODEL_TYPE.IHN_D101 || Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I
-                    || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K_I) {
-                mWallpadDeviceSet.Set_DoorCameraType(WallpadDeviceSet.DOORTYPE_IOT_SMART);   // 스마트 IoT 현관카메라
-                mWallpadDeviceSet.Set_BLESmartKeyType(WallpadDeviceSet.BLESMARTKEY_BAND);   // BLE 스마트 밴드
-                mWallpadDeviceSet.Set_MotionSensorType(true, true, true, false);   // 내부동체 사용, 외부동체 사용, 외부동체를 내부동체로 사용
-                mWallpadDeviceSet.Set_RefugeLadderUsage(true);   // 피난사다리 사용
-            }
-//            else if (Version.getModelType() == Version.MODEL_TYPE.IHN_HS101 || Version.getModelType() == Version.MODEL_TYPE.IHN_HS101_I) {
-//                mWallpadDeviceSet.Set_LightingControllerType(WallpadDeviceSet.LIGHT_TYPE_ROOM);   // 조명(각실)
-//                mWallpadDeviceSet.Set_IntegratedSwitchUsage(true);   // 통합스위치 사용
-//                mWallpadDeviceSet.Set_DoorCameraType(WallpadDeviceSet.DOORTYPE_HYOSUNG_SMART);   // 효성 스마트 현관 카메라
-//                mWallpadDeviceSet.Set_MotionSensorType(true, true, true, false);   // 내부동체 사용, 외부동체 사용, 외부동체를 내부동체로 사용
-//                mWallpadDeviceSet.Set_RefugeLadderUsage(true);   // 피난사다리 사용
-//            }
-            else if (Version.getModelType() == Version.MODEL_TYPE.IHN_1010GL || Version.getModelType() == Version.MODEL_TYPE.IHN_1010GL_I) {
-                mWallpadDeviceSet.Set_LightingControllerType(WallpadDeviceSet.LIGHT_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT_MULTISWITCH);   // 현산향일체형조명일괄소등병합형_멀티스위치
-                mWallpadDeviceSet.Set_DoorCameraType(WallpadDeviceSet.DOORTYPE_IOT_SMART);   // 스마트 IoT 현관카메라
-                mWallpadDeviceSet.Set_BLESmartKeyType(WallpadDeviceSet.BLESMARTKEY_BAND);   // BLE 스마트 밴드
-                mWallpadDeviceSet.Set_MotionSensorType(true, true, true, false);   // 내부동체 사용, 외부동체 사용, 외부동체를 내부동체로 사용
-                mWallpadDeviceSet.Set_RefugeLadderUsage(true);   // 피난사다리 사용
-            }
-            else if (Version.getModelType() == Version.MODEL_TYPE.IHN_1050DW_I) {
-                mWallpadDeviceSet.Set_LightingControllerType(WallpadDeviceSet.LIGHT_TYPE_ROOM);   // 조명(각실)
-                mWallpadDeviceSet.Set_IntegratedSwitchUsage(true);   // 통합스위치 사용
-                mWallpadDeviceSet.Set_DoorCameraType(WallpadDeviceSet.DOORTYPE_DAEWOO_SMART);   // 대우 스마트 현관 카메라
-                mWallpadDeviceSet.Set_MotionSensorType(true, true, true, false);   // 내부동체 사용, 외부동체 사용, 외부동체를 내부동체로 사용
-                mWallpadDeviceSet.Set_RefugeLadderUsage(true);   // 피난사다리 사용
-            }
-            else {
-                mWallpadDeviceSet.Set_LightingControllerType(WallpadDeviceSet.LIGHT_TYPE_ROOM);   // 조명(각실)
-                mWallpadDeviceSet.Set_IntegratedSwitchUsage(true);   // 통합스위치 사용
-                mWallpadDeviceSet.Set_DoorCameraType(WallpadDeviceSet.DOORTYPE_RFCAM);   // RF 현관 카메라
-                mWallpadDeviceSet.Set_MotionSensorType(true, true, true, false);   // 내부동체 사용, 외부동체 사용, 외부동체를 내부동체로 사용
-                mWallpadDeviceSet.Set_RefugeLadderUsage(true);   // 피난사다리 사용
-            }
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
-        } catch (Exception e) {
-            Log.e(TAG, "[Exception] setInspectionMode()");
-            //e.printStackTrace();            
-            LogUtil.errorLogInfo("", TAG, e);
-        }
-        mWallpadDeviceSet.closeDB();
-    }
-
-	public void showSoftKeyboard(View view) {
-		if (view.requestFocus()) {
-			InputMethodManager imm = (InputMethodManager)
-					getSystemService(Context.INPUT_METHOD_SERVICE);
-			imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT);
-
-			/*if(getResources().getConfiguration().keyboard)
-			{
-				// 키보드가 안나온다...
-
-			}*/
-		}
-	}
-
-    // open close Dialog
-    public void closeDialog() {
-        if (mDialog != null) {
-            mDialog.closeDialog();
-            mDialog = null;
-        }
-    }
-
-    // init UseInnerEnergyDevices View
-    private void initUseInnerEnergyDevices() {
-        int type = DETAIL_TYPE_USE_ENERGY_DEVICES;
-        String typeName = this.getString(R.string.detail_function_use_energy_devices);
-
-        SwitchButton switchButton = (SwitchButton)this.findViewById(R.id.btn_switch_use_energy_devices);
-        if(switchButton == null)
-        {
-            return;
-        }
-        switchButton.setSwitchButtonChangedListener(this, type, typeName);
-
-
-        List<String> listString = new ArrayList<String>();
-        listString.add(this.getString(R.string.set));
-        listString.add(this.getString(R.string.clear));
-
-        switchButton.setText(listString);
-
-        boolean initValue = false;
-
-        List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ENERGY_DEVICES);
-
-        if ((InfoList != null) && (InfoList.size() < 5)) {
-            if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
-                initValue = true;
-            }
-        }
-
-        switchButton.switchEnabled(initValue);
-    }
-
-    // init UseInnerSmart Key View
-    private void initUseInnerSmartKey() {
-        int type = DETAIL_TYPE_USE_SMART_KEY;
-        String typeName = this.getString(R.string.detail_function_use_smart_key);
-
-        SwitchButton switchButton = (SwitchButton)this.findViewById(R.id.btn_switch_use_smart_key);
-        if(switchButton == null)
-        {
-            return;
-        }
-        switchButton.setSwitchButtonChangedListener(this, type, typeName);
-
-
-        List<String> listString = new ArrayList<String>();
-        listString.add(this.getString(R.string.set));
-        listString.add(this.getString(R.string.clear));
-
-        switchButton.setText(listString);
-
-        boolean initValue = false;
-
-        int DoorCameraInitIdx = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-
-        List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DOOR_CAMERA);
-        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.DOOR_CAMERA_TYPE_DEFAULT))
-                    {
-                        DoorCameraInitIdx = 0;
-                    }
-                    else if(InfoList.get(5).equals(Const.DOOR_CAMERA_TYPE_RF_DOOR_CAMERA))
-                    {
-                        DoorCameraInitIdx = 1;
-                    }
-                    else if(InfoList.get(5).equals(Const.DOOR_CAMERA_TYPE_SMART_KEY))
-                    {
-                        DoorCameraInitIdx = 2;
-                    }
-                    else if(InfoList.get(5).equals(Const.DOOR_CAMERA_TYPE_UKS))
-                    {
-                        DoorCameraInitIdx = 3;
-                    }
-                    else if(InfoList.get(5).equals(Const.DOOR_CAMERA_TYPE_ETC))
-                    {
-                        DoorCameraInitIdx = 4;
-                    }
-                }
-            }
-        }
-        if(DoorCameraInitIdx == 2)
-        {
-            initValue = true;
-        }
-        switchButton.switchEnabled(initValue);
-    }
-
-    // init UseInnerEnergyDevices View
-    private void initUseInnerAllLightPlusType() {
-        int type = DETAIL_TYPE_USE_LIGHT_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT;
-        String typeName = this.getString(R.string.detail_function_use_light_type_hdc_intlight_add_batchlight);
-
-        SwitchButton switchButton = (SwitchButton)this.findViewById(R.id.btn_switch_use_kind_light_all_light_plus);
-        if(switchButton == null)
-        {
-            return;
-        }
-        switchButton.setSwitchButtonChangedListener(this, type, typeName);
-
-
-        List<String> listString = new ArrayList<String>();
-        listString.add(this.getString(R.string.set));
-        listString.add(this.getString(R.string.clear));
-
-        switchButton.setText(listString);
-
-
-        int typeCount = Const.CONTROLLER_LIGHT_TYPE_MAX_COUNT;
-        int typeCurrent = 0;
-        int lightCurrentCount = 0;
-
-        List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LIGHT);
-        if ((InfoList != null) && (InfoList.size() > 5))
-        {
-            if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3)))
-            {
-                int circuitNo = StringUtil.getInt(InfoList.get(1), false);
-                if ((circuitNo > -1) && (circuitNo <= Const.CONTROLLER_LIGHT_MAX_COUNT + 1))
-                    lightCurrentCount = circuitNo - 1;
-
-                String strType = InfoList.get(5);
-
-                if (ModelType == Version.MODEL_TYPE.IHN_1020GL)
-                {
-                    if (Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_NORMAL.equals(strType))
-                    {
-                        typeCurrent = 1;
-                    }
-                    else if (Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT.equals(strType))
-                    {
-                        typeCurrent = 2;
-                    }
-                }
-            }
-        }
-
-        boolean initValue = false;
-        if(typeCurrent == 2)
-        {
-            initValue = true;
-        }
-        switchButton.switchEnabled(initValue);
-    }
-
-
-
-    // init UseInnerMotionDetector View
-    private void initUseInnerMotionDetector() {
-        int type = DETAIL_TYPE_USE_INNER_MOTION_DETECTOR;
-        String typeName = this.getString(R.string.detail_function_use_inner_motion_detector);
-
-        SwitchButton switchButton = (SwitchButton)this.findViewById(R.id.btn_switch_use_inner_motion_detector);
-        if(switchButton == null)
-        {
-            return;
-        }
-        switchButton.setSwitchButtonChangedListener(this, type, typeName);
-
-
-        List<String> listString = new ArrayList<String>();
-        listString.add(this.getString(R.string.set));
-        listString.add(this.getString(R.string.clear));
-
-        switchButton.setText(listString);
-
-        boolean initValue = false;
-
-        List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_MOTION_SETTING);
-        if ((InfoList != null) && (InfoList.size() > 5)) {
-            if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
-                for (int i=4; i<InfoList.size(); i+=2) {
-                    if (Const.MOTION_SETTING_TYPE_USE_INNER_MOTION_DETECTOR.equals(InfoList.get(i)) && (InfoList.size() > (i + 1))) {
-
-                        if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(i + 1)))
-                            initValue = true;
-
-                        break;
-                    }
-                }
-            }
-        }
-
-        switchButton.switchEnabled(initValue);
-    }
-
-
-    // init UseOuterMotionDetector View
-    private void initUseOuterMotionDetector() {
-        int type = DETAIL_TYPE_USE_OUTER_MOTION_DETECTOR;
-        String typeName = this.getString(R.string.detail_function_use_outer_motion_detector);
-
-        SwitchButton switchButton = (SwitchButton)this.findViewById(R.id.btn_switch_use_outer_motion_detector);
-        if(switchButton == null)
-        {
-            return;
-        }
-        switchButton.setSwitchButtonChangedListener(this, type, typeName);
-
-
-        List<String> listString = new ArrayList<String>();
-        listString.add(this.getString(R.string.set));
-        listString.add(this.getString(R.string.clear));
-
-        switchButton.setText(listString);
-
-        boolean initValue = false;
-
-        List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_MOTION_SETTING);
-        if ((InfoList != null) && (InfoList.size() > 5)) {
-            if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
-                for (int i=4; i<InfoList.size(); i+=2) {
-                    if (Const.MOTION_SETTING_TYPE_USE_OUTER_MOTION_DETECTOR.equals(InfoList.get(i)) && (InfoList.size() > (i + 1))) {
-
-                        if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(i + 1)))
-                            initValue = true;
-
-                        break;
-                    }
-                }
-            }
-        }
-
-        switchButton.switchEnabled(initValue);
-    }
-
-
-    // init UseInnerMotionDetectorToOuterMotion View
-    private void initUseInnerMotionDetectorToOuterMotion() {
-        int type = DETAIL_TYPE_USE_OUTER_MOTION_DETECTOR_TO_INNER_MOTION;
-        String typeName = this.getString(R.string.detail_function_use_outer_motion_detector_to_inner_motion);
-
-        SwitchButton switchButton = (SwitchButton)this.findViewById(R.id.btn_switch_use_outer_motion_detector_to_inner_motion);
-        if(switchButton == null)
-        {
-            return;
-        }
-        switchButton.setSwitchButtonChangedListener(this, type, typeName);
-
-
-        List<String> listString = new ArrayList<String>();
-        listString.add(this.getString(R.string.set));
-        listString.add(this.getString(R.string.clear));
-
-        switchButton.setText(listString);
-
-        boolean initValue = false;
-
-        List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_MOTION_SETTING);
-        if ((InfoList != null) && (InfoList.size() > 5)) {
-            if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
-                for (int i=4; i<InfoList.size(); i+=2) {
-                    if (Const.MOTION_SETTING_TYPE_USE_OUTER_MOTION_DETECTOR_TO_INNER_MOTION.equals(InfoList.get(i)) && (InfoList.size() > (i + 1))) {
-
-                        if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(i + 1)))
-                            initValue = true;
-
-                        break;
-                    }
-                }
-            }
-        }
-
-        switchButton.switchEnabled(initValue);
-    }
-
-
-    // init UseWallpadCamera View
-    private void initUseWallpadCamera() {
-        int type = DETAIL_TYPE_USE_WALLPAD_CAMERA;
-        String typeName = this.getString(R.string.detail_function_use_wallpad_camera);
-
-        SwitchButton switchButton = (SwitchButton)this.findViewById(R.id.btn_switch_use_wallpad_camera);
-        if(switchButton == null)
-        {
-            return;
-        }
-        switchButton.setSwitchButtonChangedListener(this, type, typeName);
-
-
-        List<String> listString = new ArrayList<String>();
-        listString.add(this.getString(R.string.set));
-        listString.add(this.getString(R.string.clear));
-
-        switchButton.setText(listString);
-
-        boolean initValue = mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_WALLPAD_CAMERA);
-        switchButton.switchEnabled(initValue);
-    }
-
-
-    // init initUseMultiSwitch View
-    private void initUseMultiSwitch() {
-        int type = DETAIL_TYPE_USE_MULTI_SWITCH;
-        String typeName = this.getString(R.string.detail_function_use_multi_switch);
-
-        SwitchButton switchButton = (SwitchButton)this.findViewById(R.id.btn_switch_use_multiswitch);
-        if(switchButton == null)
-        {
-            return;
-        }
-        switchButton.setSwitchButtonChangedListener(this, type, typeName);
-
-
-        List<String> listString = new ArrayList<String>();
-        listString.add(this.getString(R.string.set));
-        listString.add(this.getString(R.string.clear));
-
-        switchButton.setText(listString);
-
-        boolean initValue = false;
-        int typeCurrent = 1;
-
-        List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LIGHT);
-        if ((InfoList != null) && (InfoList.size() > 5)) {
-            if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
-
-                String strType = InfoList.get(5);
-                if (Const.LIGHT_CONTROLLER_TYPE_LIVING_ROOM.equals(strType)) {
-                    typeCurrent = 1;
-                }
-                else if (Const.LIGHT_CONTROLLER_TYPE_ROOMS.equals(strType)) { //멀티스위치
-                    typeCurrent = 2;
-                }
-            }
-        }
-
-        if(typeCurrent == 2)
-        {
-            initValue = true;
-        }
-
-        switchButton.switchEnabled(initValue);
-    }
-
-    private void initUseKccDimCtr()
-    {
-        int type = DETAIL_TYPE_USE_KCC_DIM_CTR;
-        String typeName = this.getString(R.string.contoller_dimming_kcc);
-
-        SwitchButton switchButton = (SwitchButton)this.findViewById(R.id.btn_switch_use_kccdimctr);
-        if(switchButton == null)
-        {
-            return;
-        }
-        switchButton.setSwitchButtonChangedListener(this, type, typeName);
-
-
-        List<String> listString = new ArrayList<String>();
-        listString.add(this.getString(R.string.set));
-        listString.add(this.getString(R.string.clear));
-
-        switchButton.setText(listString);
-
-        boolean initValue = mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DIMMING_KCC);
-        KccDimCtrUse = initValue;
-
-        switchButton.switchEnabled(initValue);
-    }
-
-    Spinner spinner_distModel = null;
-    boolean firstDistModelDialog = false;
-    int firstDistSelection = 0;
-    private void initDistributionModel()
-    {
-        try
-        {
-            int type = DETAIL_TYPE_USE_DISTRIBUTION_KIND;
-
-            final String typeName = this.getString(R.string.contoller_energy_distribution);
-            int distKindCurrent = 0;
-
-            final List<String> itemList = new ArrayList<String>();
-            itemList.add(this.getString(R.string.do_not_used));
-            itemList.add(this.getString(R.string.contoller_energy_distribution_smart));
-            itemList.add(this.getString(R.string.contoller_energy_distribution_knx));
-
-            ArrayAdapter<String> spinnerAdapter;
-            spinnerAdapter = new ArrayAdapter<String>(this.getApplicationContext(), R.layout.spinner_item, itemList);
-
-            spinner_distModel = (Spinner)this.findViewById(R.id.spinner_distribution_kind);
-            if(spinner_distModel == null)
-            {
-                return;
-            }
-            spinner_distModel.setAdapter(spinnerAdapter);
-            spinner_distModel.setPrompt("분전반 종류 선택");
-            spinner_distModel.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
-                @Override
-                public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
-                    String nowStr= itemList.get(position);
-
-                    if(firstDistModelDialog)
-                    {
-                        if(firstDistSelection != position)
-                        {
-                            DistributionSpinnerChangedDialog(spinner_distModel, DETAIL_TYPE_USE_DISTRIBUTION_KIND, position,
-                                    itemList.get(position), typeName);
-                        }
-
-                    }
-                    firstDistModelDialog = true;
-                }
-
-                @Override
-                public void onNothingSelected(AdapterView<?> parent) {
-
-                }
-            });
-
-            distKindCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-
-            List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DISTRIBUTION);
-            if ((InfoList != null) && (InfoList.size() > 5)) {
-                if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
-                    String strType = InfoList.get(5);
-
-                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(strType)) {
-                        distKindCurrent = 0;
-                    }
-                    else if (Const.CONTROLLER_DISTRIBUTION_KIND_SMART.equals(strType)) {
-                        distKindCurrent = 1;
-                    }
-                    else if (Const.CONTROLLER_DISTRIBUTION_KIND_KNX.equals(strType)) {
-                        distKindCurrent = 2;
-                    }
-                }
-                else if(Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3)))
-                {
-                    String strType = InfoList.get(5);
-
-                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(strType)) {
-                        distKindCurrent = 0;
-                    }
-                }
-
-                firstDistSelection = distKindCurrent;
-            }
-
-            spinner_distModel.setSelection(distKindCurrent);
-        }
-        catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-        }
-        catch(Exception e)
-        {
-            Log.e(TAG, "[initDistributionModel] - Exception !!!");
-            //e.printStackTrace();            
-            LogUtil.errorLogInfo("", TAG, e);
-        }
-    }
-
-    private void initUseElectricRange()
-    {
-        int type = DETAIL_TYPE_USE_ELECTRIC_RANGE;
-        String typeName = this.getString(R.string.contoller_electric_range);
-
-        SwitchButton switchButton = (SwitchButton)this.findViewById(R.id.btn_switch_use_electric_range);
-        if(switchButton == null)
-        {
-            return;
-        }
-        switchButton.setSwitchButtonChangedListener(this, type, typeName);
-
-
-        List<String> listString = new ArrayList<String>();
-        listString.add(this.getString(R.string.set));
-        listString.add(this.getString(R.string.clear));
-
-        switchButton.setText(listString);
-
-        boolean initValue = mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ELECTRIC_RANGE);
-        ElectricRangeUse = initValue;
-
-        switchButton.switchEnabled(initValue);
-    }
-
-    Spinner spinner_gatewayModel = null;
-    boolean firstGatewayModelDialog = false;
-    int firstGatewaySelection = 0;
-    private void initGatewayModel()
-    {
-        try
-        {
-            int type = DETAIL_TYPE_USE_GATEWAY_MODEL_KIND;
-
-            final String typeName = this.getString(R.string.contoller_gateway_model_kind);
-            int gatewayKindCurrent = 0;
-
-            final List<String> itemList = new ArrayList<String>();
-            itemList.add(this.getString(R.string.do_not_used));
-            itemList.add(this.getString(R.string.contoller_gateway_model_kind_item_old));
-            itemList.add(this.getString(R.string.contoller_gateway_model_kind_item_new));
-
-            ArrayAdapter<String> spinnerAdapter;
-            spinnerAdapter = new ArrayAdapter<String>(this.getApplicationContext(), R.layout.spinner_item, itemList);
-
-            spinner_gatewayModel = (Spinner)this.findViewById(R.id.spinner_gateway_kind);
-            if(spinner_gatewayModel == null)
-            {
-                return;
-            }
-            spinner_gatewayModel.setAdapter(spinnerAdapter);
-            spinner_gatewayModel.setPrompt("게이트웨이모델 선택");
-            spinner_gatewayModel.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
-                @Override
-                public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
-                    //Toast.makeText(SetAddress.this,"선택된 아이템 : "+spinner_gatewayModel.getItemAtPosition(position),Toast.LENGTH_SHORT).show();
-
-                    String nowStr= itemList.get(position);
-
-                    if(firstGatewayModelDialog)
-                    {
-                        if(firstGatewaySelection != position)
-                        {
-                            GatewaySpinnerChangedDialog(spinner_gatewayModel, DETAIL_TYPE_USE_GATEWAY_MODEL_KIND, position,
-                                    itemList.get(position), typeName);
-
-                            //((TextView) view).setTextColor(Color.RED);
-                            //((TextView) parent.getChildAt(0)).setTextColor(Color.RED);
-                        }
-
-                    }
-                    firstGatewayModelDialog = true;
-                }
-
-                @Override
-                public void onNothingSelected(AdapterView<?> parent) {
-
-                }
-            });
-
-            gatewayKindCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-
-            List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_GATEWAY_MODEL_KIND);
-            if ((InfoList != null) && (InfoList.size() > 5)) {
-                if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
-                    String strType = InfoList.get(5);
-
-                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(strType)) {
-                        gatewayKindCurrent = 0;
-                    }
-                    else if (Const.CONTROLLER_GATEWAY_KIND_200.equals(strType)) {
-                        gatewayKindCurrent = 1;
-                    }
-                    else if (Const.CONTROLLER_GATEWAY_KIND_300.equals(strType)) {
-                        gatewayKindCurrent = 2;
-                    }
-                }
-                else if(Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3)))
-                {
-                    String strType = InfoList.get(5);
-
-                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(strType)) {
-                        gatewayKindCurrent = 0;
-                    }
-                }
-
-                firstGatewaySelection = gatewayKindCurrent;
-            }
-
-            spinner_gatewayModel.setSelection(gatewayKindCurrent);
-        }
-        catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-        }
-        catch(Exception e)
-        {
-            Log.e(TAG, "[initGatewayModel] - Exception !!!");
-            //e.printStackTrace();            
-            LogUtil.errorLogInfo("", TAG, e);
-        }
-    }
-
-    // open switchChangedDialog
-    public void GatewaySpinnerChangedDialog(final Spinner spinner, final int type, final int position,
-                                            final String itemName, final String controllerName )
-    {
-        mDialog = new DialogUtil(this);
-        String title = controllerName + " 변경";
-        String message = "[" + itemName + "]  으로 변경하시겠습니까?";
-        setFinishTimerReset();
-
-        DialogInterface.OnClickListener positiveListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        closeDialog();
-                        setFinishTimerReset();
-                        onItemChanged(type, position, itemName);
-                    }
-                };
-
-        DialogInterface.OnClickListener negativeListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        if (spinner != null)
-                        {
-                            spinner.setSelection(firstGatewaySelection);
-                        }
-                        dialog.dismiss();
-                        //closeDialog();
-                    }
-                };
-
-        mDialog.openCommonDialog(title, message, positiveListener, negativeListener);
-    }
-
-    public void DistributionSpinnerChangedDialog(final Spinner spinner, final int type, final int position,
-                                            final String itemName, final String controllerName )
-    {
-        mDialog = new DialogUtil(this);
-        String title = controllerName + " 변경";
-        String message = "[" + itemName + "]  으로 변경하시겠습니까?";
-        setFinishTimerReset();
-
-        DialogInterface.OnClickListener positiveListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        closeDialog();
-                        setFinishTimerReset();
-                        onItemChanged(type, position, itemName);
-                    }
-                };
-
-        DialogInterface.OnClickListener negativeListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        if (spinner != null)
-                        {
-                            spinner.setSelection(firstDistSelection);
-                        }
-                        dialog.dismiss();
-                    }
-                };
-
-        mDialog.openCommonDialog(title, message, positiveListener, negativeListener);
-    }
-
-    public void initUseDanjiConfig()
-    {
-        int type = DETAIL_TYPE_USE_DANJI_CONFIG;
-        String typeName = this.getString(R.string.detail_function_use_danji_config);
-
-        SwitchButton switchButton = (SwitchButton)this.findViewById(R.id.btn_switch_use_double_danji);
-        if(switchButton == null)
-        {
-            return;
-        }
-        switchButton.setSwitchButtonChangedListener(this, type, typeName);
-
-
-        List<String> listString = new ArrayList<String>();
-        listString.add(this.getString(R.string.set));
-        listString.add(this.getString(R.string.clear));
-
-        switchButton.setText(listString);
-
-        boolean initValue = mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DANJI_CONFIG);
-        DanjiSettingUse = initValue;
-
-        switchButton.switchEnabled(initValue);
-    }
-
-    // init initUseRentHome View
-    private void initUseRentHome() {
-        int type = DETAIL_TYPE_USE_RENT_HOME;
-        String typeName = this.getString(R.string.detail_function_use_rent_home);
-
-        SwitchButton switchButton = (SwitchButton)this.findViewById(R.id.btn_switch_use_rent_home);
-        if(switchButton == null)
-        {
-            return;
-        }
-        switchButton.setSwitchButtonChangedListener(this, type, typeName);
-
-
-        List<String> listString = new ArrayList<String>();
-        listString.add(this.getString(R.string.set));
-        listString.add(this.getString(R.string.clear));
-
-        switchButton.setText(listString);
-
-        boolean initValue = mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_RENT_HOME);
-        RentHomeSettingUse = initValue;
-
-        switchButton.switchEnabled(initValue);
-    }
-
-    // init initUseRentHome View
-
-    SwitchButton switchButton_DanjiRentHouse = null;
-    private void initUseDanjiRentHomeUse() {
-        int type = DETAIL_TYPE_USE_DANJI_RENT_HOME_USE;
-        String typeName = this.getString(R.string.detail_function_use_danji_set_rent_use);
-
-        switchButton_DanjiRentHouse = (SwitchButton)this.findViewById(R.id.btn_switch_use_danji_set_rent_use);
-        if(switchButton_DanjiRentHouse == null)
-        {
-            return;
-        }
-        switchButton_DanjiRentHouse.setSwitchButtonChangedListener(this, type, typeName);
-
-
-        List<String> listString = new ArrayList<String>();
-        listString.add(this.getString(R.string.set));
-        listString.add(this.getString(R.string.clear));
-
-        switchButton_DanjiRentHouse.setText(listString);
-
-        boolean initValue = mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DANJI_RENT_HOME_USE);
-
-        switchButton_DanjiRentHouse.switchEnabled(initValue);
-    }
-
-    Spinner spinner_escapeLadderSend = null;
-    boolean firstEscapeLadderDialog = false;
-    int firstEscapeLadderSelection = 0;
-    private void initEscapeLadderDownSend() {
-        try
-        {
-            int type = DETAIL_TYPE_USE_ESCAPE_LADDER_DOWN_SEND;
-
-            final String typeName = this.getString(R.string.detail_function_escapeladder_down_send);
-            int escapeLadderCurrent = 0;
-
-            final List<String> itemList = new ArrayList<String>();
-            itemList.add(this.getString(R.string.do_not_used));
-            itemList.add(this.getString(R.string.detail_function_escapeladder_down_send_upper));
-            itemList.add(this.getString(R.string.detail_function_escapeladder_down_send_below));
-
-            ArrayAdapter<String> spinnerAdapter;
-            spinnerAdapter = new ArrayAdapter<String>(this.getApplicationContext(), R.layout.spinner_item, itemList);
-
-            spinner_escapeLadderSend = (Spinner)this.findViewById(R.id.spinner_escapeladdersend_kind);
-            if(spinner_escapeLadderSend == null)
-            {
-                return;
-            }
-            spinner_escapeLadderSend.setAdapter(spinnerAdapter);
-            spinner_escapeLadderSend.setPrompt("피난사다리 전송 방향 선택");
-            spinner_escapeLadderSend.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
-                @Override
-                public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
-                    String nowStr= itemList.get(position);
-
-                    if(firstEscapeLadderDialog)
-                    {
-                        if(firstEscapeLadderSelection != position)
-                        {
-                            DistributionSpinnerChangedDialog(spinner_escapeLadderSend, DETAIL_TYPE_USE_ESCAPE_LADDER_DOWN_SEND, position,
-                                    itemList.get(position), typeName);
-                        }
-                    }
-                    firstEscapeLadderDialog = true;
-                }
-
-                @Override
-                public void onNothingSelected(AdapterView<?> parent) {
-
-                }
-            });
-
-            escapeLadderCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-
-            List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ESCAPELADDER_DOWN_SEND);
-            if ((InfoList != null) && (InfoList.size() > 5)) {
-                if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
-                    String strType = InfoList.get(5);
-
-                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(strType)) {
-                        escapeLadderCurrent = 0;
-                    }
-                    else if (Const.ESCAPE_LADDER_DOWN_SEND_UPPER.equals(strType)) {
-                        escapeLadderCurrent = 1;
-                    }
-                    else if (Const.ESCAPE_LADDER_DOWN_SEND_BELOW.equals(strType)) {
-                        escapeLadderCurrent = 2;
-                    }
-                }
-                else if(Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3)))
-                {
-                    String strType = InfoList.get(5);
-
-                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(strType)) {
-                        escapeLadderCurrent = 0;
-                    }
-                }
-
-                firstEscapeLadderSelection = escapeLadderCurrent;
-                Log.d(TAG, "[initEscapeLadderDownSend] firstEscapeLadderSelection [" + firstEscapeLadderSelection + "]");
-            }
-
-            Log.d(TAG, "[initEscapeLadderDownSend] escapeLadderCurrent [" + escapeLadderCurrent + "]");
-            spinner_escapeLadderSend.setSelection(escapeLadderCurrent);
-        }
-        catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-        }
-        catch(Exception e)
-        {
-            Log.e(TAG, "[initEscapeLadderDownSend] - Exception !!!");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
-        }
-    }
-
-    SwitchButton switchButton_SubwpdUse = null;
-    private void initSubWallpad() {
-        int type = DETAIL_TYPE_USE_SUBWPD_USE;
-        String typeName = this.getString(R.string.setting_subwpd_use);
-
-        switchButton_SubwpdUse = (SwitchButton)this.findViewById(R.id.btn_switch_dongho_subwpd);
-        if (switchButton_SubwpdUse == null) {
-            return;
-        }
-        switchButton_SubwpdUse.setSwitchButtonChangedListener(this, type, typeName);
-
-
-        List<String> listString = new ArrayList<String>();
-        listString.add(this.getString(R.string.set));
-        listString.add(this.getString(R.string.clear));
-
-        switchButton_SubwpdUse.setText(listString);
-
-        boolean initValue = mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SUBWALLPAD);
-
-        switchButton_SubwpdUse.switchEnabled(initValue);
-    }
-
-    // open switchChangedDialog
-    public void switchChangedDialog(final SwitchButton switchButton, final int type, final int position, final String itemName, final String controllerName) {
-
-        if (DEBUG) Log.d(TAG, "[switchChangedDialog] type : " + type +  ", position : " + position + " , itemName : " + itemName + " , controllerName : " + controllerName);
-
-        mDialog = new DialogUtil(this);
-        String title = controllerName + " 변경";
-        //String message = "개수를 " + String.valueOf(position) + " 으로 변경하시겠습니까?";
-        String message = "[" + itemName + "]  으로 변경하시겠습니까?";
-        setFinishTimerReset();
-
-        DialogInterface.OnClickListener positiveListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        closeDialog();
-                        setFinishTimerReset();
-                        onItemChanged(type, position, itemName);
-                    }
-                };
-
-        DialogInterface.OnClickListener negativeListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        if (switchButton != null)
-                            switchButton.switchEnabled(!switchButton.IsSet());
-
-                        closeDialog();
-                    }
-                };
-
-        mDialog.openCommonDialog(title, message, positiveListener, negativeListener);
-    }
-
-
-
-    @Override
-    public void onSwitchChanged(SwitchButton switchButton, boolean isSet, int type, Object object) {
-        String typeName = (String)object;
-        int idx = isSet ? 0 : 1;
-        String itemName = null;
-        List<String> itemList = switchButton.getText();
-        setFinishTimerReset();
-
-        if ((itemList != null) && (itemList.size() > 1)) {
-            itemName = itemList.get(idx);
-
-            if (DEBUG)   Log.d(TAG, "onSwitchChanged() itemName : " + itemName
-                    +  ", typeName : " + typeName + " , type : " + type
-            );
-        }
-
-        switchChangedDialog(switchButton, type, idx/*isSet*/, itemName, typeName);
-    }
-
-
-
-    // update item to DB
-    private void updateSetUsedToSubDevice(int type, final int position, final String itemName) {
-        if (DEBUG)  Log.d(TAG, "updateSetUsedToSubDevice() type : " + type
-                + ", position : " + position
-                + ", itemName : " + itemName
-        );
-        MainApplication.getApplication().setReboot();
-
-        String value = "";
-
-        if (itemName == null)
-            return;
-
-        switch (type) {
-            case DETAIL_TYPE_USE_INNER_MOTION_DETECTOR:
-            case DETAIL_TYPE_USE_OUTER_MOTION_DETECTOR:
-            case DETAIL_TYPE_USE_OUTER_MOTION_DETECTOR_TO_INNER_MOTION:
-            {
-                int i = 4;
-                boolean bDoUsed = false;
-
-                SwitchButton switchButton_1 = (SwitchButton)this.findViewById(R.id.btn_switch_use_inner_motion_detector);
-                SwitchButton switchButton_2 = (SwitchButton)this.findViewById(R.id.btn_switch_use_outer_motion_detector);
-                SwitchButton switchButton_3 = (SwitchButton)this.findViewById(R.id.btn_switch_use_outer_motion_detector_to_inner_motion);
-
-                if (switchButton_1.IsSet()
-                        || switchButton_2.IsSet()
-                        || switchButton_3.IsSet()
-                        )
-                {
-                    bDoUsed = true;
-                }
-
-
-                final String controllerName = mMainDatabaseManager.getSubDevID(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_MOTION_SETTING);
-                if (controllerName != null) {
-                    value = controllerName;
-                    if (bDoUsed == true) {
-                        String typeName = null;
-
-                        value += "("
-                                + Const.CONTROLLER_SETTING_DO_USED
-                                + ")"
-                        ;
-                    }
-                    else {
-                        value += "("
-                                + Const.CONTROLLER_SETTING_DO_NOT_USED
-                                + ")"
-                        ;
-                    }
-
-
-                    List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_MOTION_SETTING);
-                    if ((InfoList != null) && (InfoList.size() > 1)) {
-                        String deviceNo = InfoList.get(0);
-                        String circuitNo = InfoList.get(1);
-
-                        value = deviceNo
-                                + "("
-
-                                + circuitNo
-                                + ":"
-
-                                + value
-                        ;
-
-                        String typeName = "";
-                        if (type == DETAIL_TYPE_USE_INNER_MOTION_DETECTOR)
-                            typeName = Const.MOTION_SETTING_TYPE_USE_INNER_MOTION_DETECTOR;
-                        else if (type == DETAIL_TYPE_USE_OUTER_MOTION_DETECTOR)
-                            typeName = Const.MOTION_SETTING_TYPE_USE_OUTER_MOTION_DETECTOR;
-                        else if (type == DETAIL_TYPE_USE_OUTER_MOTION_DETECTOR_TO_INNER_MOTION)
-                            typeName = Const.MOTION_SETTING_TYPE_USE_OUTER_MOTION_DETECTOR_TO_INNER_MOTION;
-
-                        for (; i + 1 <InfoList.size(); i=i+2) {
-
-                            String setName = InfoList.get(i);
-                            String setValue = InfoList.get(i + 1);
-
-                            if (typeName.equals(setName)) {
-                                if (position == 0)
-                                    setValue = Const.CONTROLLER_SETTING_DO_USED;
-                                else
-                                    setValue = Const.CONTROLLER_SETTING_DO_NOT_USED;
-                            }
-
-
-                            value += setName
-                                    + "("
-                                    + setValue
-                                    + ")"
-                            ;
-                        }
-
-                        value += ")"
-                        ;
-
-                        mMainDatabaseManager.setSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_MOTION_SETTING, 0, value);
-                    }
-                }
-            }
-            break;
-
-            case DETAIL_TYPE_USE_WALLPAD_CAMERA:
-                mMainDatabaseManager.updateSetUsedToSubDeviceSwitchButtonOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_WALLPAD_CAMERA, position);
-                break;
-
-            case DETAIL_TYPE_USE_MULTI_SWITCH:
-                final String controllerName_multiSwitch = mMainDatabaseManager.getSubDevID(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LIGHT);
-                if (controllerName_multiSwitch != null) {
-                    value = controllerName_multiSwitch;
-                    String typeName = Const.LIGHT_CONTROLLER_TYPE_LIVING_ROOM;
-
-                    if (position == 0)
-                    {
-                        typeName = Const.LIGHT_CONTROLLER_TYPE_ROOMS;
-                    }
-                    else
-                    {
-                        typeName = Const.LIGHT_CONTROLLER_TYPE_LIVING_ROOM;
-                    }
-
-                    value += "("
-                            + Const.CONTROLLER_SETTING_DO_USED
-                            + ")"
-
-                            + Const.CONTROLLER_SETTING_TYPE
-                            + "("
-                            + typeName
-                            + ")"
-                    ;
-
-                    List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LIGHT);
-                    if ((InfoList != null) && (InfoList.size() > 1)) {
-                        String deviceNo = InfoList.get(0);
-                        String circuitNo = InfoList.get(1);
-
-                        value = deviceNo
-                                + "("
-
-                                + circuitNo
-                                + ":"
-
-                                + value
-
-                                + ")"
-                        ;
-
-                        mMainDatabaseManager.setSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LIGHT, 0, value);
-                    }
-                }
-                break;
-
-            case DETAIL_TYPE_USE_KCC_DIM_CTR:
-                mMainDatabaseManager.updateSetUsedToSubDeviceSwitchButtonOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DIMMING_KCC, position);
-                break;
-
-            case DETAIL_TYPE_USE_DISTRIBUTION_KIND:
-                final String controllerDistName = mMainDatabaseManager.getSubDevID(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DISTRIBUTION);
-                if (controllerDistName != null) {
-                    value = controllerDistName;
-                    if (position == 0) {
-                        value += "("
-                                + Const.CONTROLLER_SETTING_DO_NOT_USED
-                                + ")"
-                                + Const.CONTROLLER_SETTING_TYPE
-                                + "("
-                                + Const.CONTROLLER_SETTING_DO_NOT_USED
-                                + ")"
-                        ;
-                    }
-                    else {
-                        String typeName = null;
-
-                        if (itemName.equals(Const.CONTROLLER_SETTING_DO_NOT_USED))
-                            typeName = Const.CONTROLLER_SETTING_DO_NOT_USED;
-                        else if (itemName.equals(Const.CONTROLLER_DISTRIBUTION_KIND_SMART))
-                            typeName = Const.CONTROLLER_DISTRIBUTION_KIND_SMART;
-                        else if (itemName.equals(Const.CONTROLLER_DISTRIBUTION_KIND_KNX))
-                            typeName = Const.CONTROLLER_DISTRIBUTION_KIND_KNX;
-
-                        value += "("
-                                + Const.CONTROLLER_SETTING_DO_USED
-                                + ")"
-
-                                + Const.CONTROLLER_SETTING_TYPE
-                                + "("
-                                + typeName
-                                + ")"
-                        ;
-                    }
-
-
-                    List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DISTRIBUTION);
-                    if ((InfoList != null) && (InfoList.size() > 1)) {
-                        String deviceNo = InfoList.get(0);
-                        String circuitNo = InfoList.get(1);
-
-                        value = deviceNo
-                                + "("
-
-                                + circuitNo
-                                + ":"
-
-                                + value
-
-                                + ")"
-                        ;
-
-                        mMainDatabaseManager.setSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DISTRIBUTION, 0, value);
-                    }
-                }
-                break;
-
-            case DETAIL_TYPE_USE_ELECTRIC_RANGE:
-                if(position == 0) // 전기레인지 사용함 -> 가스 사용안함
-                {
-                    mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_GAS, 0);
-                }
-                mMainDatabaseManager.updateSetUsedToSubDeviceSwitchButtonOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ELECTRIC_RANGE, position);
-                break;
-
-            case DETAIL_TYPE_USE_ENERGY_DEVICES:
-                mMainDatabaseManager.updateSetUsedToSubDeviceSwitchButtonOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ENERGY_DEVICES, position);
-                break;
-
-            case DETAIL_TYPE_USE_SMART_KEY:
-
-                //mMainDatabaseManager.updateSetUsedToSubDeviceSwitchButtonOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SMART_KEY, position);
-                final String controllerName = mMainDatabaseManager.getSubDevID(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DOOR_CAMERA);
-                if (controllerName != null)
-                {
-                    value = controllerName;
-
-                    String typeName = Const.DOOR_CAMERA_TYPE_DEFAULT;
-                    if (position == 0)
-                    {
-                        typeName =  Const.DOOR_CAMERA_TYPE_SMART_KEY;
-                    }
-                    else
-                    {
-                        typeName =  Const.DOOR_CAMERA_TYPE_DEFAULT;
-                    }
-
-                    value += "("
-                            + Const.CONTROLLER_SETTING_DO_USED
-                            + ")"
-                            + "종류"
-                            + "("
-                            + typeName
-                            + ")"
-                    ;
-
-
-                    List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DOOR_CAMERA);
-                    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_DOOR_CAMERA, 0, value);
-                }
-                break;
-
-            case DETAIL_TYPE_USE_LIGHT_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT:
-                final String controllerName_intLight = mMainDatabaseManager.getSubDevID(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LIGHT);
-                if (controllerName_intLight != null)
-                {
-                    value = controllerName_intLight;
-
-                    String typeName = Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT;
-                    if (position == 0)
-                    {
-                        typeName =  Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT;
-                    }
-                    else
-                    {
-                        typeName =  Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_NORMAL;
-                    }
-
-                    value += "("
-                            + Const.CONTROLLER_SETTING_DO_USED
-                            + ")"
-                            + "종류"
-                            + "("
-                            + typeName
-                            + ")"
-                    ;
-
-
-                    List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LIGHT);
-                    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_LIGHT, 0, value);
-                }
-                break;
-
-            case DETAIL_TYPE_USE_DANJI_CONFIG:
-                eraseProc();
-                if(position == 0)
-                {
-                    DanjiSettingUse = true;
-                }
-                else
-                {
-                    DanjiSettingUse = false;
-                    mSel_Mode = DONG_HO_INPUT_STATE_DONG;
-
-                }
-                mMainDatabaseManager.updateSetUsedToSubDeviceSwitchButtonOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DANJI_CONFIG, position);
-                break;
-
-            case DETAIL_TYPE_USE_RENT_HOME:
-                if(position == 0)
-                {
-                    RentHomeSettingUse = true;
-                    mMainDatabaseManager.updateSetUsedToSubDeviceSwitchButtonOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DANJI_RENT_HOME_USE, position);
-                    if (switchButton_DanjiRentHouse != null)
-                    {
-                        switchButton_DanjiRentHouse.switchEnabled(true);
-                    }
-                }
-                else
-                {
-                    RentHomeSettingUse = false;
-                }
-                mMainDatabaseManager.updateSetUsedToSubDeviceSwitchButtonOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_RENT_HOME, position);
-                break;
-
-            case DETAIL_TYPE_USE_DANJI_RENT_HOME_USE:
-                mMainDatabaseManager.updateSetUsedToSubDeviceSwitchButtonOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DANJI_RENT_HOME_USE, position);
-                break;
-
-            case DETAIL_TYPE_USE_ESCAPE_LADDER_DOWN_SEND:
-            {
-                final String escapeLadderSend = mMainDatabaseManager.getSubDevID(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ESCAPELADDER_DOWN_SEND);
-                if (escapeLadderSend != null) {
-                    value = escapeLadderSend;
-                    if (position == 0) {
-                        value += "("
-                                + Const.CONTROLLER_SETTING_DO_NOT_USED
-                                + ")"
-                                + Const.CONTROLLER_SETTING_TYPE
-                                + "("
-                                + Const.CONTROLLER_SETTING_DO_NOT_USED
-                                + ")"
-                        ;
-                    }
-                    else {
-                        String typeName = null;
-
-                        if (itemName.equals(Const.ESCAPE_LADDER_DOWN_SEND_UPPER))
-                            typeName = Const.ESCAPE_LADDER_DOWN_SEND_UPPER;
-                        else if (itemName.equals(Const.ESCAPE_LADDER_DOWN_SEND_BELOW))
-                            typeName = Const.ESCAPE_LADDER_DOWN_SEND_BELOW;
-
-                        value += "("
-                                + Const.CONTROLLER_SETTING_DO_USED
-                                + ")"
-
-                                + Const.CONTROLLER_SETTING_TYPE
-                                + "("
-                                + typeName
-                                + ")"
-                        ;
-                    }
-
-                    List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ESCAPELADDER_DOWN_SEND);
-                    if ((InfoList != null) && (InfoList.size() > 1)) {
-                        String deviceNo = InfoList.get(0);
-                        String circuitNo = InfoList.get(1);
-
-                        value = deviceNo
-                                + "("
-
-                                + circuitNo
-                                + ":"
-
-                                + value
-
-                                + ")"
-                        ;
-
-                        mMainDatabaseManager.setSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ESCAPELADDER_DOWN_SEND, 0, value);
-                    }
-                }
-            }
-            break;
-
-            case DETAIL_TYPE_USE_GATEWAY_MODEL_KIND:
-            {
-                final String controllerGatewayName = mMainDatabaseManager.getSubDevID(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_GATEWAY_MODEL_KIND);
-                if (controllerGatewayName != null) {
-                    value = controllerGatewayName;
-                    if (position == 0) {
-                        value += "("
-                                + Const.CONTROLLER_SETTING_DO_NOT_USED
-                                + ")"
-                                + Const.CONTROLLER_SETTING_TYPE
-                                + "("
-                                + Const.CONTROLLER_SETTING_DO_NOT_USED
-                                + ")"
-                        ;
-                    }
-                    else {
-                        String typeName = null;
-
-                        if (itemName.equals(Const.CONTROLLER_SETTING_DO_NOT_USED))
-                            typeName = Const.CONTROLLER_SETTING_DO_NOT_USED;
-                        else if (itemName.equals(Const.CONTROLLER_GATEWAY_KIND_200))
-                            typeName = Const.CONTROLLER_GATEWAY_KIND_200;
-                        else if (itemName.equals(Const.CONTROLLER_GATEWAY_KIND_300))
-                            typeName = Const.CONTROLLER_GATEWAY_KIND_300;
-
-                        value += "("
-                                + Const.CONTROLLER_SETTING_DO_USED
-                                + ")"
-
-                                + Const.CONTROLLER_SETTING_TYPE
-                                + "("
-                                + typeName
-                                + ")"
-                        ;
-                    }
-
-
-                    List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_GATEWAY_MODEL_KIND);
-                    if ((InfoList != null) && (InfoList.size() > 1)) {
-                        String deviceNo = InfoList.get(0);
-                        String circuitNo = InfoList.get(1);
-
-                        value = deviceNo
-                                + "("
-
-                                + circuitNo
-                                + ":"
-
-                                + value
-
-                                + ")"
-                        ;
-
-                        mMainDatabaseManager.setSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_GATEWAY_MODEL_KIND, 0, value);
-                    }
-                }
-            }
-            break;
-
-            case DETAIL_TYPE_USE_SUBWPD_USE:
-                mMainDatabaseManager.updateSetUsedToSubDeviceSwitchButtonOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SUBWALLPAD, position);
-                if (position == 0) {
-                    // 서브월패드
-                    wallpaddbmgr mwallpaddbmgr = new wallpaddbmgr(this);
-                    mwallpaddbmgr.DeleteTableInst(wallpaddbmgr.WidgetTBL);
-                    mwallpaddbmgr.setWidgetforSubwallpad();
-                    mwallpaddbmgr.closeDB();
-                }
-                else if (position == 1) {
-                    // 메인월패드
-                    wallpaddbmgr mwallpaddbmgr = new wallpaddbmgr(this);
-                    mwallpaddbmgr.DeleteTableInst(wallpaddbmgr.WidgetTBL);
-                    mwallpaddbmgr.initWidgetData();
-                    mwallpaddbmgr.closeDB();
-                }
-                break;
-
-            default:
-                break;
-        }
-    }
-
-
-    // item changed callback
-    public void onItemChanged(final int type, final int position, final String itemName) {
-
-        if (DEBUG)  Log.d(TAG, "onItemChanged() type : " + type
-                + ", position : " + position
-                + ", itemName : " + itemName
-        );
-
-        MainApplication.getApplication().setReboot();
-
-        switch (type) {
-            case DETAIL_TYPE_USE_INNER_MOTION_DETECTOR:
-                updateSetUsedToSubDevice(type, position, itemName);
-                break;
-
-            case DETAIL_TYPE_USE_OUTER_MOTION_DETECTOR:
-                updateSetUsedToSubDevice(type, position, itemName);
-                break;
-
-            case DETAIL_TYPE_USE_OUTER_MOTION_DETECTOR_TO_INNER_MOTION:
-                updateSetUsedToSubDevice(type, position, itemName);
-                break;
-
-            case DETAIL_TYPE_USE_WALLPAD_CAMERA:
-                updateSetUsedToSubDevice(type, position, itemName);
-                break;
-
-            case DETAIL_TYPE_USE_MULTI_SWITCH:
-                updateSetUsedToSubDevice(type, position, itemName);
-                break;
-
-
-            case DETAIL_TYPE_USE_ENERGY_DEVICES:
-            case DETAIL_TYPE_USE_SMART_KEY:
-                updateSetUsedToSubDevice(type, position, itemName);
-                break;
-
-            case DETAIL_TYPE_USE_LIGHT_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT:
-                updateSetUsedToSubDevice(type, position, itemName);
-                break;
-
-            case DETAIL_TYPE_USE_DANJI_CONFIG:
-                updateSetUsedToSubDevice(type, position, itemName);
-                break;
-
-            case DETAIL_TYPE_USE_RENT_HOME:
-            case DETAIL_TYPE_USE_DANJI_RENT_HOME_USE:
-            case DETAIL_TYPE_USE_KCC_DIM_CTR:
-            case DETAIL_TYPE_USE_DISTRIBUTION_KIND:
-            case DETAIL_TYPE_USE_GATEWAY_MODEL_KIND:
-            case DETAIL_TYPE_USE_ELECTRIC_RANGE:
-            case DETAIL_TYPE_USE_ESCAPE_LADDER_DOWN_SEND:
-            case DETAIL_TYPE_USE_SUBWPD_USE:
-                updateSetUsedToSubDevice(type, position, itemName);
-                break;
-
-            default:
-                break;
-        }
-    }
-
-
-
-
-    public String getAppVersion()
-    {
-        String version;
-        try {
-            PackageInfo i =  this.getPackageManager().getPackageInfo(this.getPackageName(), 0);
-            version = i.versionName;
-        } catch(NameNotFoundException e) { return null; }
-
-        return version;
-    }
-
-    public void AppVersionLogOut()
-    {
-        Log.i("Version", "<><><><>  Applications   Version = [" + getAppVersion() + "] " + "<><><><>");
-//        Version.LogOut();  // WallPadSupport 버전정보 출력 (사용않할시 주석처리)
-    }
-
-    /**
-     * 자동종료 타이머 생성 (생성자)<br>
-     * 엑티비티가 자동종료를 사용한다면 본메소드를 사용한다.<br>
-     *
-     * @param nFinishTime - 자동종료 시간 (단위 : 초)
-     * @reutrn true : 성공, false : 실패
-     * <br><br>
-     * @Example
-     * <pre class="prettyprint">
-     * super.setFinishTimerCreate(30);      // 자동종료 타이머 30초 설정
-     * </pre>
-     */
-    protected boolean setFinishTimerCreate(int nFinishTime)
-    {
-        Log.d(TAG, "setFinishTimerStart - nFinishTime : " + nFinishTime + " Sec");
-
-        mFinishTime = nFinishTime;
-        if(nFinishTime <= 0)
-        {
-            Log.e(TAG, "setFinishTimerCreate - param : nFinishTime - Out of range !!! (" + nFinishTime + ")");
-            mFinishTimerEnable = false;
-            return false;
-        }
-
-        if(mFinishTimer != null) mFinishTimer.cancel();
-        mFinishTimer = new CountDownTimer( (long)(mFinishTime * 1000), 1000) {
-            @Override
-            public void onFinish() {
-                Log.d(TAG, "FinishTimer - onFinish !!!");
-
-                if(DongHoInfo_NONE == true) //동호 정보가 설정되지 않은 경우는 20분 후 LCD Normal ON
-                {
-                    //PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
-                    //pm.userActivity(1, true);
-                    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
-                }
-                else
-                {
-                    finish();
-                }
-
-            }
-
-            @Override
-            public void onTick(long arg0) {
-                long RemainingTime = (long)(arg0/1000);
-                if(RemainingTime <= 10)
-                {
-                    Log.d(TAG, "FinishTimer - onTick (" + RemainingTime + " sec)");
-                }
-            }
-        };
-
-        mFinishTimer.cancel();
-        mFinishTimer.start();
-
-        mFinishTimerEnable = true;
-        return true;
-    }
-
-    /**
-     * 자동종료 타이머 리셋<br>
-     * 본 메소드는 {@link #setFinishTimerCreate} 를 통하여 생성된<br>
-     * 자동종료 타이머를 설정된 시간으로 리셋 시킨다.<br>
-     * ※ 특별한 경우가 아니라면 본 클래스에서 자동으로 조정하므로 사용할 필요가 없다.<br>
-     *
-     * @reutrn true : 성공, false : 실패
-     * <br><br>
-     * @Example
-     * <pre class="prettyprint">
-     * super.setFinishTimerReset();      // 자동종료 타이머 리셋
-     * </pre>
-     */
-    protected static boolean setFinishTimerReset()
-    {
-        if(mFinishTimerEnable)
-        {
-            if(mFinishTimer != null)
-            {
-                mFinishTimer.cancel();
-                mFinishTimer.start();
-            }
-            //Log.d(TAG, "FinishTimer - setFinishTimerReset !!!");
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * 자동종료 타이머 삭제<br>
-     * 본 메소드는 {@link #setFinishTimerCreate} 를 통하여 생성된<br>
-     * 자동종료 타이머를 삭제시킨다.<br>
-     * ※ 삭제된 후에는 다시 사용할 경우에는 {@link #setFinishTimerCreate} 를 사용하여 재 생성한다.<br>
-     * @reutrn true : 성공, false : 실패
-     * <br><br>
-     * @Example
-     * <pre class="prettyprint">
-     * super.setFinishTimerDestroy();      // 자동종료 타이머 삭제
-     * </pre>
-     */
-    protected boolean setFinishTimerDestroy()
-    {
-        mFinishTimerEnable = false;
-        if(mFinishTimer != null)
-        {
-            Log.d(TAG, "setFinishTimerDestroy");
-            mFinishTimer.cancel();
-            mFinishTimer = null;
-            return true;
-        }
-        return false;
-    }
-}
-
-
+package com.artncore.managersetting.ui.activities;
+
+import android.app.Activity;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager.NameNotFoundException;
+import android.net.ethernet.EthernetDevInfo;
+import android.net.ethernet.EthernetManager;
+import android.os.Bundle;
+import android.os.CountDownTimer;
+import android.util.Log;
+import android.view.View;
+import android.view.WindowManager;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.Spinner;
+import android.widget.TextView;
+
+import com.artncore.WallPadDataMgr.WallpadDeviceSet;
+import com.artncore.WallPadDataMgr.WallpadScheduleData;
+import com.artncore.WallPadDataMgr.WallpadStatusData;
+import com.artncore.WallPadDataMgr.wallpaddbmgr;
+import com.artncore.WallPadDataMgr.wallpaddbmgr.AddressSet;
+import com.artncore.WallPadDataMgr.wallpaddbmgr.AddressSetBackup;
+import com.artncore.deviceinterface.WallPadInterface;
+import com.artncore.managersetting.MainApplication;
+import com.artncore.managersetting.R;
+import com.artncore.managersetting.dao.MainDatabaseManager;
+import com.artncore.managersetting.domain.Const;
+import com.artncore.managersetting.ui.SwitchButton;
+import com.artncore.managersetting.util.DialogUtil;
+import com.artncore.managersetting.util.StringUtil;
+
+import java.io.BufferedWriter;
+import java.io.FileOutputStream;
+import java.io.OutputStreamWriter;
+import java.util.ArrayList;
+import java.util.List;
+
+import kr.co.icontrols.a20ioctl.A20IOInterface;
+import kr.co.icontrols.v40ioctl.V40IF;
+import kr.co.icontrols.wallpadsupport.Version;
+import kr.co.icontrols.wallpadsupport.WpadScale;
+import kr.co.icontrols.wallpadsupport.WpadSound;
+import kr.co.icontrols.wallpadsupport.WpadSound.SND;
+
+public class SetAddress extends Activity
+        implements SwitchButton.SwitchButtonChangedListener {
+
+    private static final String TAG = "SetAddress";
+
+    private final boolean DEBUG = true;
+
+    private final int DONG_HO_INPUT_STATE_DONG = 0;
+    private final int DONG_HO_INPUT_STATE_HO = 1;
+    private final int DONG_HO_INPUT_STATE_FINISH = 2;
+
+
+    public final int DETAIL_TYPE_BASE =       Const.CONTROLLER_TYPE_BASE;
+    public final int DETAIL_TYPE_USE_INNER_MOTION_DETECTOR =                    DETAIL_TYPE_BASE + 15;
+    public final int DETAIL_TYPE_USE_OUTER_MOTION_DETECTOR =                    DETAIL_TYPE_BASE + 16;
+    public final int DETAIL_TYPE_USE_OUTER_MOTION_DETECTOR_TO_INNER_MOTION =    DETAIL_TYPE_BASE + 17;
+    public final int DETAIL_TYPE_USE_WALLPAD_CAMERA =                           DETAIL_TYPE_BASE + 18;
+
+    public final int DETAIL_TYPE_USE_ENERGY_DEVICES =                           DETAIL_TYPE_BASE + 19;
+    public final int DETAIL_TYPE_USE_SMART_KEY =                                DETAIL_TYPE_BASE + 20;
+
+    public final int DETAIL_TYPE_USE_MULTI_SWITCH =                             DETAIL_TYPE_BASE + 21;
+    public final int DETAIL_TYPE_USE_LIGHT_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT =   DETAIL_TYPE_BASE + 22;
+    public final int DETAIL_TYPE_USE_DANJI_CONFIG =                             DETAIL_TYPE_BASE + 23;
+    public final int DETAIL_TYPE_USE_RENT_HOME =                                DETAIL_TYPE_BASE + 24;
+    public final int DETAIL_TYPE_USE_DANJI_RENT_HOME_USE =                      DETAIL_TYPE_BASE + 25;
+    public final int DETAIL_TYPE_USE_KCC_DIM_CTR =                              DETAIL_TYPE_BASE + 26;
+    public final int DETAIL_TYPE_USE_DISTRIBUTION_KIND =                        DETAIL_TYPE_BASE + 27;
+    public final int DETAIL_TYPE_USE_GATEWAY_MODEL_KIND =               		DETAIL_TYPE_BASE + 28;
+    public final int DETAIL_TYPE_USE_ELECTRIC_RANGE =               		    DETAIL_TYPE_BASE + 29;
+    public final int DETAIL_TYPE_USE_ESCAPE_LADDER_DOWN_RECV =                  DETAIL_TYPE_BASE + 30;
+    public final int DETAIL_TYPE_USE_SUBWPD_USE =                  				DETAIL_TYPE_BASE + 31;
+
+    private MainDatabaseManager mMainDatabaseManager;
+
+    private String mDong;
+    private String mHo;
+    private String mIPAddress;
+    private WpadSound mWpadSound;
+
+    private byte mSel_Mode = DONG_HO_INPUT_STATE_DONG;
+
+    private static boolean mFinishTimerEnable = false;
+    private static CountDownTimer mFinishTimer = null;
+    private int mFinishTime = 0;
+
+    private boolean DanjiSettingUse = false;
+    private boolean KccDimCtrUse = false;
+    private boolean ElectricRangeUse = false;
+    private boolean RentHomeSettingUse = false;
+    private boolean DongHoInfo_NONE = false; //동호정보가 입력되지 않았으면 true, 입력되었으면 false
+
+    //[Model]
+    private int ModelType = Version.getModelType();
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        AppVersionLogOut();   // 버전정보 로그출력
+
+        WpadScale.Initializing(this);
+
+        if (ModelType == Version.MODEL_TYPE.IHN_1020GL) {
+            setContentView(R.layout.activity_set_address_gle);
+        }
+        else {
+            if ((WpadScale.getWidthPixels() == 800) && (WpadScale.getHeightPixels() == 480)) {
+                setContentView(R.layout.activity_set_address_800x480);
+            }
+            else {
+                if (ModelType == Version.MODEL_TYPE.IHN_1030_D) {
+                    setContentView(R.layout.activity_set_address_a20);
+                }
+                else if (ModelType == Version.MODEL_TYPE.IHN_1020B_C) {
+                    setContentView(R.layout.activity_set_address_a20_1280x800);
+                }
+                else if (ModelType == Version.MODEL_TYPE.IHN_1010 || ModelType == Version.MODEL_TYPE.IHN_1010_I) {
+                    setContentView(R.layout.activity_set_address_1010);
+                }
+                else if (ModelType == Version.MODEL_TYPE.IHN_D101 || ModelType == Version.MODEL_TYPE.IHN_D101_I) {
+                    setContentView(R.layout.activity_set_address_d101);
+                }
+                else if (ModelType == Version.MODEL_TYPE.IHN_D101K || ModelType == Version.MODEL_TYPE.IHN_D101K_I) {
+                    setContentView(R.layout.activity_set_address_d101k);
+                }
+                else if (ModelType == Version.MODEL_TYPE.IHN_1010GL || ModelType == Version.MODEL_TYPE.IHN_1010GL_I) {
+                    setContentView(R.layout.activity_set_address_d101);
+                }
+                else if (ModelType == Version.MODEL_TYPE.IHN_1030_I) {
+                    setContentView(R.layout.activity_set_address_1030);
+                }
+                else if (ModelType == Version.MODEL_TYPE.IHN_1040 || ModelType == Version.MODEL_TYPE.IHN_1040_I) {
+                    setContentView(R.layout.activity_set_address_1040);
+                }
+                else if (ModelType == Version.MODEL_TYPE.IHN_1050 || ModelType == Version.MODEL_TYPE.IHN_1050_I) {
+                    setContentView(R.layout.activity_set_address_1050);
+                }
+                else if (ModelType == Version.MODEL_TYPE.IHN_T1010 || ModelType == Version.MODEL_TYPE.IHN_T1010_I) {
+                    setContentView(R.layout.activity_set_address_t1010);
+                }
+                else if (ModelType == Version.MODEL_TYPE.IHN_HS101 || ModelType == Version.MODEL_TYPE.IHN_HS101_I) {
+                    setContentView(R.layout.activity_set_address_hs101);
+                }
+                else if (ModelType == Version.MODEL_TYPE.IHN_1050DW_I) {
+                    setContentView(R.layout.activity_set_address_1050);
+                }
+                else if (ModelType == Version.MODEL_TYPE.IHN_1020B_I) {
+                    setContentView(R.layout.activity_set_address_1020b_i);
+                }
+                else if (ModelType == Version.MODEL_TYPE.IHN_1303_I) {
+                    setContentView(R.layout.activity_set_address_1303);
+                }
+                else {
+                    setContentView(R.layout.activity_set_address);
+                }
+            }
+        }
+
+        mMainDatabaseManager = MainActivity.getMainDatabaseManager();
+
+        if (mMainDatabaseManager == null) {
+            if (DEBUG)  Log.d(TAG, "onCreate() (mMainDatabaseManager == null)");
+        }
+        else {
+            if (DEBUG)  Log.d(TAG, "onCreate() (mMainDatabaseManager != null)");
+        }
+
+        if (mMainDatabaseManager == null) {
+            DongHoInfo_NONE = true;
+            mMainDatabaseManager = new MainDatabaseManager(this, null, null);
+            setFinishTimerCreate(Const.FINISH_TIME_SEC_20MIN);
+        }
+        else {
+            setFinishTimerCreate(Const.FINISH_TIME_SEC);
+        }
+
+        mWpadSound = new WpadSound(this);
+        mDong = "";
+        mHo = "";
+
+        Button btnNum1 = (Button) findViewById(R.id.num1);
+        Button btnNum2 = (Button) findViewById(R.id.num2);
+        Button btnNum3 = (Button) findViewById(R.id.num3);
+        Button btnNum4 = (Button) findViewById(R.id.num4);
+        Button btnNum5 = (Button) findViewById(R.id.num5);
+        Button btnNum6 = (Button) findViewById(R.id.num6);
+        Button btnNum7 = (Button) findViewById(R.id.num7);
+        Button btnNum8 = (Button) findViewById(R.id.num8);
+        Button btnNum9 = (Button) findViewById(R.id.num9);
+        Button btnNum0 = (Button) findViewById(R.id.num0);
+
+        Button btnDong = (Button) findViewById(R.id.btn_dong);
+        Button btnHo = (Button) findViewById(R.id.btn_ho);
+
+        btnNum1.setSoundEffectsEnabled(false);
+        btnNum2.setSoundEffectsEnabled(false);
+        btnNum3.setSoundEffectsEnabled(false);
+        btnNum4.setSoundEffectsEnabled(false);
+        btnNum5.setSoundEffectsEnabled(false);
+        btnNum6.setSoundEffectsEnabled(false);
+        btnNum7.setSoundEffectsEnabled(false);
+        btnNum8.setSoundEffectsEnabled(false);
+        btnNum9.setSoundEffectsEnabled(false);
+        btnNum0.setSoundEffectsEnabled(false);
+
+        btnDong.setSoundEffectsEnabled(false);
+        btnHo.setSoundEffectsEnabled(false);
+
+        if (ModelType == Version.MODEL_TYPE.IHN_1020GL) {
+            initView_GLE();
+        }
+        else if (ModelType == Version.MODEL_TYPE.IHN_1010 || ModelType == Version.MODEL_TYPE.IHN_1010_I) {
+            initView_1010();
+        }
+        else if (ModelType == Version.MODEL_TYPE.IHN_D101 || ModelType == Version.MODEL_TYPE.IHN_D101K || ModelType == Version.MODEL_TYPE.IHN_1010GL
+                || ModelType == Version.MODEL_TYPE.IHN_D101_I || ModelType == Version.MODEL_TYPE.IHN_D101K_I || ModelType == Version.MODEL_TYPE.IHN_1010GL_I)
+        {
+            initView_D101();
+        }
+        /*else if (ModelType == Version.MODEL_TYPE.IHN_1010GL) {
+            initView_1010GL();
+        }*/
+        else if (ModelType == Version.MODEL_TYPE.IHN_1030_I) {
+            initView_1030();
+        }
+        else if (ModelType == Version.MODEL_TYPE.IHN_1040 || ModelType == Version.MODEL_TYPE.IHN_1040_I) {
+            initView_1040();
+        }
+        else if (ModelType == Version.MODEL_TYPE.IHN_1050 || ModelType == Version.MODEL_TYPE.IHN_1050_I) {
+            initView_1050();
+        }
+        else if (ModelType == Version.MODEL_TYPE.IHN_T1010 || ModelType == Version.MODEL_TYPE.IHN_T1010_I) {
+            initView_T1010();
+        }
+        else if (ModelType == Version.MODEL_TYPE.IHN_HS101 || ModelType == Version.MODEL_TYPE.IHN_HS101_I) {
+            initView_HS101();
+        }
+        else if (ModelType == Version.MODEL_TYPE.IHN_1050DW_I) {
+            initView_1050();
+        }
+        else if (ModelType == Version.MODEL_TYPE.IHN_1020B_I) {
+            initView_1020B_I();
+        }
+        else if (ModelType == Version.MODEL_TYPE.IHN_1303_I) {
+            initView_1303();
+        }
+        /*else if (ModelType == Version.MODEL_TYPE.IHN_D101K) {
+            initView_D101K();
+        }*/
+        else {
+            initView_SA();
+        }
+    }
+
+
+    @Override
+    public void onResume() {
+        if (DEBUG)  Log.d(TAG, "--onResume ");
+
+        super.onResume();
+
+        //PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
+        //pm.userActivity(2, true);
+        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
+    }
+
+
+    @Override
+    public void onPause() {
+        if (DEBUG)  Log.d(TAG, "--onPause ");
+
+        super.onPause();
+
+        closeDialog();
+
+        //PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
+        //pm.userActivity(1, true);
+
+        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
+    }
+
+
+    @Override
+    protected void onDestroy() {
+        if (DEBUG)  Log.d(TAG, "onDestroy() ");
+        setFinishTimerDestroy();
+        super.onDestroy();
+
+        mWpadSound.Release();
+    }
+
+
+    // init View
+    private void initView_SA() {
+        initUseInnerMotionDetector();
+        initUseOuterMotionDetector();
+        initUseInnerMotionDetectorToOuterMotion();
+        initUseWallpadCamera();
+
+        initUseMultiSwitch();
+        initUseDanjiConfig();
+        initUseRentHome();
+        initUseDanjiRentHomeUse();
+        initEscapeLadderDownRecv();
+    }
+
+    private void initView_1010() {
+        initUseInnerMotionDetector();
+        initUseOuterMotionDetector();
+        initUseInnerMotionDetectorToOuterMotion();
+        initUseWallpadCamera();
+        initUseMultiSwitch();
+        initUseKccDimCtr();
+        initUseDanjiConfig();
+        initUseRentHome();
+        initUseDanjiRentHomeUse();
+        initEscapeLadderDownRecv();
+        initSubWallpad();
+    }
+
+    private void initView_D101() {
+        initUseInnerMotionDetector();
+        initUseOuterMotionDetector();
+        initUseInnerMotionDetectorToOuterMotion();
+        initDistributionModel();
+        initUseElectricRange();
+        initGatewayModel();
+
+        //initUseWallpadCamera();
+        //initUseMultiSwitch();
+        //initUseKccDimCtr();
+
+        initUseDanjiConfig();
+        initUseRentHome();
+        initUseDanjiRentHomeUse();
+        initEscapeLadderDownRecv();
+    }
+
+    private void initView_D101K() {
+        initUseInnerMotionDetector();
+        initUseOuterMotionDetector();
+        initUseInnerMotionDetectorToOuterMotion();
+        initDistributionModel();
+        initUseElectricRange();
+        initGatewayModel();
+
+        //initUseWallpadCamera();
+        //initUseMultiSwitch();
+        //initUseKccDimCtr();
+
+        initUseDanjiConfig();
+        initUseRentHome();
+        initUseDanjiRentHomeUse();
+        initEscapeLadderDownRecv();
+    }
+
+    private void initView_1010GL() {
+        initUseInnerMotionDetector();
+        initUseOuterMotionDetector();
+        initUseInnerMotionDetectorToOuterMotion();
+        initGatewayModel();
+
+        //initUseWallpadCamera();
+        //initUseMultiSwitch();
+        //initUseKccDimCtr();
+
+        initUseDanjiConfig();
+        initUseRentHome();
+        initUseDanjiRentHomeUse();
+        initEscapeLadderDownRecv();
+    }
+
+    private void initView_1030() {
+        initUseInnerMotionDetector();
+        initUseOuterMotionDetector();
+        initUseInnerMotionDetectorToOuterMotion();
+        initUseWallpadCamera();
+        initUseMultiSwitch();
+        initUseKccDimCtr();
+        initUseDanjiConfig();
+        initUseRentHome();
+        initUseDanjiRentHomeUse();
+        initEscapeLadderDownRecv();
+    }
+
+    private void initView_1040() {
+        initUseInnerMotionDetector();
+        initUseOuterMotionDetector();
+        initUseInnerMotionDetectorToOuterMotion();
+        initUseWallpadCamera();
+        initUseMultiSwitch();
+        initUseKccDimCtr();
+        initUseDanjiConfig();
+        initUseRentHome();
+        initUseDanjiRentHomeUse();
+        initEscapeLadderDownRecv();
+    }
+
+    private void initView_1050() {
+        initUseInnerMotionDetector();
+        initUseOuterMotionDetector();
+        initUseInnerMotionDetectorToOuterMotion();
+        initUseWallpadCamera();
+        initUseMultiSwitch();
+        initUseKccDimCtr();
+        initUseDanjiConfig();
+        initUseRentHome();
+        initUseDanjiRentHomeUse();
+        initEscapeLadderDownRecv();
+    }
+
+    private void initView_T1010() {
+        initUseInnerMotionDetector();
+        initUseOuterMotionDetector();
+        initUseInnerMotionDetectorToOuterMotion();
+        initUseWallpadCamera();
+        initUseMultiSwitch();
+        initUseKccDimCtr();
+        initUseDanjiConfig();
+        initUseRentHome();
+        initUseDanjiRentHomeUse();
+        initEscapeLadderDownRecv();
+    }
+
+    private void initView_HS101() {
+        initUseInnerMotionDetector();
+        initUseOuterMotionDetector();
+        initUseInnerMotionDetectorToOuterMotion();
+        initUseWallpadCamera();
+        initUseMultiSwitch();
+        initUseKccDimCtr();
+        initUseDanjiConfig();
+        initUseRentHome();
+        initUseDanjiRentHomeUse();
+        initEscapeLadderDownRecv();
+    }
+
+    // init View
+    private void initView_GLE() {
+        initUseInnerEnergyDevices();
+        initUseInnerSmartKey();
+        initUseInnerAllLightPlusType();
+
+        initUseRentHome();
+        initUseDanjiRentHomeUse();
+    }
+
+    private void initView_1020B_I() {
+        initUseInnerMotionDetector();
+        initUseOuterMotionDetector();
+        initUseInnerMotionDetectorToOuterMotion();
+        initUseWallpadCamera();
+        initUseMultiSwitch();
+        initUseKccDimCtr();
+        initUseDanjiConfig();
+        initUseRentHome();
+        initUseDanjiRentHomeUse();
+        initEscapeLadderDownRecv();
+    }
+
+    private void initView_1303() {
+        initUseInnerMotionDetector();
+        initUseOuterMotionDetector();
+        initUseInnerMotionDetectorToOuterMotion();
+        initUseWallpadCamera();
+        initUseMultiSwitch();
+        initUseKccDimCtr();
+        initUseDanjiConfig();
+        initUseRentHome();
+        initUseDanjiRentHomeUse();
+        initEscapeLadderDownRecv();
+        initSubWallpad();
+    }
+
+
+
+    // update DongHo
+    private void updateDongHo() {
+        StringBuilder dongHoBuffer = new StringBuilder();
+
+        if (mSel_Mode >= DONG_HO_INPUT_STATE_DONG) {
+            dongHoBuffer.append(mDong);
+        }
+
+        if (mSel_Mode >= DONG_HO_INPUT_STATE_HO) {
+            dongHoBuffer.append(getString(R.string.dong));
+            dongHoBuffer.append("  ");
+            dongHoBuffer.append(mHo);
+        }
+
+        if (mSel_Mode == DONG_HO_INPUT_STATE_FINISH) {
+            dongHoBuffer.append(getString(R.string.ho));
+        }
+
+        TextView tvDongHo = (TextView) findViewById(R.id.tv_dongho);
+        tvDongHo.setText(dongHoBuffer.toString());
+    }
+
+
+
+    // add Dong
+    private void addDong(int dong) {
+        if (mDong.length() == 4) return;
+
+        mDong += dong;
+
+        updateDongHo();
+    }
+
+
+    // add Ho
+    private void addHo(int ho) {
+        if (mHo.length() == 4) return;
+
+        mHo += ho;
+
+        updateDongHo();
+    }
+
+    // 현재 입력 mode에 따라, 입력된 id를 추가
+    private void numkeyProc(int id) {
+        if (mSel_Mode == DONG_HO_INPUT_STATE_DONG) {
+            addDong(id);
+        }
+        else if (mSel_Mode == DONG_HO_INPUT_STATE_HO) {
+            addHo(id);
+        }
+    }
+
+
+    // 입력된 동/호를 clear
+    private void eraseProc() {
+        mDong = "";
+        mHo = "";
+
+        mSel_Mode = DONG_HO_INPUT_STATE_DONG;
+
+        updateDongHo();
+    }
+
+
+    // 입력 mode 설정하고, TextView를 update
+    private void set_mode(byte mode) {
+        if (mSel_Mode == mode) return;
+
+        mSel_Mode = mode;
+
+        updateDongHo();
+    }
+
+
+    // Button Click listener
+    public void mOnClick(View v) {
+        int getnum = -1;
+
+        setFinishTimerReset();
+        switch(v.getId()) {
+            case R.id.num1: getnum = 1;
+                mWpadSound.Play(SND.number.NUM1);
+                break;
+
+            case R.id.num2: getnum = 2;
+                mWpadSound.Play(SND.number.NUM2);
+                break;
+
+            case R.id.num3: getnum = 3;
+                mWpadSound.Play(SND.number.NUM3);
+                break;
+
+            case R.id.num4: getnum = 4;
+                mWpadSound.Play(SND.number.NUM4);
+                break;
+
+            case R.id.num5: getnum = 5;
+                mWpadSound.Play(SND.number.NUM5);
+                break;
+
+            case R.id.num6: getnum = 6;
+                mWpadSound.Play(SND.number.NUM6);
+                break;
+
+            case R.id.num7: getnum = 7;
+                mWpadSound.Play(SND.number.NUM7);
+                break;
+
+            case R.id.num8: getnum = 8;
+                mWpadSound.Play(SND.number.NUM8);
+                break;
+
+            case R.id.num9: getnum = 9;
+                mWpadSound.Play(SND.number.NUM9);
+                break;
+
+            case R.id.num0: getnum = 0;
+                mWpadSound.Play(SND.number.NUM0);
+                break;
+
+            case R.id.btn_eraser:
+                eraseProc();
+                break;
+
+            case R.id.btn_dong:
+                mWpadSound.Play(SND.setting.DONG);
+                set_mode((byte)DONG_HO_INPUT_STATE_HO);
+                break;
+
+            case R.id.btn_ho:
+                mWpadSound.Play(SND.setting.HO);
+                set_mode((byte)DONG_HO_INPUT_STATE_FINISH);
+                break;
+
+            case R.id.btn_inspection_mode:
+            {
+                String title = "Inspection mode";
+                String message = "Set as production inspection?\n";
+                if (Version.getModelType() == Version.MODEL_TYPE.IHN_D101 || Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I
+                        || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K_I) {
+                    message += "IP: 10.1.1.1\n" +
+                            "Door: Smart IoT Cam\n" +
+                            "Smartkey: BLE Band\n" +
+                            "In/Out Sensor: Enabled\n" +
+                            "Use Out Sensor as In Sensor: Enabled\n" +
+                            "Refuge ladder: Enabled";
+                }
+                else if (Version.getModelType() == Version.MODEL_TYPE.IHN_HS101 || Version.getModelType() == Version.MODEL_TYPE.IHN_HS101_I) {
+                    message += "IP: 10.1.1.1\n" +
+                            "Light: Each room\n" +
+                            "IntegSW: Enabled\n" +
+                            "Door: Hyosung\n" +
+                            "In/Out Sensor: Enabled\n" +
+                            "Use Out Sensor as In Sensor: Enabled\n" +
+                            "Refuge ladder: Enabled";
+                }
+                else if (Version.getModelType() == Version.MODEL_TYPE.IHN_1050DW_I) {
+                    message += "IP: 10.1.1.1\n" +
+                            "Light: Each room\n" +
+                            "IntegSW: Enabled\n" +
+                            "Door: Deawoo\n" +
+                            "In/Out Sensor: Enabled\n" +
+                            "Use Out Sensor as In Sensor: Enabled\n" +
+                            "Refuge ladder: Enabled";
+                }
+                else {
+                    message += "IP: 10.1.1.1\n" +
+                            "Light: Each room\n" +
+                            "IntegSW: Enabled\n" +
+                            "Door: RF Cam\n" +
+                            "In/Out Sensor: Enabled\n" +
+                            "Use Out Sensor as In Sensor: Enabled\n" +
+                            "Refuge ladder: Enabled";
+                }
+
+                openSetInspectionModeDialog(title, message);
+            }
+                break;
+
+            case R.id.btn_back:
+                finish();
+                break;
+
+            case R.id.btn_set: {
+                if ((mSel_Mode != DONG_HO_INPUT_STATE_FINISH) || (mHo.length() < 3 || mDong.length() < 3)) {
+                    String title = getString(R.string.menu_title_set_dongho);
+                    String message = "동/호 입력 값을 확인 바랍니다. 길이 오류";
+                    openDialog(title, message);
+                    return;
+                }
+
+                int DanjiNum = 10;
+
+                try {
+                    if (DanjiSettingUse == true) {
+                        if (mDong.length() == 3) {
+                            DanjiNum = Integer.parseInt(mDong.substring(0, 1));
+                        }
+                        else if (mDong.length() == 4) {
+                            DanjiNum = Integer.parseInt(mDong.substring(0, 2));
+                        }
+                    }
+
+                    int secNum =  Integer.parseInt(mDong.substring(mDong.length()-2));
+                    int thirdNum = Integer.parseInt(mHo.substring(0, mHo.length()-2));
+                    int forthNum = Integer.parseInt(mHo.substring(mHo.length()-2));
+
+                    if (DanjiSettingUse == true) {
+                        if ((DanjiNum == 0) || (DanjiNum > 255)) {
+                            String title = getString(R.string.menu_title_set_dongho);
+                            String message = "동 입력 값을 확인 바랍니다. \r\nIP 생성 오류";
+                            openDialog(title, message);
+                            return;
+                        }
+                    }
+
+                    if (RentHomeSettingUse == true) {
+                        if (forthNum > 55) {
+                            String title = getString(R.string.menu_title_set_dongho);
+                            String message = "호 입력 값을 확인 바랍니다.\r\n(임대세대 인 경우는 55호를 넘지 못합니다.) \r\nIP 생성 오류";
+                            openDialog(title, message);
+                            return;
+                        }
+                    }
+
+                    if ((thirdNum > 125) || (forthNum > 99)) {
+                        String title = getString(R.string.menu_title_set_dongho);
+                        String message = "동/호 입력 값을 확인 바랍니다. \r\nIP 생성 오류";
+                        openDialog(title, message);
+                    }
+                    else {
+                        String title = getString(R.string.menu_title_set_dongho);
+                        String message = mDong + getString(R.string.dong) + " " + mHo+ getString(R.string.ho) + " " +" 로 설정하시겠습니까?";
+
+                        if (DanjiSettingUse == true) {
+                            openSetDongHoDialog(title, message, DanjiNum, secNum, thirdNum, forthNum);
+                        }
+                        else if (RentHomeSettingUse == true) {
+                            openSetDongHoDialog(title, message, 10, secNum, thirdNum, forthNum + 200);
+                        }
+                        else {
+                            openSetDongHoDialog(title, message, 10, secNum, thirdNum, forthNum);
+                        }
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+            break;
+        }
+
+        if (getnum > -1) numkeyProc(getnum);
+    }
+
+
+    private final int DEFAULT_LOBBY_IP_THIRD = 0;
+    private final int DEFAULT_LOBBY_IP_FORTH = 1;
+    // IP를 DB에 저장하고, info popup을 open
+    private void setNetworkAddr(int DanjiNum, int secNum, int thirdNum, int forthNum) {
+
+        if (DanjiSettingUse == false) {
+            DanjiNum = 10;
+        }
+
+        if (RentHomeSettingUse == true) {
+            mHo = mHo + "-1";
+        }
+
+        String IPAddress = String.format("%d.%d.%d.%d", DanjiNum, secNum, thirdNum, forthNum);
+        String gateWayIPAddress = String.format("%d.%d.%d.%d", DanjiNum, secNum, Const.DEFAULT_GATEWAY_IP_THIRD, Const.DEFAULT_GATEWAY_IP_FORTH);
+        String MacAddr = String.format("00:%02x:%02x:%02x:%02x:00", DanjiNum, secNum, thirdNum, forthNum);
+
+        String serverIP = Const.DEFAULT_SERVER_IP;
+        int serverPort = Const.DEFAULT_SERVER_PORT;
+
+        String managePCIP = Const.DEFAULT_MANAGER_PC_IP;
+        int managePCPort = Const.DEFAULT_MANAGER_PC_PORT;
+
+        String lobbyIP = String.format("%d.%d.%d.%d", DanjiNum, secNum, DEFAULT_LOBBY_IP_THIRD, DEFAULT_LOBBY_IP_FORTH);
+        String lobbyName = mDong + getString(R.string.dong) + " " + getString(R.string.check_network_lobby) + " : ";
+
+        wallpaddbmgr dbmgr = new wallpaddbmgr(this);
+        AddressSet addc =  dbmgr.getAddressMGR();
+        addc.setAddress(mDong, mHo);
+        addc.setIPAddress(IPAddress);
+        dbmgr.closeDB();
+        mIPAddress = IPAddress;
+
+        wallpaddbmgr dbmgr2 = new wallpaddbmgr(this);
+        AddressSetBackup addc_Backup =  dbmgr2.getAddressMGR_Backup();
+        addc_Backup.setAddress(mDong, mHo);
+        addc_Backup.setIPAddress(IPAddress);
+        dbmgr2.closeDB();
+
+        WallpadStatusData wallpadStatusData = new WallpadStatusData(this);
+        wallpadStatusData.SetServerIP(serverIP, serverPort);
+        wallpadStatusData.SetManagePC(managePCIP, managePCPort);
+        wallpadStatusData.closeDB();
+
+        if (Version.getPlatformType() == Version.PLATFORM_TYPE.A40i) {
+            V40IF mV40IF = new V40IF();
+            mV40IF.setNetworkInterface(IPAddress, Const.SUBNET_MASK, gateWayIPAddress, Const.DNS_IP, MacAddr);
+            Log.d(TAG, "[SetAddress] IP : "+IPAddress+" Mac : "+ MacAddr);
+
+            mV40IF.setDns(Const.DNS_IP, Const.DNS_IP2);
+            Log.d(TAG, "[SetAddress] DNS 1 : " + Const.DNS_IP +" / DNS 2 : " + Const.DNS_IP2);
+        }
+        else {
+            EthernetDevInfo info = new EthernetDevInfo();
+
+            info.setIfName("eth0");
+            info.setConnectMode(EthernetDevInfo.ETH_CONN_MODE_MANUAL);
+            info.setIpAddress(IPAddress);
+            info.setRouteAddr(gateWayIPAddress);
+            info.setDnsAddr(Const.DNS_IP);
+            info.setNetMask(Const.SUBNET_MASK);
+
+            EthernetManager mEthManager = (EthernetManager) getSystemService("ethernet");
+            mEthManager.setEthernetState(EthernetManager.ETH_STATE_DISABLED);
+            mEthManager.UpdateEthDevInfo(info);
+            mEthManager.setEthernetState(EthernetManager.ETH_STATE_ENABLING);
+
+            if ((ModelType == Version.MODEL_TYPE.IHN_1020B_C) || (ModelType == Version.MODEL_TYPE.IHN_1030_D)) {
+                A20IOInterface wallPadInterface = new A20IOInterface();
+                wallPadInterface.WpdInterfaceOpen();
+                wallPadInterface.SetMacAddr(0xFB01, MacAddr);
+                wallPadInterface.WpdInterfaceClose();
+                Log.d(TAG, " IP : "+IPAddress+" Mac : "+ MacAddr);
+                writeMacAddress(MacAddr);
+            }
+            else {
+                WallPadInterface wallPadInterface = new WallPadInterface();
+                wallPadInterface.setMacAddr(MacAddr);
+                wallPadInterface.close();
+                Log.d(TAG, " IP : "+IPAddress+" Mac : "+ MacAddr);
+                writeMacAddress(MacAddr);
+            }
+        }
+        ////////////////////////
+
+        String title = getString(R.string.menu_title_set_dongho);
+        String message = "IP : " + IPAddress
+                + "\n G/W : " + gateWayIPAddress
+                + "\n MacAddr : " + MacAddr
+                + "\n Server : " + serverIP + " : " + serverPort
+                + "\n ManagePC : " + managePCIP + " : " + managePCPort
+                + "\n Lobby : " + lobbyName + " - " + lobbyIP
+                + "\n 로 설정되었습니다.";
+        openFinishDialog(title, message);
+    }
+
+
+
+    private final String NETWORK_SETTING = "network_setting";
+    private final String MAC_ADDRESS_FILE_PATH = Const.CONTENTS_ROOT + NETWORK_SETTING + ".inc";
+    // write MacAddress to file
+    private boolean writeMacAddress(String MacAddr) {
+        boolean ret = false;
+        String read = null;
+
+        BufferedWriter bufferWriter = null;
+
+        try {
+            FileOutputStream fos = new FileOutputStream(MAC_ADDRESS_FILE_PATH, false);
+            OutputStreamWriter osr = new OutputStreamWriter(fos, "UTF-8");
+            bufferWriter = new BufferedWriter(osr, 1024);
+
+            if ((bufferWriter != null) && (MacAddr != null)) {
+                bufferWriter.write(MacAddr, 0, MacAddr.length());
+                bufferWriter.newLine();
+                bufferWriter.flush();
+
+                ret = true;
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                if (bufferWriter != null) {
+                    bufferWriter.close();
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+
+
+        if (DEBUG)  Log.d(TAG, "writeMacAddress() path : " + MAC_ADDRESS_FILE_PATH
+                + ", MacAddr : " + MacAddr
+                + ", ret : " + ret
+        );
+
+        return ret;
+    }
+
+
+    private DialogUtil mDialog;
+    // open dialog
+    public void openDialog(final String title, final String message) {
+        mDialog = new DialogUtil(this);
+
+        DialogInterface.OnClickListener positiveListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        closeDialog();
+                    }
+                };
+
+        mDialog.openCommonDialog(title, message, positiveListener, null);
+    }
+
+    // open FinishDialog
+    public void openFinishDialog(final String title, final String message) {
+        mDialog = new DialogUtil(this);
+
+        DialogInterface.OnClickListener positiveListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        WallpadScheduleData wallpadScheduleData = new WallpadScheduleData(SetAddress.this);
+                        wallpadScheduleData.DeleteTableInst(wallpaddbmgr.ScheduleTBL);
+                        wallpadScheduleData.closeDB();
+
+                        if (Version.getPlatformType() == Version.PLATFORM_TYPE.A40i) {
+
+                            // IP 설정을 한 후, 팝업창의 "확인" or "Ok"를 누른 경우 재부팅 설정
+                            V40IF mV40IF = new V40IF();
+							Log.d(TAG, "IP Set PopUp Ok -> Do Reboot !!!");
+							mV40IF.setV40Reboot(5);
+                        }
+                        else if (Version.getPlatformType() == Version.PLATFORM_TYPE.A20) {
+                            //PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
+                            //pm.userActivity(8, true);
+                            getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
+
+                        }
+                        else {
+                            //finish();
+                            ComponentName cnA = new ComponentName("com.artncore.updater", "com.artncore.updater.MainActivity");
+                            Intent intent = new Intent(Intent.ACTION_MAIN);
+                            intent.addCategory(Intent.CATEGORY_LAUNCHER);
+                            intent.putExtra("updatesystem", "no");
+                            intent.putExtra("updateapp", " no ");
+                            intent.putExtra("rebootcmd", "reboot");
+                            intent.setComponent(cnA);
+
+                            startActivity(intent);
+                        }
+
+                    }
+                };
+
+        mDialog.openCommonDialog(title, message, positiveListener, null);
+    }
+
+    // open SetDongHoDialog
+    public void openSetDongHoDialog(final String title, final String message,
+                                    final int DanjiNum, final int secNum, final int thirdNum, final int forthNum) {
+        mDialog = new DialogUtil(this);
+
+        DialogInterface.OnClickListener positiveListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        closeDialog();
+
+                        mWpadSound.Play(SND.setting.SETTING);
+                        setFinishTimerReset();
+                        setNetworkAddr(DanjiNum, secNum, thirdNum, forthNum);
+                    }
+                };
+
+        DialogInterface.OnClickListener negativeListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        closeDialog();
+                    }
+                };
+
+        mDialog.openCommonDialog(title, message, positiveListener, negativeListener);
+    }
+
+    // open SetInspectionModeDialog
+    public void openSetInspectionModeDialog(final String title, final String message) {
+        mDialog = new DialogUtil(this);
+
+        DialogInterface.OnClickListener positiveListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        closeDialog();
+                        mWpadSound.Play(SND.setting.SETTING);
+                        setFinishTimerReset();
+                        setInspectionMode();
+                        setNetworkAddr(10, 1, 1, 1);
+                    }
+                };
+
+        DialogInterface.OnClickListener negativeListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        closeDialog();
+                    }
+                };
+
+        mDialog.openCommonDialog(title, message, positiveListener, negativeListener);
+    }
+
+    private void setInspectionMode() {
+        WallpadDeviceSet mWallpadDeviceSet = new WallpadDeviceSet(this);
+        try {
+            /**
+             * 생산검수모드 설정
+             * IHN-D101/D101-I/D101K/D101-I/D101-IC
+             *  -> 현관카메라(스마트IoT현관카메라), BLE스마트키(스마트밴드), 내부동체(사용), 외부동체(사용), 외부동체를 내부동체로 사용(미사용), 피난사다리(사용)
+             *  IHN-HS101/101-I
+             *  -> 조명 유형(조명(각실)), 통합스위치(사용), 현관카메라(효성현관카메라), 내부동체(사용), 외부동체(사용), 외부동체를 내부동체로 사용(미사용), 피난사다리(사용)
+             *  IHN-1050DW-I
+             *  -> 조명 유형(조명(각실)), 통합스위치(사용), 현관카메라(대우현관카메라), 내부동체(사용), 외부동체(사용), 외부동체를 내부동체로 사용(미사용), 피난사다리(사용)
+             *  이외의 모델
+             *  -> 조명 유형(조명(각실)), 통합스위치(사용), 현관카메라(RF현관카메라), 내부동체(사용), 외부동체(사용), 외부동체를 내부동체로 사용(미사용), 피난사다리(사용)
+             */
+
+            mDong = "101";   // 동정보 입력
+            mHo = "101";   // 호정보 입력
+
+            if (Version.getModelType() == Version.MODEL_TYPE.IHN_D101 || Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I
+                    || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K_I) {
+                mWallpadDeviceSet.Set_DoorCameraType(WallpadDeviceSet.DOORTYPE_IOT_SMART);   // 스마트 IoT 현관카메라
+                mWallpadDeviceSet.Set_BLESmartKeyType(WallpadDeviceSet.BLESMARTKEY_BAND);   // BLE 스마트 밴드
+                mWallpadDeviceSet.Set_MotionSensorType(true, true, true, false);   // 내부동체 사용, 외부동체 사용, 외부동체를 내부동체로 사용
+                mWallpadDeviceSet.Set_RefugeLadderUsage(true);   // 피난사다리 사용
+            }
+//            else if (Version.getModelType() == Version.MODEL_TYPE.IHN_HS101 || Version.getModelType() == Version.MODEL_TYPE.IHN_HS101_I) {
+//                mWallpadDeviceSet.Set_LightingControllerType(WallpadDeviceSet.LIGHT_TYPE_ROOM);   // 조명(각실)
+//                mWallpadDeviceSet.Set_IntegratedSwitchUsage(true);   // 통합스위치 사용
+//                mWallpadDeviceSet.Set_DoorCameraType(WallpadDeviceSet.DOORTYPE_HYOSUNG_SMART);   // 효성 스마트 현관 카메라
+//                mWallpadDeviceSet.Set_MotionSensorType(true, true, true, false);   // 내부동체 사용, 외부동체 사용, 외부동체를 내부동체로 사용
+//                mWallpadDeviceSet.Set_RefugeLadderUsage(true);   // 피난사다리 사용
+//            }
+            else if (Version.getModelType() == Version.MODEL_TYPE.IHN_1050DW_I) {
+                mWallpadDeviceSet.Set_LightingControllerType(WallpadDeviceSet.LIGHT_TYPE_ROOM);   // 조명(각실)
+                mWallpadDeviceSet.Set_IntegratedSwitchUsage(true);   // 통합스위치 사용
+                mWallpadDeviceSet.Set_DoorCameraType(WallpadDeviceSet.DOORTYPE_DAEWOO_SMART);   // 대우 스마트 현관 카메라
+                mWallpadDeviceSet.Set_MotionSensorType(true, true, true, false);   // 내부동체 사용, 외부동체 사용, 외부동체를 내부동체로 사용
+                mWallpadDeviceSet.Set_RefugeLadderUsage(true);   // 피난사다리 사용
+            }
+            else {
+                mWallpadDeviceSet.Set_LightingControllerType(WallpadDeviceSet.LIGHT_TYPE_ROOM);   // 조명(각실)
+                mWallpadDeviceSet.Set_IntegratedSwitchUsage(true);   // 통합스위치 사용
+                mWallpadDeviceSet.Set_DoorCameraType(WallpadDeviceSet.DOORTYPE_RFCAM);   // RF 현관 카메라
+                mWallpadDeviceSet.Set_MotionSensorType(true, true, true, false);   // 내부동체 사용, 외부동체 사용, 외부동체를 내부동체로 사용
+                mWallpadDeviceSet.Set_RefugeLadderUsage(true);   // 피난사다리 사용
+            }
+        } catch (Exception e) {
+            Log.e(TAG, "[Exception] setInspectionMode()");
+            e.printStackTrace();
+        }
+        mWallpadDeviceSet.closeDB();
+    }
+
+	public void showSoftKeyboard(View view) {
+		if (view.requestFocus()) {
+			InputMethodManager imm = (InputMethodManager)
+					getSystemService(Context.INPUT_METHOD_SERVICE);
+			imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT);
+
+			/*if(getResources().getConfiguration().keyboard)
+			{
+				// 키보드가 안나온다...
+
+			}*/
+		}
+	}
+
+    // open close Dialog
+    public void closeDialog() {
+        if (mDialog != null) {
+            mDialog.closeDialog();
+            mDialog = null;
+        }
+    }
+
+    // init UseInnerEnergyDevices View
+    private void initUseInnerEnergyDevices() {
+        int type = DETAIL_TYPE_USE_ENERGY_DEVICES;
+        String typeName = this.getString(R.string.detail_function_use_energy_devices);
+
+        SwitchButton switchButton = (SwitchButton)this.findViewById(R.id.btn_switch_use_energy_devices);
+        if(switchButton == null)
+        {
+            return;
+        }
+        switchButton.setSwitchButtonChangedListener(this, type, typeName);
+
+
+        List<String> listString = new ArrayList<String>();
+        listString.add(this.getString(R.string.set));
+        listString.add(this.getString(R.string.clear));
+
+        switchButton.setText(listString);
+
+        boolean initValue = false;
+
+        List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ENERGY_DEVICES);
+
+        if ((InfoList != null) && (InfoList.size() < 5)) {
+            if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+                initValue = true;
+            }
+        }
+
+        switchButton.switchEnabled(initValue);
+    }
+
+    // init UseInnerSmart Key View
+    private void initUseInnerSmartKey() {
+        int type = DETAIL_TYPE_USE_SMART_KEY;
+        String typeName = this.getString(R.string.detail_function_use_smart_key);
+
+        SwitchButton switchButton = (SwitchButton)this.findViewById(R.id.btn_switch_use_smart_key);
+        if(switchButton == null)
+        {
+            return;
+        }
+        switchButton.setSwitchButtonChangedListener(this, type, typeName);
+
+
+        List<String> listString = new ArrayList<String>();
+        listString.add(this.getString(R.string.set));
+        listString.add(this.getString(R.string.clear));
+
+        switchButton.setText(listString);
+
+        boolean initValue = false;
+
+        int DoorCameraInitIdx = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+
+        List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DOOR_CAMERA);
+        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.DOOR_CAMERA_TYPE_DEFAULT))
+                    {
+                        DoorCameraInitIdx = 0;
+                    }
+                    else if(InfoList.get(5).equals(Const.DOOR_CAMERA_TYPE_RF_DOOR_CAMERA))
+                    {
+                        DoorCameraInitIdx = 1;
+                    }
+                    else if(InfoList.get(5).equals(Const.DOOR_CAMERA_TYPE_SMART_KEY))
+                    {
+                        DoorCameraInitIdx = 2;
+                    }
+                    else if(InfoList.get(5).equals(Const.DOOR_CAMERA_TYPE_UKS))
+                    {
+                        DoorCameraInitIdx = 3;
+                    }
+                    else if(InfoList.get(5).equals(Const.DOOR_CAMERA_TYPE_ETC))
+                    {
+                        DoorCameraInitIdx = 4;
+                    }
+                }
+            }
+        }
+        if(DoorCameraInitIdx == 2)
+        {
+            initValue = true;
+        }
+        switchButton.switchEnabled(initValue);
+    }
+
+    // init UseInnerEnergyDevices View
+    private void initUseInnerAllLightPlusType() {
+        int type = DETAIL_TYPE_USE_LIGHT_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT;
+        String typeName = this.getString(R.string.detail_function_use_light_type_hdc_intlight_add_batchlight);
+
+        SwitchButton switchButton = (SwitchButton)this.findViewById(R.id.btn_switch_use_kind_light_all_light_plus);
+        if(switchButton == null)
+        {
+            return;
+        }
+        switchButton.setSwitchButtonChangedListener(this, type, typeName);
+
+
+        List<String> listString = new ArrayList<String>();
+        listString.add(this.getString(R.string.set));
+        listString.add(this.getString(R.string.clear));
+
+        switchButton.setText(listString);
+
+
+        int typeCount = Const.CONTROLLER_LIGHT_TYPE_MAX_COUNT;
+        int typeCurrent = 0;
+        int lightCurrentCount = 0;
+
+        List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LIGHT);
+        if ((InfoList != null) && (InfoList.size() > 5))
+        {
+            if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3)))
+            {
+                int circuitNo = StringUtil.getInt(InfoList.get(1), false);
+                if ((circuitNo > -1) && (circuitNo <= Const.CONTROLLER_LIGHT_MAX_COUNT + 1))
+                    lightCurrentCount = circuitNo - 1;
+
+                String strType = InfoList.get(5);
+
+                if (ModelType == Version.MODEL_TYPE.IHN_1020GL)
+                {
+                    if (Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_NORMAL.equals(strType))
+                    {
+                        typeCurrent = 1;
+                    }
+                    else if (Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT.equals(strType))
+                    {
+                        typeCurrent = 2;
+                    }
+                }
+            }
+        }
+
+        boolean initValue = false;
+        if(typeCurrent == 2)
+        {
+            initValue = true;
+        }
+        switchButton.switchEnabled(initValue);
+    }
+
+
+
+    // init UseInnerMotionDetector View
+    private void initUseInnerMotionDetector() {
+        int type = DETAIL_TYPE_USE_INNER_MOTION_DETECTOR;
+        String typeName = this.getString(R.string.detail_function_use_inner_motion_detector);
+
+        SwitchButton switchButton = (SwitchButton)this.findViewById(R.id.btn_switch_use_inner_motion_detector);
+        if(switchButton == null)
+        {
+            return;
+        }
+        switchButton.setSwitchButtonChangedListener(this, type, typeName);
+
+
+        List<String> listString = new ArrayList<String>();
+        listString.add(this.getString(R.string.set));
+        listString.add(this.getString(R.string.clear));
+
+        switchButton.setText(listString);
+
+        boolean initValue = false;
+
+        List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_MOTION_SETTING);
+        if ((InfoList != null) && (InfoList.size() > 5)) {
+            if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+                for (int i=4; i<InfoList.size(); i+=2) {
+                    if (Const.MOTION_SETTING_TYPE_USE_INNER_MOTION_DETECTOR.equals(InfoList.get(i)) && (InfoList.size() > (i + 1))) {
+
+                        if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(i + 1)))
+                            initValue = true;
+
+                        break;
+                    }
+                }
+            }
+        }
+
+        switchButton.switchEnabled(initValue);
+    }
+
+
+    // init UseOuterMotionDetector View
+    private void initUseOuterMotionDetector() {
+        int type = DETAIL_TYPE_USE_OUTER_MOTION_DETECTOR;
+        String typeName = this.getString(R.string.detail_function_use_outer_motion_detector);
+
+        SwitchButton switchButton = (SwitchButton)this.findViewById(R.id.btn_switch_use_outer_motion_detector);
+        if(switchButton == null)
+        {
+            return;
+        }
+        switchButton.setSwitchButtonChangedListener(this, type, typeName);
+
+
+        List<String> listString = new ArrayList<String>();
+        listString.add(this.getString(R.string.set));
+        listString.add(this.getString(R.string.clear));
+
+        switchButton.setText(listString);
+
+        boolean initValue = false;
+
+        List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_MOTION_SETTING);
+        if ((InfoList != null) && (InfoList.size() > 5)) {
+            if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+                for (int i=4; i<InfoList.size(); i+=2) {
+                    if (Const.MOTION_SETTING_TYPE_USE_OUTER_MOTION_DETECTOR.equals(InfoList.get(i)) && (InfoList.size() > (i + 1))) {
+
+                        if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(i + 1)))
+                            initValue = true;
+
+                        break;
+                    }
+                }
+            }
+        }
+
+        switchButton.switchEnabled(initValue);
+    }
+
+
+    // init UseInnerMotionDetectorToOuterMotion View
+    private void initUseInnerMotionDetectorToOuterMotion() {
+        int type = DETAIL_TYPE_USE_OUTER_MOTION_DETECTOR_TO_INNER_MOTION;
+        String typeName = this.getString(R.string.detail_function_use_outer_motion_detector_to_inner_motion);
+
+        SwitchButton switchButton = (SwitchButton)this.findViewById(R.id.btn_switch_use_outer_motion_detector_to_inner_motion);
+        if(switchButton == null)
+        {
+            return;
+        }
+        switchButton.setSwitchButtonChangedListener(this, type, typeName);
+
+
+        List<String> listString = new ArrayList<String>();
+        listString.add(this.getString(R.string.set));
+        listString.add(this.getString(R.string.clear));
+
+        switchButton.setText(listString);
+
+        boolean initValue = false;
+
+        List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_MOTION_SETTING);
+        if ((InfoList != null) && (InfoList.size() > 5)) {
+            if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+                for (int i=4; i<InfoList.size(); i+=2) {
+                    if (Const.MOTION_SETTING_TYPE_USE_OUTER_MOTION_DETECTOR_TO_INNER_MOTION.equals(InfoList.get(i)) && (InfoList.size() > (i + 1))) {
+
+                        if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(i + 1)))
+                            initValue = true;
+
+                        break;
+                    }
+                }
+            }
+        }
+
+        switchButton.switchEnabled(initValue);
+    }
+
+
+    // init UseWallpadCamera View
+    private void initUseWallpadCamera() {
+        int type = DETAIL_TYPE_USE_WALLPAD_CAMERA;
+        String typeName = this.getString(R.string.detail_function_use_wallpad_camera);
+
+        SwitchButton switchButton = (SwitchButton)this.findViewById(R.id.btn_switch_use_wallpad_camera);
+        if(switchButton == null)
+        {
+            return;
+        }
+        switchButton.setSwitchButtonChangedListener(this, type, typeName);
+
+
+        List<String> listString = new ArrayList<String>();
+        listString.add(this.getString(R.string.set));
+        listString.add(this.getString(R.string.clear));
+
+        switchButton.setText(listString);
+
+        boolean initValue = mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_WALLPAD_CAMERA);
+        switchButton.switchEnabled(initValue);
+    }
+
+
+    // init initUseMultiSwitch View
+    private void initUseMultiSwitch() {
+        int type = DETAIL_TYPE_USE_MULTI_SWITCH;
+        String typeName = this.getString(R.string.detail_function_use_multi_switch);
+
+        SwitchButton switchButton = (SwitchButton)this.findViewById(R.id.btn_switch_use_multiswitch);
+        if(switchButton == null)
+        {
+            return;
+        }
+        switchButton.setSwitchButtonChangedListener(this, type, typeName);
+
+
+        List<String> listString = new ArrayList<String>();
+        listString.add(this.getString(R.string.set));
+        listString.add(this.getString(R.string.clear));
+
+        switchButton.setText(listString);
+
+        boolean initValue = false;
+        int typeCurrent = 1;
+
+        List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LIGHT);
+        if ((InfoList != null) && (InfoList.size() > 5)) {
+            if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+
+                String strType = InfoList.get(5);
+                if (Const.LIGHT_CONTROLLER_TYPE_LIVING_ROOM.equals(strType)) {
+                    typeCurrent = 1;
+                }
+                else if (Const.LIGHT_CONTROLLER_TYPE_ROOMS.equals(strType)) { //멀티스위치
+                    typeCurrent = 2;
+                }
+            }
+        }
+
+        if(typeCurrent == 2)
+        {
+            initValue = true;
+        }
+
+        switchButton.switchEnabled(initValue);
+    }
+
+    private void initUseKccDimCtr()
+    {
+        int type = DETAIL_TYPE_USE_KCC_DIM_CTR;
+        String typeName = this.getString(R.string.contoller_dimming_kcc);
+
+        SwitchButton switchButton = (SwitchButton)this.findViewById(R.id.btn_switch_use_kccdimctr);
+        if(switchButton == null)
+        {
+            return;
+        }
+        switchButton.setSwitchButtonChangedListener(this, type, typeName);
+
+
+        List<String> listString = new ArrayList<String>();
+        listString.add(this.getString(R.string.set));
+        listString.add(this.getString(R.string.clear));
+
+        switchButton.setText(listString);
+
+        boolean initValue = mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DIMMING_KCC);
+        KccDimCtrUse = initValue;
+
+        switchButton.switchEnabled(initValue);
+    }
+
+    Spinner spinner_distModel = null;
+    boolean firstDistModelDialog = false;
+    int firstDistSelection = 0;
+    private void initDistributionModel()
+    {
+        try
+        {
+            int type = DETAIL_TYPE_USE_DISTRIBUTION_KIND;
+
+            final String typeName = this.getString(R.string.contoller_energy_distribution);
+            int distKindCurrent = 0;
+
+            final List<String> itemList = new ArrayList<String>();
+            itemList.add(this.getString(R.string.do_not_used));
+            itemList.add(this.getString(R.string.contoller_energy_distribution_smart));
+            itemList.add(this.getString(R.string.contoller_energy_distribution_knx));
+
+            ArrayAdapter<String> spinnerAdapter;
+            spinnerAdapter = new ArrayAdapter<String>(this.getApplicationContext(), R.layout.spinner_item, itemList);
+
+            spinner_distModel = (Spinner)this.findViewById(R.id.spinner_distribution_kind);
+            if(spinner_distModel == null)
+            {
+                return;
+            }
+            spinner_distModel.setAdapter(spinnerAdapter);
+            spinner_distModel.setPrompt("분전반 종류 선택");
+            spinner_distModel.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
+                @Override
+                public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
+                    String nowStr= itemList.get(position);
+
+                    if(firstDistModelDialog)
+                    {
+                        if(firstDistSelection != position)
+                        {
+                            DistributionSpinnerChangedDialog(spinner_distModel, DETAIL_TYPE_USE_DISTRIBUTION_KIND, position,
+                                    itemList.get(position), typeName);
+                        }
+
+                    }
+                    firstDistModelDialog = true;
+                }
+
+                @Override
+                public void onNothingSelected(AdapterView<?> parent) {
+
+                }
+            });
+
+            distKindCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+
+            List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DISTRIBUTION);
+            if ((InfoList != null) && (InfoList.size() > 5)) {
+                if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+                    String strType = InfoList.get(5);
+
+                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(strType)) {
+                        distKindCurrent = 0;
+                    }
+                    else if (Const.CONTROLLER_DISTRIBUTION_KIND_SMART.equals(strType)) {
+                        distKindCurrent = 1;
+                    }
+                    else if (Const.CONTROLLER_DISTRIBUTION_KIND_KNX.equals(strType)) {
+                        distKindCurrent = 2;
+                    }
+                }
+                else if(Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3)))
+                {
+                    String strType = InfoList.get(5);
+
+                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(strType)) {
+                        distKindCurrent = 0;
+                    }
+                }
+
+                firstDistSelection = distKindCurrent;
+            }
+
+            spinner_distModel.setSelection(distKindCurrent);
+        }
+        catch(Exception e)
+        {
+            Log.e(TAG, "[initDistributionModel] - Exception !!!");
+            e.printStackTrace();
+        }
+    }
+
+    private void initUseElectricRange()
+    {
+        int type = DETAIL_TYPE_USE_ELECTRIC_RANGE;
+        String typeName = this.getString(R.string.contoller_electric_range);
+
+        SwitchButton switchButton = (SwitchButton)this.findViewById(R.id.btn_switch_use_electric_range);
+        if(switchButton == null)
+        {
+            return;
+        }
+        switchButton.setSwitchButtonChangedListener(this, type, typeName);
+
+
+        List<String> listString = new ArrayList<String>();
+        listString.add(this.getString(R.string.set));
+        listString.add(this.getString(R.string.clear));
+
+        switchButton.setText(listString);
+
+        boolean initValue = mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ELECTRIC_RANGE);
+        ElectricRangeUse = initValue;
+
+        switchButton.switchEnabled(initValue);
+    }
+
+    Spinner spinner_gatewayModel = null;
+    boolean firstGatewayModelDialog = false;
+    int firstGatewaySelection = 0;
+    private void initGatewayModel()
+    {
+        try
+        {
+            int type = DETAIL_TYPE_USE_GATEWAY_MODEL_KIND;
+
+            final String typeName = this.getString(R.string.contoller_gateway_model_kind);
+            int gatewayKindCurrent = 0;
+
+            final List<String> itemList = new ArrayList<String>();
+            itemList.add(this.getString(R.string.do_not_used));
+            itemList.add(this.getString(R.string.contoller_gateway_model_kind_item_old));
+            itemList.add(this.getString(R.string.contoller_gateway_model_kind_item_new));
+
+            ArrayAdapter<String> spinnerAdapter;
+            spinnerAdapter = new ArrayAdapter<String>(this.getApplicationContext(), R.layout.spinner_item, itemList);
+
+            spinner_gatewayModel = (Spinner)this.findViewById(R.id.spinner_gateway_kind);
+            if(spinner_gatewayModel == null)
+            {
+                return;
+            }
+            spinner_gatewayModel.setAdapter(spinnerAdapter);
+            spinner_gatewayModel.setPrompt("게이트웨이모델 선택");
+            spinner_gatewayModel.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
+                @Override
+                public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
+                    //Toast.makeText(SetAddress.this,"선택된 아이템 : "+spinner_gatewayModel.getItemAtPosition(position),Toast.LENGTH_SHORT).show();
+
+                    String nowStr= itemList.get(position);
+
+                    if(firstGatewayModelDialog)
+                    {
+                        if(firstGatewaySelection != position)
+                        {
+                            GatewaySpinnerChangedDialog(spinner_gatewayModel, DETAIL_TYPE_USE_GATEWAY_MODEL_KIND, position,
+                                    itemList.get(position), typeName);
+
+                            //((TextView) view).setTextColor(Color.RED);
+                            //((TextView) parent.getChildAt(0)).setTextColor(Color.RED);
+                        }
+
+                    }
+                    firstGatewayModelDialog = true;
+                }
+
+                @Override
+                public void onNothingSelected(AdapterView<?> parent) {
+
+                }
+            });
+
+            gatewayKindCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+
+            List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_GATEWAY_MODEL_KIND);
+            if ((InfoList != null) && (InfoList.size() > 5)) {
+                if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+                    String strType = InfoList.get(5);
+
+                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(strType)) {
+                        gatewayKindCurrent = 0;
+                    }
+                    else if (Const.CONTROLLER_GATEWAY_KIND_200.equals(strType)) {
+                        gatewayKindCurrent = 1;
+                    }
+                    else if (Const.CONTROLLER_GATEWAY_KIND_300.equals(strType)) {
+                        gatewayKindCurrent = 2;
+                    }
+                }
+                else if(Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3)))
+                {
+                    String strType = InfoList.get(5);
+
+                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(strType)) {
+                        gatewayKindCurrent = 0;
+                    }
+                }
+
+                firstGatewaySelection = gatewayKindCurrent;
+            }
+
+            spinner_gatewayModel.setSelection(gatewayKindCurrent);
+        }
+        catch(Exception e)
+        {
+            Log.e(TAG, "[initGatewayModel] - Exception !!!");
+            e.printStackTrace();
+        }
+    }
+
+    // open switchChangedDialog
+    public void GatewaySpinnerChangedDialog(final Spinner spinner, final int type, final int position,
+                                            final String itemName, final String controllerName )
+    {
+        mDialog = new DialogUtil(this);
+        String title = controllerName + " 변경";
+        String message = "[" + itemName + "]  으로 변경하시겠습니까?";
+        setFinishTimerReset();
+
+        DialogInterface.OnClickListener positiveListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        closeDialog();
+                        setFinishTimerReset();
+                        onItemChanged(type, position, itemName);
+                    }
+                };
+
+        DialogInterface.OnClickListener negativeListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        if (spinner != null)
+                        {
+                            spinner.setSelection(firstGatewaySelection);
+                        }
+                        dialog.dismiss();
+                        //closeDialog();
+                    }
+                };
+
+        mDialog.openCommonDialog(title, message, positiveListener, negativeListener);
+    }
+
+    public void DistributionSpinnerChangedDialog(final Spinner spinner, final int type, final int position,
+                                            final String itemName, final String controllerName )
+    {
+        mDialog = new DialogUtil(this);
+        String title = controllerName + " 변경";
+        String message = "[" + itemName + "]  으로 변경하시겠습니까?";
+        setFinishTimerReset();
+
+        DialogInterface.OnClickListener positiveListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        closeDialog();
+                        setFinishTimerReset();
+                        onItemChanged(type, position, itemName);
+                    }
+                };
+
+        DialogInterface.OnClickListener negativeListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        if (spinner != null)
+                        {
+                            spinner.setSelection(firstDistSelection);
+                        }
+                        dialog.dismiss();
+                    }
+                };
+
+        mDialog.openCommonDialog(title, message, positiveListener, negativeListener);
+    }
+
+    public void initUseDanjiConfig()
+    {
+        int type = DETAIL_TYPE_USE_DANJI_CONFIG;
+        String typeName = this.getString(R.string.detail_function_use_danji_config);
+
+        SwitchButton switchButton = (SwitchButton)this.findViewById(R.id.btn_switch_use_double_danji);
+        if(switchButton == null)
+        {
+            return;
+        }
+        switchButton.setSwitchButtonChangedListener(this, type, typeName);
+
+
+        List<String> listString = new ArrayList<String>();
+        listString.add(this.getString(R.string.set));
+        listString.add(this.getString(R.string.clear));
+
+        switchButton.setText(listString);
+
+        boolean initValue = mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DANJI_CONFIG);
+        DanjiSettingUse = initValue;
+
+        switchButton.switchEnabled(initValue);
+    }
+
+    // init initUseRentHome View
+    private void initUseRentHome() {
+        int type = DETAIL_TYPE_USE_RENT_HOME;
+        String typeName = this.getString(R.string.detail_function_use_rent_home);
+
+        SwitchButton switchButton = (SwitchButton)this.findViewById(R.id.btn_switch_use_rent_home);
+        if(switchButton == null)
+        {
+            return;
+        }
+        switchButton.setSwitchButtonChangedListener(this, type, typeName);
+
+
+        List<String> listString = new ArrayList<String>();
+        listString.add(this.getString(R.string.set));
+        listString.add(this.getString(R.string.clear));
+
+        switchButton.setText(listString);
+
+        boolean initValue = mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_RENT_HOME);
+        RentHomeSettingUse = initValue;
+
+        switchButton.switchEnabled(initValue);
+    }
+
+    // init initUseRentHome View
+
+    SwitchButton switchButton_DanjiRentHouse = null;
+    private void initUseDanjiRentHomeUse() {
+        int type = DETAIL_TYPE_USE_DANJI_RENT_HOME_USE;
+        String typeName = this.getString(R.string.detail_function_use_danji_set_rent_use);
+
+        switchButton_DanjiRentHouse = (SwitchButton)this.findViewById(R.id.btn_switch_use_danji_set_rent_use);
+        if(switchButton_DanjiRentHouse == null)
+        {
+            return;
+        }
+        switchButton_DanjiRentHouse.setSwitchButtonChangedListener(this, type, typeName);
+
+
+        List<String> listString = new ArrayList<String>();
+        listString.add(this.getString(R.string.set));
+        listString.add(this.getString(R.string.clear));
+
+        switchButton_DanjiRentHouse.setText(listString);
+
+        boolean initValue = mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DANJI_RENT_HOME_USE);
+
+        switchButton_DanjiRentHouse.switchEnabled(initValue);
+    }
+
+
+    SwitchButton switchButton_EscapeLadDownRecv = null;
+    private void initEscapeLadderDownRecv() {
+        int type = DETAIL_TYPE_USE_ESCAPE_LADDER_DOWN_RECV;
+        String typeName = this.getString(R.string.detail_function_escapeladder_down_recv);
+
+        switchButton_EscapeLadDownRecv = (SwitchButton)this.findViewById(R.id.btn_switch_escapeladder_down_recv);
+        if(switchButton_EscapeLadDownRecv == null)
+        {
+            return;
+        }
+        switchButton_EscapeLadDownRecv.setSwitchButtonChangedListener(this, type, typeName);
+
+
+        List<String> listString = new ArrayList<String>();
+        listString.add(this.getString(R.string.set));
+        listString.add(this.getString(R.string.clear));
+
+        switchButton_EscapeLadDownRecv.setText(listString);
+
+        boolean initValue = mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ESCAPELADDER_DOWN_RECV);
+
+        switchButton_EscapeLadDownRecv.switchEnabled(initValue);
+    }
+
+    SwitchButton switchButton_SubwpdUse = null;
+    private void initSubWallpad() {
+        int type = DETAIL_TYPE_USE_SUBWPD_USE;
+        String typeName = this.getString(R.string.setting_subwpd_use);
+
+        switchButton_SubwpdUse = (SwitchButton)this.findViewById(R.id.btn_switch_dongho_subwpd);
+        if (switchButton_SubwpdUse == null) {
+            return;
+        }
+        switchButton_SubwpdUse.setSwitchButtonChangedListener(this, type, typeName);
+
+
+        List<String> listString = new ArrayList<String>();
+        listString.add(this.getString(R.string.set));
+        listString.add(this.getString(R.string.clear));
+
+        switchButton_SubwpdUse.setText(listString);
+
+        boolean initValue = mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SUBWALLPAD);
+
+        switchButton_SubwpdUse.switchEnabled(initValue);
+    }
+
+    // open switchChangedDialog
+    public void switchChangedDialog(final SwitchButton switchButton, final int type, final int position, final String itemName, final String controllerName) {
+
+        if (DEBUG) Log.d(TAG, "[switchChangedDialog] type : " + type +  ", position : " + position + " , itemName : " + itemName + " , controllerName : " + controllerName);
+
+        mDialog = new DialogUtil(this);
+        String title = controllerName + " 변경";
+        //String message = "개수를 " + String.valueOf(position) + " 으로 변경하시겠습니까?";
+        String message = "[" + itemName + "]  으로 변경하시겠습니까?";
+        setFinishTimerReset();
+
+        DialogInterface.OnClickListener positiveListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        closeDialog();
+                        setFinishTimerReset();
+                        onItemChanged(type, position, itemName);
+                    }
+                };
+
+        DialogInterface.OnClickListener negativeListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        if (switchButton != null)
+                            switchButton.switchEnabled(!switchButton.IsSet());
+
+                        closeDialog();
+                    }
+                };
+
+        mDialog.openCommonDialog(title, message, positiveListener, negativeListener);
+    }
+
+
+
+    @Override
+    public void onSwitchChanged(SwitchButton switchButton, boolean isSet, int type, Object object) {
+        String typeName = (String)object;
+        int idx = isSet ? 0 : 1;
+        String itemName = null;
+        List<String> itemList = switchButton.getText();
+        setFinishTimerReset();
+
+        if ((itemList != null) && (itemList.size() > 1)) {
+            itemName = itemList.get(idx);
+
+            if (DEBUG)   Log.d(TAG, "onSwitchChanged() itemName : " + itemName
+                    +  ", typeName : " + typeName + " , type : " + type
+            );
+        }
+
+        switchChangedDialog(switchButton, type, idx/*isSet*/, itemName, typeName);
+    }
+
+
+
+    // update item to DB
+    private void updateSetUsedToSubDevice(int type, final int position, final String itemName) {
+        if (DEBUG)  Log.d(TAG, "updateSetUsedToSubDevice() type : " + type
+                + ", position : " + position
+                + ", itemName : " + itemName
+        );
+        MainApplication.getApplication().setReboot();
+
+        String value = "";
+
+        if (itemName == null)
+            return;
+
+        switch (type) {
+            case DETAIL_TYPE_USE_INNER_MOTION_DETECTOR:
+            case DETAIL_TYPE_USE_OUTER_MOTION_DETECTOR:
+            case DETAIL_TYPE_USE_OUTER_MOTION_DETECTOR_TO_INNER_MOTION:
+            {
+                int i = 4;
+                boolean bDoUsed = false;
+
+                SwitchButton switchButton_1 = (SwitchButton)this.findViewById(R.id.btn_switch_use_inner_motion_detector);
+                SwitchButton switchButton_2 = (SwitchButton)this.findViewById(R.id.btn_switch_use_outer_motion_detector);
+                SwitchButton switchButton_3 = (SwitchButton)this.findViewById(R.id.btn_switch_use_outer_motion_detector_to_inner_motion);
+
+                if (switchButton_1.IsSet()
+                        || switchButton_2.IsSet()
+                        || switchButton_3.IsSet()
+                        )
+                {
+                    bDoUsed = true;
+                }
+
+
+                final String controllerName = mMainDatabaseManager.getSubDevID(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_MOTION_SETTING);
+                if (controllerName != null) {
+                    value = controllerName;
+                    if (bDoUsed == true) {
+                        String typeName = null;
+
+                        value += "("
+                                + Const.CONTROLLER_SETTING_DO_USED
+                                + ")"
+                        ;
+                    }
+                    else {
+                        value += "("
+                                + Const.CONTROLLER_SETTING_DO_NOT_USED
+                                + ")"
+                        ;
+                    }
+
+
+                    List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_MOTION_SETTING);
+                    if ((InfoList != null) && (InfoList.size() > 1)) {
+                        String deviceNo = InfoList.get(0);
+                        String circuitNo = InfoList.get(1);
+
+                        value = deviceNo
+                                + "("
+
+                                + circuitNo
+                                + ":"
+
+                                + value
+                        ;
+
+                        String typeName = "";
+                        if (type == DETAIL_TYPE_USE_INNER_MOTION_DETECTOR)
+                            typeName = Const.MOTION_SETTING_TYPE_USE_INNER_MOTION_DETECTOR;
+                        else if (type == DETAIL_TYPE_USE_OUTER_MOTION_DETECTOR)
+                            typeName = Const.MOTION_SETTING_TYPE_USE_OUTER_MOTION_DETECTOR;
+                        else if (type == DETAIL_TYPE_USE_OUTER_MOTION_DETECTOR_TO_INNER_MOTION)
+                            typeName = Const.MOTION_SETTING_TYPE_USE_OUTER_MOTION_DETECTOR_TO_INNER_MOTION;
+
+                        for (; i + 1 <InfoList.size(); i=i+2) {
+
+                            String setName = InfoList.get(i);
+                            String setValue = InfoList.get(i + 1);
+
+                            if (typeName.equals(setName)) {
+                                if (position == 0)
+                                    setValue = Const.CONTROLLER_SETTING_DO_USED;
+                                else
+                                    setValue = Const.CONTROLLER_SETTING_DO_NOT_USED;
+                            }
+
+
+                            value += setName
+                                    + "("
+                                    + setValue
+                                    + ")"
+                            ;
+                        }
+
+                        value += ")"
+                        ;
+
+                        mMainDatabaseManager.setSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_MOTION_SETTING, 0, value);
+                    }
+                }
+            }
+            break;
+
+            case DETAIL_TYPE_USE_WALLPAD_CAMERA:
+                mMainDatabaseManager.updateSetUsedToSubDeviceSwitchButtonOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_WALLPAD_CAMERA, position);
+                break;
+
+            case DETAIL_TYPE_USE_MULTI_SWITCH:
+                final String controllerName_multiSwitch = mMainDatabaseManager.getSubDevID(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LIGHT);
+                if (controllerName_multiSwitch != null) {
+                    value = controllerName_multiSwitch;
+                    String typeName = Const.LIGHT_CONTROLLER_TYPE_LIVING_ROOM;
+
+                    if (position == 0)
+                    {
+                        typeName = Const.LIGHT_CONTROLLER_TYPE_ROOMS;
+                    }
+                    else
+                    {
+                        typeName = Const.LIGHT_CONTROLLER_TYPE_LIVING_ROOM;
+                    }
+
+                    value += "("
+                            + Const.CONTROLLER_SETTING_DO_USED
+                            + ")"
+
+                            + Const.CONTROLLER_SETTING_TYPE
+                            + "("
+                            + typeName
+                            + ")"
+                    ;
+
+                    List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LIGHT);
+                    if ((InfoList != null) && (InfoList.size() > 1)) {
+                        String deviceNo = InfoList.get(0);
+                        String circuitNo = InfoList.get(1);
+
+                        value = deviceNo
+                                + "("
+
+                                + circuitNo
+                                + ":"
+
+                                + value
+
+                                + ")"
+                        ;
+
+                        mMainDatabaseManager.setSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LIGHT, 0, value);
+                    }
+                }
+                break;
+
+            case DETAIL_TYPE_USE_KCC_DIM_CTR:
+                mMainDatabaseManager.updateSetUsedToSubDeviceSwitchButtonOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DIMMING_KCC, position);
+                break;
+
+            case DETAIL_TYPE_USE_DISTRIBUTION_KIND:
+                final String controllerDistName = mMainDatabaseManager.getSubDevID(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DISTRIBUTION);
+                if (controllerDistName != null) {
+                    value = controllerDistName;
+                    if (position == 0) {
+                        value += "("
+                                + Const.CONTROLLER_SETTING_DO_NOT_USED
+                                + ")"
+                                + Const.CONTROLLER_SETTING_TYPE
+                                + "("
+                                + Const.CONTROLLER_SETTING_DO_NOT_USED
+                                + ")"
+                        ;
+                    }
+                    else {
+                        String typeName = null;
+
+                        if (itemName.equals(Const.CONTROLLER_SETTING_DO_NOT_USED))
+                            typeName = Const.CONTROLLER_SETTING_DO_NOT_USED;
+                        else if (itemName.equals(Const.CONTROLLER_DISTRIBUTION_KIND_SMART))
+                            typeName = Const.CONTROLLER_DISTRIBUTION_KIND_SMART;
+                        else if (itemName.equals(Const.CONTROLLER_DISTRIBUTION_KIND_KNX))
+                            typeName = Const.CONTROLLER_DISTRIBUTION_KIND_KNX;
+
+                        value += "("
+                                + Const.CONTROLLER_SETTING_DO_USED
+                                + ")"
+
+                                + Const.CONTROLLER_SETTING_TYPE
+                                + "("
+                                + typeName
+                                + ")"
+                        ;
+                    }
+
+
+                    List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DISTRIBUTION);
+                    if ((InfoList != null) && (InfoList.size() > 1)) {
+                        String deviceNo = InfoList.get(0);
+                        String circuitNo = InfoList.get(1);
+
+                        value = deviceNo
+                                + "("
+
+                                + circuitNo
+                                + ":"
+
+                                + value
+
+                                + ")"
+                        ;
+
+                        mMainDatabaseManager.setSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DISTRIBUTION, 0, value);
+                    }
+                }
+                break;
+
+            case DETAIL_TYPE_USE_ELECTRIC_RANGE:
+                if(position == 0) // 전기레인지 사용함 -> 가스 사용안함
+                {
+                    mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_GAS, 0);
+                }
+                mMainDatabaseManager.updateSetUsedToSubDeviceSwitchButtonOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ELECTRIC_RANGE, position);
+                break;
+
+            case DETAIL_TYPE_USE_ENERGY_DEVICES:
+                mMainDatabaseManager.updateSetUsedToSubDeviceSwitchButtonOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ENERGY_DEVICES, position);
+                break;
+
+            case DETAIL_TYPE_USE_SMART_KEY:
+
+                //mMainDatabaseManager.updateSetUsedToSubDeviceSwitchButtonOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SMART_KEY, position);
+                final String controllerName = mMainDatabaseManager.getSubDevID(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DOOR_CAMERA);
+                if (controllerName != null)
+                {
+                    value = controllerName;
+
+                    String typeName = Const.DOOR_CAMERA_TYPE_DEFAULT;
+                    if (position == 0)
+                    {
+                        typeName =  Const.DOOR_CAMERA_TYPE_SMART_KEY;
+                    }
+                    else
+                    {
+                        typeName =  Const.DOOR_CAMERA_TYPE_DEFAULT;
+                    }
+
+                    value += "("
+                            + Const.CONTROLLER_SETTING_DO_USED
+                            + ")"
+                            + "종류"
+                            + "("
+                            + typeName
+                            + ")"
+                    ;
+
+
+                    List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DOOR_CAMERA);
+                    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_DOOR_CAMERA, 0, value);
+                }
+                break;
+
+            case DETAIL_TYPE_USE_LIGHT_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT:
+                final String controllerName_intLight = mMainDatabaseManager.getSubDevID(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LIGHT);
+                if (controllerName_intLight != null)
+                {
+                    value = controllerName_intLight;
+
+                    String typeName = Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT;
+                    if (position == 0)
+                    {
+                        typeName =  Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT;
+                    }
+                    else
+                    {
+                        typeName =  Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_NORMAL;
+                    }
+
+                    value += "("
+                            + Const.CONTROLLER_SETTING_DO_USED
+                            + ")"
+                            + "종류"
+                            + "("
+                            + typeName
+                            + ")"
+                    ;
+
+
+                    List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LIGHT);
+                    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_LIGHT, 0, value);
+                }
+                break;
+
+            case DETAIL_TYPE_USE_DANJI_CONFIG:
+                eraseProc();
+                if(position == 0)
+                {
+                    DanjiSettingUse = true;
+                }
+                else
+                {
+                    DanjiSettingUse = false;
+                    mSel_Mode = DONG_HO_INPUT_STATE_DONG;
+
+                }
+                mMainDatabaseManager.updateSetUsedToSubDeviceSwitchButtonOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DANJI_CONFIG, position);
+                break;
+
+            case DETAIL_TYPE_USE_RENT_HOME:
+                if(position == 0)
+                {
+                    RentHomeSettingUse = true;
+                    mMainDatabaseManager.updateSetUsedToSubDeviceSwitchButtonOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DANJI_RENT_HOME_USE, position);
+                    if (switchButton_DanjiRentHouse != null)
+                    {
+                        switchButton_DanjiRentHouse.switchEnabled(true);
+                    }
+                }
+                else
+                {
+                    RentHomeSettingUse = false;
+                }
+                mMainDatabaseManager.updateSetUsedToSubDeviceSwitchButtonOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_RENT_HOME, position);
+                break;
+
+            case DETAIL_TYPE_USE_DANJI_RENT_HOME_USE:
+                mMainDatabaseManager.updateSetUsedToSubDeviceSwitchButtonOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DANJI_RENT_HOME_USE, position);
+                break;
+
+            case DETAIL_TYPE_USE_ESCAPE_LADDER_DOWN_RECV:
+                mMainDatabaseManager.updateSetUsedToSubDeviceSwitchButtonOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ESCAPELADDER_DOWN_RECV, position);
+                break;
+
+            case DETAIL_TYPE_USE_GATEWAY_MODEL_KIND:
+            {
+                final String controllerGatewayName = mMainDatabaseManager.getSubDevID(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_GATEWAY_MODEL_KIND);
+                if (controllerGatewayName != null) {
+                    value = controllerGatewayName;
+                    if (position == 0) {
+                        value += "("
+                                + Const.CONTROLLER_SETTING_DO_NOT_USED
+                                + ")"
+                                + Const.CONTROLLER_SETTING_TYPE
+                                + "("
+                                + Const.CONTROLLER_SETTING_DO_NOT_USED
+                                + ")"
+                        ;
+                    }
+                    else {
+                        String typeName = null;
+
+                        if (itemName.equals(Const.CONTROLLER_SETTING_DO_NOT_USED))
+                            typeName = Const.CONTROLLER_SETTING_DO_NOT_USED;
+                        else if (itemName.equals(Const.CONTROLLER_GATEWAY_KIND_200))
+                            typeName = Const.CONTROLLER_GATEWAY_KIND_200;
+                        else if (itemName.equals(Const.CONTROLLER_GATEWAY_KIND_300))
+                            typeName = Const.CONTROLLER_GATEWAY_KIND_300;
+
+                        value += "("
+                                + Const.CONTROLLER_SETTING_DO_USED
+                                + ")"
+
+                                + Const.CONTROLLER_SETTING_TYPE
+                                + "("
+                                + typeName
+                                + ")"
+                        ;
+                    }
+
+
+                    List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_GATEWAY_MODEL_KIND);
+                    if ((InfoList != null) && (InfoList.size() > 1)) {
+                        String deviceNo = InfoList.get(0);
+                        String circuitNo = InfoList.get(1);
+
+                        value = deviceNo
+                                + "("
+
+                                + circuitNo
+                                + ":"
+
+                                + value
+
+                                + ")"
+                        ;
+
+                        mMainDatabaseManager.setSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_GATEWAY_MODEL_KIND, 0, value);
+                    }
+                }
+            }
+            break;
+
+            case DETAIL_TYPE_USE_SUBWPD_USE:
+                mMainDatabaseManager.updateSetUsedToSubDeviceSwitchButtonOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SUBWALLPAD, position);
+                if (position == 0) {
+                    // 서브월패드
+                    wallpaddbmgr mwallpaddbmgr = new wallpaddbmgr(this);
+                    mwallpaddbmgr.DeleteTableInst(wallpaddbmgr.WidgetTBL);
+                    mwallpaddbmgr.setWidgetforSubwallpad();
+                    mwallpaddbmgr.closeDB();
+                }
+                else if (position == 1) {
+                    // 메인월패드
+                    wallpaddbmgr mwallpaddbmgr = new wallpaddbmgr(this);
+                    mwallpaddbmgr.DeleteTableInst(wallpaddbmgr.WidgetTBL);
+                    mwallpaddbmgr.initWidgetData();
+                    mwallpaddbmgr.closeDB();
+                }
+                break;
+
+            default:
+                break;
+        }
+    }
+
+
+    // item changed callback
+    public void onItemChanged(final int type, final int position, final String itemName) {
+
+        if (DEBUG)  Log.d(TAG, "onItemChanged() type : " + type
+                + ", position : " + position
+                + ", itemName : " + itemName
+        );
+
+        MainApplication.getApplication().setReboot();
+
+        switch (type) {
+            case DETAIL_TYPE_USE_INNER_MOTION_DETECTOR:
+                updateSetUsedToSubDevice(type, position, itemName);
+                break;
+
+            case DETAIL_TYPE_USE_OUTER_MOTION_DETECTOR:
+                updateSetUsedToSubDevice(type, position, itemName);
+                break;
+
+            case DETAIL_TYPE_USE_OUTER_MOTION_DETECTOR_TO_INNER_MOTION:
+                updateSetUsedToSubDevice(type, position, itemName);
+                break;
+
+            case DETAIL_TYPE_USE_WALLPAD_CAMERA:
+                updateSetUsedToSubDevice(type, position, itemName);
+                break;
+
+            case DETAIL_TYPE_USE_MULTI_SWITCH:
+                updateSetUsedToSubDevice(type, position, itemName);
+                break;
+
+
+            case DETAIL_TYPE_USE_ENERGY_DEVICES:
+            case DETAIL_TYPE_USE_SMART_KEY:
+                updateSetUsedToSubDevice(type, position, itemName);
+                break;
+
+            case DETAIL_TYPE_USE_LIGHT_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT:
+                updateSetUsedToSubDevice(type, position, itemName);
+                break;
+
+            case DETAIL_TYPE_USE_DANJI_CONFIG:
+                updateSetUsedToSubDevice(type, position, itemName);
+                break;
+
+            case DETAIL_TYPE_USE_RENT_HOME:
+            case DETAIL_TYPE_USE_DANJI_RENT_HOME_USE:
+            case DETAIL_TYPE_USE_KCC_DIM_CTR:
+            case DETAIL_TYPE_USE_DISTRIBUTION_KIND:
+            case DETAIL_TYPE_USE_GATEWAY_MODEL_KIND:
+            case DETAIL_TYPE_USE_ELECTRIC_RANGE:
+            case DETAIL_TYPE_USE_ESCAPE_LADDER_DOWN_RECV:
+            case DETAIL_TYPE_USE_SUBWPD_USE:
+                updateSetUsedToSubDevice(type, position, itemName);
+                break;
+
+            default:
+                break;
+        }
+    }
+
+
+
+
+    public String getAppVersion()
+    {
+        String version;
+        try {
+            PackageInfo i =  this.getPackageManager().getPackageInfo(this.getPackageName(), 0);
+            version = i.versionName;
+        } catch(NameNotFoundException e) { return null; }
+
+        return version;
+    }
+
+    public void AppVersionLogOut()
+    {
+        Log.i("Version", "<><><><>  Applications   Version = [" + getAppVersion() + "] " + "<><><><>");
+//        Version.LogOut();  // WallPadSupport 버전정보 출력 (사용않할시 주석처리)
+    }
+
+    /**
+     * 자동종료 타이머 생성 (생성자)<br>
+     * 엑티비티가 자동종료를 사용한다면 본메소드를 사용한다.<br>
+     *
+     * @param nFinishTime - 자동종료 시간 (단위 : 초)
+     * @reutrn true : 성공, false : 실패
+     * <br><br>
+     * @Example
+     * <pre class="prettyprint">
+     * super.setFinishTimerCreate(30);      // 자동종료 타이머 30초 설정
+     * </pre>
+     */
+    protected boolean setFinishTimerCreate(int nFinishTime)
+    {
+        Log.d(TAG, "setFinishTimerStart - nFinishTime : " + nFinishTime + " Sec");
+
+        mFinishTime = nFinishTime;
+        if(nFinishTime <= 0)
+        {
+            Log.e(TAG, "setFinishTimerCreate - param : nFinishTime - Out of range !!! (" + nFinishTime + ")");
+            mFinishTimerEnable = false;
+            return false;
+        }
+
+        if(mFinishTimer != null) mFinishTimer.cancel();
+        mFinishTimer = new CountDownTimer( (long)(mFinishTime * 1000), 1000) {
+            @Override
+            public void onFinish() {
+                Log.d(TAG, "FinishTimer - onFinish !!!");
+
+                if(DongHoInfo_NONE == true) //동호 정보가 설정되지 않은 경우는 20분 후 LCD Normal ON
+                {
+                    //PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
+                    //pm.userActivity(1, true);
+                    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
+                }
+                else
+                {
+                    finish();
+                }
+
+            }
+
+            @Override
+            public void onTick(long arg0) {
+                long RemainingTime = (long)(arg0/1000);
+                if(RemainingTime <= 10)
+                {
+                    Log.d(TAG, "FinishTimer - onTick (" + RemainingTime + " sec)");
+                }
+            }
+        };
+
+        mFinishTimer.cancel();
+        mFinishTimer.start();
+
+        mFinishTimerEnable = true;
+        return true;
+    }
+
+    /**
+     * 자동종료 타이머 리셋<br>
+     * 본 메소드는 {@link #setFinishTimerCreate} 를 통하여 생성된<br>
+     * 자동종료 타이머를 설정된 시간으로 리셋 시킨다.<br>
+     * ※ 특별한 경우가 아니라면 본 클래스에서 자동으로 조정하므로 사용할 필요가 없다.<br>
+     *
+     * @reutrn true : 성공, false : 실패
+     * <br><br>
+     * @Example
+     * <pre class="prettyprint">
+     * super.setFinishTimerReset();      // 자동종료 타이머 리셋
+     * </pre>
+     */
+    protected static boolean setFinishTimerReset()
+    {
+        if(mFinishTimerEnable)
+        {
+            if(mFinishTimer != null)
+            {
+                mFinishTimer.cancel();
+                mFinishTimer.start();
+            }
+            //Log.d(TAG, "FinishTimer - setFinishTimerReset !!!");
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * 자동종료 타이머 삭제<br>
+     * 본 메소드는 {@link #setFinishTimerCreate} 를 통하여 생성된<br>
+     * 자동종료 타이머를 삭제시킨다.<br>
+     * ※ 삭제된 후에는 다시 사용할 경우에는 {@link #setFinishTimerCreate} 를 사용하여 재 생성한다.<br>
+     * @reutrn true : 성공, false : 실패
+     * <br><br>
+     * @Example
+     * <pre class="prettyprint">
+     * super.setFinishTimerDestroy();      // 자동종료 타이머 삭제
+     * </pre>
+     */
+    protected boolean setFinishTimerDestroy()
+    {
+        mFinishTimerEnable = false;
+        if(mFinishTimer != null)
+        {
+            Log.d(TAG, "setFinishTimerDestroy");
+            mFinishTimer.cancel();
+            mFinishTimer = null;
+            return true;
+        }
+        return false;
+    }
+}
+
+

+ 141 - 141
ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/AdminCheckFragment.java

@@ -1,141 +1,141 @@
-package com.artncore.managersetting.ui.fragments;
-
-import android.content.res.Resources;
-import android.os.Bundle;
-//import android.support.v4.app.Fragment;
-import androidx.fragment.app.Fragment;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.LinearLayout;
-
-import com.artncore.managersetting.R;
-import com.artncore.managersetting.domain.Const;
-import com.artncore.managersetting.ui.activities.MainActivity;
-
-/**
- * A fragment representing a single Item detail screen. This fragment is either
- * contained in a {@link MainActivity} in two-pane mode (on tablets) or a
- * {link ItemDetailActivity} on handsets.
- */
-public class AdminCheckFragment extends Fragment implements AdminSubMenu.SubMenuChangedListener {
-    private static final String TAG = "AdminCheckFragment";
-
-    private final boolean DEBUG = true;
-
-    public static final int SUB_MENU_IDX_CHECK_CONTROLLER = 0;
-    public static final int SUB_MENU_IDX_CHECK_NETWORK = 1;
-    public static final int SUB_MENU_IDX_CHECK_SENSOR = 2;
-    public static final int SUB_MENU_IDX_CHECK_ETC = 3;
-
-
-
-    private AdminSubMenu mAdminSubMenu;
-
-    private View mRootView;
-
-    /**
-     * The dummy content this fragment is presenting.
-     */
-    private AdminMenu.MenuItem mItem;
-
-    /**
-     * Mandatory empty constructor for the fragment manager to instantiate the
-     * fragment (e.g. upon screen orientation changes).
-     */
-    public AdminCheckFragment() {
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        if (getArguments().containsKey(Const.ARG_ITEM_ID)) {
-            // Load the dummy content specified by the fragment
-            // arguments. In a real-world scenario, use a Loader
-            // to load content from a content provider.
-        mItem = AdminMenu.ITEM_MAP.get(getArguments().getString(
-                    Const.ARG_ITEM_ID));
-        }
-    }
-
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-            Bundle savedInstanceState) {
-        View rootView = inflater.inflate(R.layout.fragment_admin_setting,
-                container, false);
-
-        mRootView = rootView;
-
-        return rootView;
-    }
-
-
-    @Override
-    public void onViewCreated(View view, Bundle savedInstanceState) {
-        super.onViewCreated(view, savedInstanceState);
-
-        Resources res = getActivity().getResources();
-        String[] menuItem= res.getStringArray(R.array.entries_menu_admin_check);
-
-        mAdminSubMenu = new AdminSubMenu(getActivity(), menuItem, this);
-
-
-        LinearLayout.LayoutParams subMenuParams = new LinearLayout.LayoutParams(
-                            ViewGroup.LayoutParams.MATCH_PARENT,
-                            ViewGroup.LayoutParams.WRAP_CONTENT);
-
-        ViewGroup SubMenuView = (ViewGroup) view.findViewById(R.id.sub_menu_layout);
-        (SubMenuView).addView(mAdminSubMenu.getView(), subMenuParams);
-
-        onSubMenuChanged(0);
-    }
-
-
-    @Override
-    public void onSubMenuChanged(int menuIdx) {
-        if (DEBUG)  Log.d(TAG, "onSubMenuChanged() menuIdx : " + menuIdx);
-        MainActivity.setFinishTimerReset();
-        
-        mAdminSubMenu.setMenuSelected(menuIdx, true);
-        switch (menuIdx) {
-            case SUB_MENU_IDX_CHECK_CONTROLLER:
-            {
-                CheckControllerFragment fragment = new CheckControllerFragment();
-                getActivity().getSupportFragmentManager().beginTransaction()
-                        .replace(R.id.menu_content, fragment).commit();
-            }
-            break;
-
-            case SUB_MENU_IDX_CHECK_NETWORK:
-            {
-                CheckNetworkFragment fragment = new CheckNetworkFragment();
-                getActivity().getSupportFragmentManager().beginTransaction()
-                        .replace(R.id.menu_content, fragment).commit();
-            }
-            break;
-
-            case SUB_MENU_IDX_CHECK_SENSOR:
-            {
-                CheckSensorFragment fragment = new CheckSensorFragment();
-                getActivity().getSupportFragmentManager().beginTransaction()
-                        .replace(R.id.menu_content, fragment).commit();
-            }
-            break;
-
-            case SUB_MENU_IDX_CHECK_ETC:
-            {
-                CheckEtcFragment fragment = new CheckEtcFragment();
-                getActivity().getSupportFragmentManager().beginTransaction()
-                        .replace(R.id.menu_content, fragment).commit();
-            }
-            break;
-
-            default:
-                break;
-        }
-    }
-
-}
+package com.artncore.managersetting.ui.fragments;
+
+import android.content.res.Resources;
+import android.os.Bundle;
+//import android.support.v4.app.Fragment;
+import androidx.fragment.app.Fragment;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.LinearLayout;
+
+import com.artncore.managersetting.R;
+import com.artncore.managersetting.domain.Const;
+import com.artncore.managersetting.ui.activities.MainActivity;
+
+/**
+ * A fragment representing a single Item detail screen. This fragment is either
+ * contained in a {@link MainActivity} in two-pane mode (on tablets) or a
+ * {link ItemDetailActivity} on handsets.
+ */
+public class AdminCheckFragment extends Fragment implements AdminSubMenu.SubMenuChangedListener {
+    private static final String TAG = "AdminCheckFragment";
+
+    private final boolean DEBUG = true;
+
+    public static final int SUB_MENU_IDX_CHECK_CONTROLLER = 0;
+    public static final int SUB_MENU_IDX_CHECK_NETWORK = 1;
+    public static final int SUB_MENU_IDX_CHECK_SENSOR = 2;
+    public static final int SUB_MENU_IDX_CHECK_ETC = 3;
+
+
+
+    private AdminSubMenu mAdminSubMenu;
+
+    private View mRootView;
+
+    /**
+     * The dummy content this fragment is presenting.
+     */
+    private AdminMenu.MenuItem mItem;
+
+    /**
+     * Mandatory empty constructor for the fragment manager to instantiate the
+     * fragment (e.g. upon screen orientation changes).
+     */
+    public AdminCheckFragment() {
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        if (getArguments().containsKey(Const.ARG_ITEM_ID)) {
+            // Load the dummy content specified by the fragment
+            // arguments. In a real-world scenario, use a Loader
+            // to load content from a content provider.
+        mItem = AdminMenu.ITEM_MAP.get(getArguments().getString(
+                    Const.ARG_ITEM_ID));
+        }
+    }
+
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+            Bundle savedInstanceState) {
+        View rootView = inflater.inflate(R.layout.fragment_admin_setting,
+                container, false);
+
+        mRootView = rootView;
+
+        return rootView;
+    }
+
+
+    @Override
+    public void onViewCreated(View view, Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+
+        Resources res = getActivity().getResources();
+        String[] menuItem= res.getStringArray(R.array.entries_menu_admin_check);
+
+        mAdminSubMenu = new AdminSubMenu(getActivity(), menuItem, this);
+
+
+        LinearLayout.LayoutParams subMenuParams = new LinearLayout.LayoutParams(
+                            ViewGroup.LayoutParams.MATCH_PARENT,
+                            ViewGroup.LayoutParams.WRAP_CONTENT);
+
+        ViewGroup SubMenuView = (ViewGroup) view.findViewById(R.id.sub_menu_layout);
+        (SubMenuView).addView(mAdminSubMenu.getView(), subMenuParams);
+
+        onSubMenuChanged(0);
+    }
+
+
+    @Override
+    public void onSubMenuChanged(int menuIdx) {
+        if (DEBUG)  Log.d(TAG, "onSubMenuChanged() menuIdx : " + menuIdx);
+        MainActivity.setFinishTimerReset();
+        
+        mAdminSubMenu.setMenuSelected(menuIdx, true);
+        switch (menuIdx) {
+            case SUB_MENU_IDX_CHECK_CONTROLLER:
+            {
+                CheckControllerFragment fragment = new CheckControllerFragment();
+                getActivity().getSupportFragmentManager().beginTransaction()
+                        .replace(R.id.menu_content, fragment).commit();
+            }
+            break;
+
+            case SUB_MENU_IDX_CHECK_NETWORK:
+            {
+                CheckNetworkFragment fragment = new CheckNetworkFragment();
+                getActivity().getSupportFragmentManager().beginTransaction()
+                        .replace(R.id.menu_content, fragment).commit();
+            }
+            break;
+
+            case SUB_MENU_IDX_CHECK_SENSOR:
+            {
+                CheckSensorFragment fragment = new CheckSensorFragment();
+                getActivity().getSupportFragmentManager().beginTransaction()
+                        .replace(R.id.menu_content, fragment).commit();
+            }
+            break;
+
+            case SUB_MENU_IDX_CHECK_ETC:
+            {
+                CheckEtcFragment fragment = new CheckEtcFragment();
+                getActivity().getSupportFragmentManager().beginTransaction()
+                        .replace(R.id.menu_content, fragment).commit();
+            }
+            break;
+
+            default:
+                break;
+        }
+    }
+
+}

+ 119 - 119
ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/AdminDeveloperModeFragment.java

@@ -1,119 +1,119 @@
-package com.artncore.managersetting.ui.fragments;
-
-import android.content.res.Resources;
-import android.os.Bundle;
-//import android.support.v4.app.Fragment;
-import androidx.fragment.app.Fragment;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.LinearLayout;
-
-import com.artncore.managersetting.R;
-import com.artncore.managersetting.domain.Const;
-import com.artncore.managersetting.ui.activities.MainActivity;
-
-/**
- * A fragment representing a single Item detail screen. This fragment is either
- * contained in a {@link MainActivity} in two-pane mode (on tablets) or a
- * {link ItemDetailActivity} on handsets.
- */
-public class AdminDeveloperModeFragment extends Fragment implements AdminSubMenu.SubMenuChangedListener {
-    private static final String TAG = "AdminDeveloperModeFragment";
-
-    private final boolean DEBUG = true;
-
-    public static final int SUB_MENU_IDX_SET_IP = 0;
-
-
-
-    private AdminSubMenu mAdminSubMenu;
-
-    private View mRootView;
-
-    /**
-     * The dummy content this fragment is presenting.
-     */
-    private AdminMenu.MenuItem mItem;
-
-    /**
-     * Mandatory empty constructor for the fragment manager to instantiate the
-     * fragment (e.g. upon screen orientation changes).
-     */
-    public AdminDeveloperModeFragment() {
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        if (getArguments().containsKey(Const.ARG_ITEM_ID)) {
-            // Load the dummy content specified by the fragment
-            // arguments. In a real-world scenario, use a Loader
-            // to load content from a content provider.
-            mItem = AdminMenu.ITEM_MAP.get(getArguments().getString(
-                    Const.ARG_ITEM_ID));
-        }
-    }
-
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-            Bundle savedInstanceState) {
-        View rootView = inflater.inflate(R.layout.fragment_admin_query,
-                container, false);
-
-        mRootView = rootView;
-
-        return rootView;
-    }
-
-
-    @Override
-    public void onViewCreated(View view, Bundle savedInstanceState) {
-        super.onViewCreated(view, savedInstanceState);
-
-        Resources res = getActivity().getResources();
-        String[] menuItem= res.getStringArray(R.array.entries_menu_developer_mode);
-
-        mAdminSubMenu = new AdminSubMenu(getActivity(), menuItem, this);
-
-        LinearLayout.LayoutParams subMenuParams = new LinearLayout.LayoutParams(
-                            ViewGroup.LayoutParams.MATCH_PARENT,
-                            ViewGroup.LayoutParams.WRAP_CONTENT);
-
-        ViewGroup SubMenuView = (ViewGroup) view.findViewById(R.id.sub_menu_layout);
-        (SubMenuView).addView(mAdminSubMenu.getView(), subMenuParams);
-
-        
-        onSubMenuChanged(0);
-    }
-
-
-    @Override
-    public void onSubMenuChanged(int menuIdx) {
-        if (DEBUG)  Log.d(TAG, "onSubMenuChanged() menuIdx : " + menuIdx);
-        MainActivity.setFinishTimerReset();
-        
-        mAdminSubMenu.setMenuSelected(menuIdx, true);
-        switch (menuIdx) {
-            case SUB_MENU_IDX_SET_IP:
-            {
-                /*
-                SetSeverIPFragment fragment = new SetSeverIPFragment();
-                getActivity().getSupportFragmentManager().beginTransaction()
-                        .replace(R.id.menu_content, fragment).commit();
-                        */
-                SetDeveloperPage fragment = new SetDeveloperPage();
-                getActivity().getSupportFragmentManager().beginTransaction()
-                        .replace(R.id.menu_content, fragment).commit();
-            }
-            break;
-
-            default:
-                break;
-        }
-    }
-
-}
+package com.artncore.managersetting.ui.fragments;
+
+import android.content.res.Resources;
+import android.os.Bundle;
+//import android.support.v4.app.Fragment;
+import androidx.fragment.app.Fragment;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.LinearLayout;
+
+import com.artncore.managersetting.R;
+import com.artncore.managersetting.domain.Const;
+import com.artncore.managersetting.ui.activities.MainActivity;
+
+/**
+ * A fragment representing a single Item detail screen. This fragment is either
+ * contained in a {@link MainActivity} in two-pane mode (on tablets) or a
+ * {link ItemDetailActivity} on handsets.
+ */
+public class AdminDeveloperModeFragment extends Fragment implements AdminSubMenu.SubMenuChangedListener {
+    private static final String TAG = "AdminDeveloperModeFragment";
+
+    private final boolean DEBUG = true;
+
+    public static final int SUB_MENU_IDX_SET_IP = 0;
+
+
+
+    private AdminSubMenu mAdminSubMenu;
+
+    private View mRootView;
+
+    /**
+     * The dummy content this fragment is presenting.
+     */
+    private AdminMenu.MenuItem mItem;
+
+    /**
+     * Mandatory empty constructor for the fragment manager to instantiate the
+     * fragment (e.g. upon screen orientation changes).
+     */
+    public AdminDeveloperModeFragment() {
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        if (getArguments().containsKey(Const.ARG_ITEM_ID)) {
+            // Load the dummy content specified by the fragment
+            // arguments. In a real-world scenario, use a Loader
+            // to load content from a content provider.
+            mItem = AdminMenu.ITEM_MAP.get(getArguments().getString(
+                    Const.ARG_ITEM_ID));
+        }
+    }
+
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+            Bundle savedInstanceState) {
+        View rootView = inflater.inflate(R.layout.fragment_admin_query,
+                container, false);
+
+        mRootView = rootView;
+
+        return rootView;
+    }
+
+
+    @Override
+    public void onViewCreated(View view, Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+
+        Resources res = getActivity().getResources();
+        String[] menuItem= res.getStringArray(R.array.entries_menu_developer_mode);
+
+        mAdminSubMenu = new AdminSubMenu(getActivity(), menuItem, this);
+
+        LinearLayout.LayoutParams subMenuParams = new LinearLayout.LayoutParams(
+                            ViewGroup.LayoutParams.MATCH_PARENT,
+                            ViewGroup.LayoutParams.WRAP_CONTENT);
+
+        ViewGroup SubMenuView = (ViewGroup) view.findViewById(R.id.sub_menu_layout);
+        (SubMenuView).addView(mAdminSubMenu.getView(), subMenuParams);
+
+        
+        onSubMenuChanged(0);
+    }
+
+
+    @Override
+    public void onSubMenuChanged(int menuIdx) {
+        if (DEBUG)  Log.d(TAG, "onSubMenuChanged() menuIdx : " + menuIdx);
+        MainActivity.setFinishTimerReset();
+        
+        mAdminSubMenu.setMenuSelected(menuIdx, true);
+        switch (menuIdx) {
+            case SUB_MENU_IDX_SET_IP:
+            {
+                /*
+                SetSeverIPFragment fragment = new SetSeverIPFragment();
+                getActivity().getSupportFragmentManager().beginTransaction()
+                        .replace(R.id.menu_content, fragment).commit();
+                        */
+                SetDeveloperPage fragment = new SetDeveloperPage();
+                getActivity().getSupportFragmentManager().beginTransaction()
+                        .replace(R.id.menu_content, fragment).commit();
+            }
+            break;
+
+            default:
+                break;
+        }
+    }
+
+}

+ 2 - 10
ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/AdminInRoomSensorSetFragment.java

@@ -33,7 +33,6 @@ import com.artncore.managersetting.ui.activities.MainActivity;
 import com.artncore.managersetting.util.DialogUtil;
 import com.artncore.wallpadapi.InRoomDetectSensor_API;
 import com.artncore.wallpadapi.WallPadAPI;
-import com.util.LogUtil;
 
 import kr.co.icontrols.v40ioctl.V40IF;
 import kr.co.icontrols.wallpadsupport.Version;
@@ -339,13 +338,9 @@ public class AdminInRoomSensorSetFragment extends Fragment {
                             InRoomDetectSensor_CheckHandler.sendEmptyMessageDelayed(0, 1000);
                         }
                     }
-                    catch (RuntimeException re) {
-                        LogUtil.errorLogInfo("", TAG, re);
-                    }
                     catch(Exception ex)
                     {
-                        //ex.printStackTrace();
-                        LogUtil.errorLogInfo("", TAG, ex);
+                        ex.printStackTrace();
                     }
                 }
 
@@ -667,13 +662,10 @@ public class AdminInRoomSensorSetFragment extends Fragment {
 
 
             ((RelativeLayout) rootView).addView(SetBtnView);
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
         }
         catch (Exception exc)
         {
-            //exc.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, exc);
+            exc.printStackTrace();
         }
 
 

+ 498 - 502
ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/AdminMenu.java

@@ -1,502 +1,498 @@
-package com.artncore.managersetting.ui.fragments;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import kr.co.icontrols.wallpadsupport.Version;
-import kr.co.icontrols.wallpadsupport.WpadScale;
-import kr.co.icontrols.wallpadsupport.WpadSound;
-import kr.co.icontrols.wallpadsupport.WpadSound.SND;
-import android.content.Context;
-import android.content.res.Resources;
-import android.graphics.Color;
-import android.util.Log;
-import android.util.TypedValue;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.AbsListView;
-import android.widget.AbsListView.OnScrollListener;
-import android.widget.AdapterView;
-import android.widget.AdapterView.OnItemClickListener;
-import android.widget.ArrayAdapter;
-import android.widget.Button;
-import android.widget.ListView;
-import android.widget.TextView;
-
-import com.artncore.WallPadDataMgr.WallpadDeviceSet;
-import com.artncore.managersetting.ui.activities.MainActivity;
-import com.artncore.managersetting.ui.fragments.AdminMenuFragment.Callbacks;
-import com.artncore.managersetting.util.StringUtil;
-import com.artncore.managersetting.util.ViewUtil;
-import com.artncore.managersetting.R;
-import com.util.LogUtil;
-
-/**
- * Helper class for providing sample content for user interfaces created by
- * Android template wizards.
- * <p>
- * TODO: Replace all uses of this class before publishing your app.
- */
-public class AdminMenu implements OnScrollListener {
-    private static final String TAG = "AdminMenu";
-
-    private final boolean DEBUG = true;
-    private final boolean DEBUG_SCROLL = true;
-
-    private final int LEFT_MENU_FULL_HEIGHT = 526;
-    private final int LEFT_MENU_MARGIN_BOTTOM = 1;
-
-    private final int LEFT_MENU_ITEM_HEIGHT = 78;
-
-    private final int UP_ARROW_HEIGHT = 70 + LEFT_MENU_MARGIN_BOTTOM;
-    private final int RIGHT_ARROW_WIDTH = UP_ARROW_HEIGHT;
-
-    private final String LIST_ITEM_COLOR_DEFAULT_ID = "#ADC2EB";
-    private final String LIST_ITEM_COLOR_SELECTED_ID = "#3366CC";
-
-
-    public static final String MENU_IDX_0 = "0";
-    public static final String MENU_IDX_1 = "1";
-    public static final String MENU_IDX_2 = "2";
-    public static final String MENU_IDX_3 = "3";
-    public static final String MENU_IDX_4 = "4";
-    public static final String MENU_IDX_5 = "5";
-    public static final String MENU_IDX_6 = "6";
-    public static final String MENU_IDX_7 = "7";
-    public static final String MENU_IDX_8 = "8";
-    public static final String MENU_IDX_9 = "9";
-
-    private Context mContext;
-    private WpadSound mWpadSound;
-    private Callbacks mCallbacks;
-    private View mRootView;
-    private ListView mListView;
-    private Button mBtnUp, mBtnDown;
-
-    private int mMenuCount = 0;
-    private int mBtnHeight = 0;
-    private boolean bVisibleButton = false;
-
-    private String mSelectedMenuID = null;
-    private int mBeforeSelectedMenuPosition = -1;
-
-    //[Model]
-    private int ModelType = Version.getModelType();
-    //private int ModelType = Version.MODEL_TYPE.IHN_1030_D;
-
-    /**
-     * An array of sample (dummy) items.
-     */
-    public static List<MenuItem> ITEMS = new ArrayList<MenuItem>();
-    //private static boolean bInit = false;
-
-    /**
-     * A map of sample (dummy) items, by ID.
-     */
-    public static Map<String, MenuItem> ITEM_MAP = new HashMap<String, MenuItem>();
-
-    // constructor
-    public AdminMenu(Context context, Callbacks callbacks) {
-        mContext = context;
-        mCallbacks = callbacks;
-
-        mWpadSound = MainActivity.getWpadSound();
-
-        LayoutInflater inflater = (LayoutInflater)mContext
-                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-
-        mRootView = inflater.inflate(R.layout.left_menu, null);
-
-        mListView = (ListView) mRootView.findViewById(R.id.menu_list);
-        mBtnUp = (Button) mRootView.findViewById(R.id.btn_up_arrow);
-        mBtnDown = (Button) mRootView.findViewById(R.id.btn_down_arrow);
-
-        initItem();
-    }
-
-    // return rootView
-    public View getView() {
-        return mRootView;
-    }
-
-    // init Item
-    private void initItem() {
-        if (DEBUG)  Log.d(TAG, "initItem() ");
-
-        clearItem();
-
-        final Resources res = mContext.getResources();
-        String[] menuItem= res.getStringArray(R.array.entries_main_menu);
-
-        mMenuCount = menuItem.length;
-
-        try
-        {
-            WallpadDeviceSet wds = new WallpadDeviceSet(mContext);
-            int inroomSensorUse = wds.Get_InnerRoomDetectSensor_Use();
-            wds.closeDB();
-
-            if(inroomSensorUse != 1)
-            {
-                mMenuCount--; // 재실센서 사용함 아니면 리스트에 넣지 않음.
-            }
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
-        }
-        catch (Exception exc)
-        {
-
-            //exc.printStackTrace();
-            LogUtil.errorLogInfo("",TAG, exc);
-        }
-
-
-        for (int i=0; i<mMenuCount; i++) {
-            addItem(new MenuItem(String.valueOf(i), menuItem[i]));
-        }
-
-        final MenuListAdapter menuListAdapter = new MenuListAdapter(mContext, ITEMS);
-        mListView.setAdapter(menuListAdapter);
-        mListView.setOnScrollListener(this);
-
-        mListView.setOnItemClickListener(new OnItemClickListener(){
-            @Override
-            public void onItemClick(AdapterView<?> parent, View arg1, int position, long id) {
-                if (DEBUG)  Log.d(TAG, "onItemClick() position : " + position);
-
-                if (position > 0) {
-                    mBeforeSelectedMenuPosition = StringUtil.getInt(mSelectedMenuID, false);
-                    mSelectedMenuID = AdminMenu.ITEMS.get(position).id;
-
-                    if (DEBUG)  Log.d(TAG, "onItemClick() mSelectedMenuID : " + mSelectedMenuID
-                            + ", mBeforeSelectedMenuPosition : " + mBeforeSelectedMenuPosition
-                    );
-
-                    int listCount = mListView.getChildCount();
-                    for(int i=0; i<listCount; i++) {
-                        View view = mListView.getChildAt(i);
-
-                        if ((mVisibleItem + i) != position) {
-                            view.setBackgroundColor(Color.parseColor(LIST_ITEM_COLOR_DEFAULT_ID));
-                        }
-                        else /*if (arg1 == view)*/ {
-                            view.setBackgroundColor(Color.parseColor(LIST_ITEM_COLOR_SELECTED_ID));
-                            if (DEBUG)  Log.d(TAG, "(view != currentView) " + i + " : setBackgroundColor(res.getColor(LIST_ITEM_COLOR_SELECTED_ID)");
-                        }
-                    }
-
-                    if (DEBUG)  Log.d(TAG, "onItemClick() listCount : " + listCount);
-
-/*
-                    if (arg1 != null) {
-                        arg1.setBackgroundColor(res.getColor(LIST_ITEM_COLOR_SELECTED_ID));
-                        if (DEBUG)  Log.d(TAG, "onItemClick() setBackgroundColor(res.getColor(LIST_ITEM_COLOR_SELECTED_ID)");
-                    }
-*/
-                }
-
-                // menuListAdapter.setSelectedPosition(position);
-                mCallbacks.onItemSelected(AdminMenu.ITEMS.get(position).id);
-            }
-        });
-
-        int listViewHeight = LEFT_MENU_ITEM_HEIGHT * mMenuCount;
-
-        if (listViewHeight > LEFT_MENU_FULL_HEIGHT) {
-            bVisibleButton = true;
-
-            mBtnUp.setVisibility(View.INVISIBLE);
-            mBtnDown.setVisibility(View.VISIBLE);
-
-            mBtnUp.setOnClickListener(mButtonClick);
-            mBtnDown.setOnClickListener(mButtonClick);
-        }
-    }
-
-
-    // id menu로 이동
-    public void requestMenu(int id) {
-        if (DEBUG)  Log.d(TAG, "requestMenu() id : " + id);
-
-        if (mListView != null) {
-/*
-            final Resources res = mContext.getResources();
-            mListView.getAdapter().getView(id, null, null).setBackgroundColor(res.getColor(LIST_ITEM_COLOR_SELECTED_ID));
-            mListView.getAdapter().getView(id, null, null).setSelected(true);
-*/
-
-
-            mListView.performItemClick(mListView.getAdapter().getView(id, null, null)
-                    , id
-                    , mListView.getAdapter().getItemId(id));
-        }
-        else {
-            if (DEBUG)  Log.d(TAG, "(mListView == null)");
-        }
-    }
-
-
-    // clear Item
-    private static void clearItem() {
-        ITEMS.clear();
-        ITEM_MAP.clear();
-    }
-
-
-    // add Item
-    private static void addItem(MenuItem item) {
-        ITEMS.add(item);
-        ITEM_MAP.put(item.id, item);
-    }
-
-    /**
-     * A dummy item representing a piece of content.
-     */
-    public static class MenuItem {
-        public String id;
-        public String content;
-
-        // constructor
-        public MenuItem(String id, String content) {
-            this.id = id;
-            this.content = content;
-        }
-
-        @Override
-        public String toString() {
-            return content;
-        }
-    }
-
-
-
-
-
-
-    private View.OnClickListener mButtonClick = new View.OnClickListener() {
-        @Override
-        public void onClick(View v) {
-
-            mWpadSound.Play(SND.effect.TOUCH_LATCHED);
-            MainActivity.setFinishTimerReset();
-
-            switch(v.getId())
-            {
-                case R.id.btn_up_arrow:
-                {
-                    if (DEBUG)  Log.d(TAG, "onClick() btn_up_arrow : " );
-
-                    int visibleIdx = getCompletedVisibleChildIdx(true);
-
-                    if (visibleIdx > 0)
-                        goPrevIdx(visibleIdx - 1);
-                }
-                break;
-
-                case R.id.btn_down_arrow:
-                {
-                    if (DEBUG)  Log.d(TAG, "onClick() btn_down_arrow : ");
-
-                    int visibleIdx = getCompletedVisibleChildIdx(false);
-
-                    if (DEBUG)  Log.d(TAG, "visibleIdx : " + visibleIdx
-                            + ", mListView.getChildCount() : " + (mListView.getChildCount()));
-
-                    if (visibleIdx > -1)
-                        goNextIdx(visibleIdx-1);
-                }
-                break;
-
-                default:
-                    break;
-            }
-        }
-    };
-
-
-    // parentView 안에 전체가 보여지는 childView의 index를 return
-    public int getCompletedVisibleChildIdx(boolean bFromFirst) {
-        int ret = -1;
-
-        if (bFromFirst)
-            ret = mVisibleItem;
-        else {
-            // ret = mVisibleItem + mVisibleItemCount - 1;
-            ret = mVisibleItem + 2;
-        }
-
-        if (DEBUG)  Log.d(TAG, "getCompletedVisibleChildIdx() ret : " + ret);
-
-        return ret;
-    }
-
-
-    // ListView의 visibleIdx에 해당하는 item을 top으로 이동
-    private void goPrevIdx(final int visibleIdx) {
-        if (DEBUG)  Log.d(TAG, "goPrevIdx() visibleIdx : " + visibleIdx);
-
-        //mListView.getChildAt(visibleIdx).requestFocus();
-        mListView.setSelection(visibleIdx);
-        if (visibleIdx == 0)
-            mBtnUp.setVisibility(View.INVISIBLE);
-
-/*
-        mListView.post(new Runnable() {
-            @Override
-            public void run() {
-                // TODO Auto-generated method stub
-                mBtnDown.setVisibility(View.VISIBLE);
-                mListView.scrollTo(0, LEFT_MENU_ITEM_HEIGHT * visibleIdx);
-            }
-        });
-*/
-    }
-
-
-    // ListView의 visibleIdx에 해당하는 item을 top으로 이동
-    private void goNextIdx(final int visibleIdx) {
-        if (DEBUG)  Log.d(TAG, "goNextIdx() visibleIdx : " + visibleIdx);
-
-        //mListView.getChildAt(visibleIdx).requestFocus();
-        mListView.setSelection(visibleIdx);
-
-
-        int lastIdx = mListView.getChildCount() - 1;
-        if (visibleIdx >= lastIdx - 2)
-            mBtnDown.setVisibility(View.INVISIBLE);
-
-/*
-        mListView.post(new Runnable() {
-            @Override
-            public void run() {
-                // TODO Auto-generated method stub
-                mBtnUp.setVisibility(View.VISIBLE);
-                mListView.scrollTo(0, LEFT_MENU_ITEM_HEIGHT * visibleIdx);
-            }
-        });
-*/
-
-    }
-
-
-    public class MenuListAdapter extends ArrayAdapter {
-        private static final String TAG = "MenuListAdapter";
-
-        private static final int mLayoutId = R.layout.left_menu_item;
-
-        private Context mContext;
-        private int m_nSelectedPos = -1;
-
-        public MenuListAdapter(Context context, List menuList) {
-            super(context, mLayoutId, menuList);
-            this.mContext = context;
-        }
-
-
-        @Override
-        public View getView(int position, View convertView, ViewGroup parent) {
-            View view = convertView;
-
-            if (view == null) {
-                // if (DEBUG)  Log.d(TAG, "--getView v == null");
-
-                LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(
-                        Context.LAYOUT_INFLATER_SERVICE);
-                view = inflater.inflate(mLayoutId, null);
-            }
-
-            MenuItem item = (MenuItem)getItem(position);
-
-            if (item != null) {
-                String menuTitle = item.content;
-                TextView tvMenuTitle = (TextView)view.findViewById(R.id.menu_title);
-
-                if(ModelType == Version.MODEL_TYPE.IHN_1030_D)
-                {
-                    tvMenuTitle.setTextSize(TypedValue.COMPLEX_UNIT_SP, 30);
-                }
-
-                if((WpadScale.getWidthPixels() == 800) && (WpadScale.getHeightPixels() == 480))
-                {
-                    tvMenuTitle.setTextSize(40);
-                }
-
-                tvMenuTitle.setText(menuTitle);
-                if (DEBUG)  Log.d(TAG, "menuTitle : " + menuTitle);
-
-                if (DEBUG)  Log.d(TAG, "getView() m_nSelectedPos : " + m_nSelectedPos
-                        + ", position : " + position
-                        + ", mSelectedMenuID : " + mSelectedMenuID
-                );
-
-                final Resources res = mContext.getResources();
-                if (mSelectedMenuID == item.id) {
-                    view.setBackgroundColor(Color.parseColor(LIST_ITEM_COLOR_SELECTED_ID));
-
-                    if (DEBUG)  Log.d(TAG, "getView() setBackgroundColor(res.getColor(LIST_ITEM_COLOR_SELECTED_ID)");
-                }
-                else {
-                    view.setBackgroundColor(Color.parseColor(LIST_ITEM_COLOR_DEFAULT_ID));
-                }
-            }
-
-            return view;
-        }
-    }
-
-
-    @Override
-    public void onScrollStateChanged(AbsListView view, int scrollState) {
-        if (DEBUG_SCROLL)   Log.d(TAG, "onScrollStateChanged() scrollState : " + scrollState);
-        MainActivity.setFinishTimerReset();
-
-    }
-
-
-    private int mVisibleItem = -1;
-    private int mVisibleItemCount = -1;
-
-    @Override
-    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount,
-                         int totalItemCount) {
-
-        if (DEBUG_SCROLL)   Log.d(TAG, "onScroll() firstVisibleItem : " + firstVisibleItem
-                + ", visibleItemCount : " + visibleItemCount
-                + ", totalItemCount : " + totalItemCount
-        );
-        MainActivity.setFinishTimerReset();
-
-        if ((firstVisibleItem == mVisibleItem) && (visibleItemCount == mVisibleItemCount)){
-            return;
-        }
-        mVisibleItem = firstVisibleItem;
-        mVisibleItemCount = visibleItemCount;
-
-        if (bVisibleButton) {
-            if (mVisibleItem == 0) {
-                mBtnUp.setVisibility(View.INVISIBLE);
-            }
-            else {
-                mBtnUp.setVisibility(View.VISIBLE);
-
-                if (mMenuCount == mVisibleItem + mVisibleItemCount) {
-                    mBtnDown.setVisibility(View.INVISIBLE);
-                }
-                else {
-                    mBtnDown.setVisibility(View.VISIBLE);
-                }
-            }
-        }
-    }
-
-
-    // go Prev Menu
-    public void goPreMenu() {
-        requestMenu(mBeforeSelectedMenuPosition);
-    }
-
-
-}
+package com.artncore.managersetting.ui.fragments;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import kr.co.icontrols.wallpadsupport.Version;
+import kr.co.icontrols.wallpadsupport.WpadScale;
+import kr.co.icontrols.wallpadsupport.WpadSound;
+import kr.co.icontrols.wallpadsupport.WpadSound.SND;
+import android.content.Context;
+import android.content.res.Resources;
+import android.graphics.Color;
+import android.util.Log;
+import android.util.TypedValue;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AbsListView;
+import android.widget.AbsListView.OnScrollListener;
+import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemClickListener;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.ListView;
+import android.widget.TextView;
+
+import com.artncore.WallPadDataMgr.WallpadDeviceSet;
+import com.artncore.managersetting.ui.activities.MainActivity;
+import com.artncore.managersetting.ui.fragments.AdminMenuFragment.Callbacks;
+import com.artncore.managersetting.util.StringUtil;
+import com.artncore.managersetting.util.ViewUtil;
+import com.artncore.managersetting.R;
+
+/**
+ * Helper class for providing sample content for user interfaces created by
+ * Android template wizards.
+ * <p>
+ * TODO: Replace all uses of this class before publishing your app.
+ */
+public class AdminMenu implements OnScrollListener {
+    private static final String TAG = "AdminMenu";
+
+    private final boolean DEBUG = true;
+    private final boolean DEBUG_SCROLL = true;
+
+    private final int LEFT_MENU_FULL_HEIGHT = 526;
+    private final int LEFT_MENU_MARGIN_BOTTOM = 1;
+
+    private final int LEFT_MENU_ITEM_HEIGHT = 78;
+
+    private final int UP_ARROW_HEIGHT = 70 + LEFT_MENU_MARGIN_BOTTOM;
+    private final int RIGHT_ARROW_WIDTH = UP_ARROW_HEIGHT;
+
+    private final String LIST_ITEM_COLOR_DEFAULT_ID = "#ADC2EB";
+    private final String LIST_ITEM_COLOR_SELECTED_ID = "#3366CC";
+
+
+    public static final String MENU_IDX_0 = "0";
+    public static final String MENU_IDX_1 = "1";
+    public static final String MENU_IDX_2 = "2";
+    public static final String MENU_IDX_3 = "3";
+    public static final String MENU_IDX_4 = "4";
+    public static final String MENU_IDX_5 = "5";
+    public static final String MENU_IDX_6 = "6";
+    public static final String MENU_IDX_7 = "7";
+    public static final String MENU_IDX_8 = "8";
+    public static final String MENU_IDX_9 = "9";
+
+    private Context mContext;
+    private WpadSound mWpadSound;
+    private Callbacks mCallbacks;
+    private View mRootView;
+    private ListView mListView;
+    private Button mBtnUp, mBtnDown;
+
+    private int mMenuCount = 0;
+    private int mBtnHeight = 0;
+    private boolean bVisibleButton = false;
+
+    private String mSelectedMenuID = null;
+    private int mBeforeSelectedMenuPosition = -1;
+
+    //[Model]
+    private int ModelType = Version.getModelType();
+    //private int ModelType = Version.MODEL_TYPE.IHN_1030_D;
+
+    /**
+     * An array of sample (dummy) items.
+     */
+    public static List<MenuItem> ITEMS = new ArrayList<MenuItem>();
+    //private static boolean bInit = false;
+
+    /**
+     * A map of sample (dummy) items, by ID.
+     */
+    public static Map<String, MenuItem> ITEM_MAP = new HashMap<String, MenuItem>();
+
+    // constructor
+    public AdminMenu(Context context, Callbacks callbacks) {
+        mContext = context;
+        mCallbacks = callbacks;
+
+        mWpadSound = MainActivity.getWpadSound();
+
+        LayoutInflater inflater = (LayoutInflater)mContext
+                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+
+        mRootView = inflater.inflate(R.layout.left_menu, null);
+
+        mListView = (ListView) mRootView.findViewById(R.id.menu_list);
+        mBtnUp = (Button) mRootView.findViewById(R.id.btn_up_arrow);
+        mBtnDown = (Button) mRootView.findViewById(R.id.btn_down_arrow);
+
+        initItem();
+    }
+
+    // return rootView
+    public View getView() {
+        return mRootView;
+    }
+
+    // init Item
+    private void initItem() {
+        if (DEBUG)  Log.d(TAG, "initItem() ");
+
+        clearItem();
+
+        final Resources res = mContext.getResources();
+        String[] menuItem= res.getStringArray(R.array.entries_main_menu);
+
+        mMenuCount = menuItem.length;
+
+        try
+        {
+            WallpadDeviceSet wds = new WallpadDeviceSet(mContext);
+            int inroomSensorUse = wds.Get_InnerRoomDetectSensor_Use();
+            wds.closeDB();
+
+            if(inroomSensorUse != 1)
+            {
+                mMenuCount--; // 재실센서 사용함 아니면 리스트에 넣지 않음.
+            }
+        }
+        catch (Exception exc)
+        {
+
+            exc.printStackTrace();
+        }
+
+
+        for (int i=0; i<mMenuCount; i++) {
+            addItem(new MenuItem(String.valueOf(i), menuItem[i]));
+        }
+
+        final MenuListAdapter menuListAdapter = new MenuListAdapter(mContext, ITEMS);
+        mListView.setAdapter(menuListAdapter);
+        mListView.setOnScrollListener(this);
+
+        mListView.setOnItemClickListener(new OnItemClickListener(){
+            @Override
+            public void onItemClick(AdapterView<?> parent, View arg1, int position, long id) {
+                if (DEBUG)  Log.d(TAG, "onItemClick() position : " + position);
+
+                if (position > 0) {
+                    mBeforeSelectedMenuPosition = StringUtil.getInt(mSelectedMenuID, false);
+                    mSelectedMenuID = AdminMenu.ITEMS.get(position).id;
+
+                    if (DEBUG)  Log.d(TAG, "onItemClick() mSelectedMenuID : " + mSelectedMenuID
+                            + ", mBeforeSelectedMenuPosition : " + mBeforeSelectedMenuPosition
+                    );
+
+                    int listCount = mListView.getChildCount();
+                    for(int i=0; i<listCount; i++) {
+                        View view = mListView.getChildAt(i);
+
+                        if ((mVisibleItem + i) != position) {
+                            view.setBackgroundColor(Color.parseColor(LIST_ITEM_COLOR_DEFAULT_ID));
+                        }
+                        else /*if (arg1 == view)*/ {
+                            view.setBackgroundColor(Color.parseColor(LIST_ITEM_COLOR_SELECTED_ID));
+                            if (DEBUG)  Log.d(TAG, "(view != currentView) " + i + " : setBackgroundColor(res.getColor(LIST_ITEM_COLOR_SELECTED_ID)");
+                        }
+                    }
+
+                    if (DEBUG)  Log.d(TAG, "onItemClick() listCount : " + listCount);
+
+/*
+                    if (arg1 != null) {
+                        arg1.setBackgroundColor(res.getColor(LIST_ITEM_COLOR_SELECTED_ID));
+                        if (DEBUG)  Log.d(TAG, "onItemClick() setBackgroundColor(res.getColor(LIST_ITEM_COLOR_SELECTED_ID)");
+                    }
+*/
+                }
+
+                // menuListAdapter.setSelectedPosition(position);
+                mCallbacks.onItemSelected(AdminMenu.ITEMS.get(position).id);
+            }
+        });
+
+        int listViewHeight = LEFT_MENU_ITEM_HEIGHT * mMenuCount;
+
+        if (listViewHeight > LEFT_MENU_FULL_HEIGHT) {
+            bVisibleButton = true;
+
+            mBtnUp.setVisibility(View.INVISIBLE);
+            mBtnDown.setVisibility(View.VISIBLE);
+
+            mBtnUp.setOnClickListener(mButtonClick);
+            mBtnDown.setOnClickListener(mButtonClick);
+        }
+    }
+
+
+    // id menu로 이동
+    public void requestMenu(int id) {
+        if (DEBUG)  Log.d(TAG, "requestMenu() id : " + id);
+
+        if (mListView != null) {
+/*
+            final Resources res = mContext.getResources();
+            mListView.getAdapter().getView(id, null, null).setBackgroundColor(res.getColor(LIST_ITEM_COLOR_SELECTED_ID));
+            mListView.getAdapter().getView(id, null, null).setSelected(true);
+*/
+
+
+            mListView.performItemClick(mListView.getAdapter().getView(id, null, null)
+                    , id
+                    , mListView.getAdapter().getItemId(id));
+        }
+        else {
+            if (DEBUG)  Log.d(TAG, "(mListView == null)");
+        }
+    }
+
+
+    // clear Item
+    private static void clearItem() {
+        ITEMS.clear();
+        ITEM_MAP.clear();
+    }
+
+
+    // add Item
+    private static void addItem(MenuItem item) {
+        ITEMS.add(item);
+        ITEM_MAP.put(item.id, item);
+    }
+
+    /**
+     * A dummy item representing a piece of content.
+     */
+    public static class MenuItem {
+        public String id;
+        public String content;
+
+        // constructor
+        public MenuItem(String id, String content) {
+            this.id = id;
+            this.content = content;
+        }
+
+        @Override
+        public String toString() {
+            return content;
+        }
+    }
+
+
+
+
+
+
+    private View.OnClickListener mButtonClick = new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+
+            mWpadSound.Play(SND.effect.TOUCH_LATCHED);
+            MainActivity.setFinishTimerReset();
+
+            switch(v.getId())
+            {
+                case R.id.btn_up_arrow:
+                {
+                    if (DEBUG)  Log.d(TAG, "onClick() btn_up_arrow : " );
+
+                    int visibleIdx = getCompletedVisibleChildIdx(true);
+
+                    if (visibleIdx > 0)
+                        goPrevIdx(visibleIdx - 1);
+                }
+                break;
+
+                case R.id.btn_down_arrow:
+                {
+                    if (DEBUG)  Log.d(TAG, "onClick() btn_down_arrow : ");
+
+                    int visibleIdx = getCompletedVisibleChildIdx(false);
+
+                    if (DEBUG)  Log.d(TAG, "visibleIdx : " + visibleIdx
+                            + ", mListView.getChildCount() : " + (mListView.getChildCount()));
+
+                    if (visibleIdx > -1)
+                        goNextIdx(visibleIdx-1);
+                }
+                break;
+
+                default:
+                    break;
+            }
+        }
+    };
+
+
+    // parentView 안에 전체가 보여지는 childView의 index를 return
+    public int getCompletedVisibleChildIdx(boolean bFromFirst) {
+        int ret = -1;
+
+        if (bFromFirst)
+            ret = mVisibleItem;
+        else {
+            // ret = mVisibleItem + mVisibleItemCount - 1;
+            ret = mVisibleItem + 2;
+        }
+
+        if (DEBUG)  Log.d(TAG, "getCompletedVisibleChildIdx() ret : " + ret);
+
+        return ret;
+    }
+
+
+    // ListView의 visibleIdx에 해당하는 item을 top으로 이동
+    private void goPrevIdx(final int visibleIdx) {
+        if (DEBUG)  Log.d(TAG, "goPrevIdx() visibleIdx : " + visibleIdx);
+
+        //mListView.getChildAt(visibleIdx).requestFocus();
+        mListView.setSelection(visibleIdx);
+        if (visibleIdx == 0)
+            mBtnUp.setVisibility(View.INVISIBLE);
+
+/*
+        mListView.post(new Runnable() {
+            @Override
+            public void run() {
+                // TODO Auto-generated method stub
+                mBtnDown.setVisibility(View.VISIBLE);
+                mListView.scrollTo(0, LEFT_MENU_ITEM_HEIGHT * visibleIdx);
+            }
+        });
+*/
+    }
+
+
+    // ListView의 visibleIdx에 해당하는 item을 top으로 이동
+    private void goNextIdx(final int visibleIdx) {
+        if (DEBUG)  Log.d(TAG, "goNextIdx() visibleIdx : " + visibleIdx);
+
+        //mListView.getChildAt(visibleIdx).requestFocus();
+        mListView.setSelection(visibleIdx);
+
+
+        int lastIdx = mListView.getChildCount() - 1;
+        if (visibleIdx >= lastIdx - 2)
+            mBtnDown.setVisibility(View.INVISIBLE);
+
+/*
+        mListView.post(new Runnable() {
+            @Override
+            public void run() {
+                // TODO Auto-generated method stub
+                mBtnUp.setVisibility(View.VISIBLE);
+                mListView.scrollTo(0, LEFT_MENU_ITEM_HEIGHT * visibleIdx);
+            }
+        });
+*/
+
+    }
+
+
+    public class MenuListAdapter extends ArrayAdapter {
+        private static final String TAG = "MenuListAdapter";
+
+        private static final int mLayoutId = R.layout.left_menu_item;
+
+        private Context mContext;
+        private int m_nSelectedPos = -1;
+
+        public MenuListAdapter(Context context, List menuList) {
+            super(context, mLayoutId, menuList);
+            this.mContext = context;
+        }
+
+
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            View view = convertView;
+
+            if (view == null) {
+                // if (DEBUG)  Log.d(TAG, "--getView v == null");
+
+                LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(
+                        Context.LAYOUT_INFLATER_SERVICE);
+                view = inflater.inflate(mLayoutId, null);
+            }
+
+            MenuItem item = (MenuItem)getItem(position);
+
+            if (item != null) {
+                String menuTitle = item.content;
+                TextView tvMenuTitle = (TextView)view.findViewById(R.id.menu_title);
+
+                if(ModelType == Version.MODEL_TYPE.IHN_1030_D)
+                {
+                    tvMenuTitle.setTextSize(TypedValue.COMPLEX_UNIT_SP, 30);
+                }
+
+                if((WpadScale.getWidthPixels() == 800) && (WpadScale.getHeightPixels() == 480))
+                {
+                    tvMenuTitle.setTextSize(40);
+                }
+
+                tvMenuTitle.setText(menuTitle);
+                if (DEBUG)  Log.d(TAG, "menuTitle : " + menuTitle);
+
+                if (DEBUG)  Log.d(TAG, "getView() m_nSelectedPos : " + m_nSelectedPos
+                        + ", position : " + position
+                        + ", mSelectedMenuID : " + mSelectedMenuID
+                );
+
+                final Resources res = mContext.getResources();
+                if (mSelectedMenuID == item.id) {
+                    view.setBackgroundColor(Color.parseColor(LIST_ITEM_COLOR_SELECTED_ID));
+
+                    if (DEBUG)  Log.d(TAG, "getView() setBackgroundColor(res.getColor(LIST_ITEM_COLOR_SELECTED_ID)");
+                }
+                else {
+                    view.setBackgroundColor(Color.parseColor(LIST_ITEM_COLOR_DEFAULT_ID));
+                }
+            }
+
+            return view;
+        }
+    }
+
+
+    @Override
+    public void onScrollStateChanged(AbsListView view, int scrollState) {
+        if (DEBUG_SCROLL)   Log.d(TAG, "onScrollStateChanged() scrollState : " + scrollState);
+        MainActivity.setFinishTimerReset();
+
+    }
+
+
+    private int mVisibleItem = -1;
+    private int mVisibleItemCount = -1;
+
+    @Override
+    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount,
+                         int totalItemCount) {
+
+        if (DEBUG_SCROLL)   Log.d(TAG, "onScroll() firstVisibleItem : " + firstVisibleItem
+                + ", visibleItemCount : " + visibleItemCount
+                + ", totalItemCount : " + totalItemCount
+        );
+        MainActivity.setFinishTimerReset();
+
+        if ((firstVisibleItem == mVisibleItem) && (visibleItemCount == mVisibleItemCount)){
+            return;
+        }
+        mVisibleItem = firstVisibleItem;
+        mVisibleItemCount = visibleItemCount;
+
+        if (bVisibleButton) {
+            if (mVisibleItem == 0) {
+                mBtnUp.setVisibility(View.INVISIBLE);
+            }
+            else {
+                mBtnUp.setVisibility(View.VISIBLE);
+
+                if (mMenuCount == mVisibleItem + mVisibleItemCount) {
+                    mBtnDown.setVisibility(View.INVISIBLE);
+                }
+                else {
+                    mBtnDown.setVisibility(View.VISIBLE);
+                }
+            }
+        }
+    }
+
+
+    // go Prev Menu
+    public void goPreMenu() {
+        requestMenu(mBeforeSelectedMenuPosition);
+    }
+
+
+}

+ 209 - 209
ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/AdminMenuFragment.java

@@ -1,209 +1,209 @@
-package com.artncore.managersetting.ui.fragments;
-
-import android.app.Activity;
-import android.os.Bundle;
-//import android.support.v4.app.Fragment;
-import androidx.fragment.app.Fragment;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ListView;
-
-/**
- * A list fragment representing a list of Items. This fragment also supports
- * tablet devices by allowing list items to be given an 'activated' state upon
- * selection. This helps indicate which item is currently being viewed in a
- * {link ItemDetailFragment}.
- * <p>
- * Activities containing this fragment MUST implement the {@link Callbacks}
- * interface.
- */
-public class AdminMenuFragment extends Fragment {
-    private static final String TAG = "AdminMenuFragment";
-
-    private final boolean DEBUG = true;
-
-    /**
-     * The serialization (saved instance state) Bundle key representing the
-     * activated item position. Only used on tablets.
-     */
-    private static final String STATE_ACTIVATED_POSITION = "activated_position";
-
-    private AdminMenu mAdminMenu;
-
-    /**
-     * The fragment's current callback object, which is notified of list item
-     * clicks.
-     */
-    private Callbacks mCallbacks = sDummyCallbacks;
-
-    /**
-     * The current activated item position. Only used on tablets.
-     */
-    private int mActivatedPosition = ListView.INVALID_POSITION;
-
-    /**
-     * A callback interface that all activities containing this fragment must
-     * implement. This mechanism allows activities to be notified of item
-     * selections.
-     */
-    public interface Callbacks {
-        /**
-         * Callback for when an item has been selected.
-         */
-        public void onItemSelected(String id);
-    }
-
-    /**
-     * A dummy implementation of the {@link Callbacks} interface that does
-     * nothing. Used only when this fragment is not attached to an activity.
-     */
-    private static Callbacks sDummyCallbacks = new Callbacks() {
-        @Override
-        public void onItemSelected(String id) {
-        }
-    };
-
-    /**
-     * Mandatory empty constructor for the fragment manager to instantiate the
-     * fragment (e.g. upon screen orientation changes).
-     */
-    public AdminMenuFragment() {
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        if (DEBUG)  Log.d(TAG, "onCreate() ");
-
-        super.onCreate(savedInstanceState);
-
-/*
-        setListAdapter(new ArrayAdapter<AdminMenu.MenuItem>(getActivity()
-                , R.layout.menu_item
-                , R.id.menu_title
-                , AdminMenu.ITEMS));
-*/
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-
-        mAdminMenu = new AdminMenu(getActivity(), mCallbacks);
-
-        return mAdminMenu.getView();
-    }
-
-
-    @Override
-    public void onViewCreated(View view, Bundle savedInstanceState) {
-        super.onViewCreated(view, savedInstanceState);
-
-        // Restore the previously serialized activated item position.
-        if (savedInstanceState != null
-                && savedInstanceState.containsKey(STATE_ACTIVATED_POSITION)) {
-            //setActivatedPosition(savedInstanceState
-            //      .getInt(STATE_ACTIVATED_POSITION));
-        }
-    }
-
-    @Override
-    public void onAttach(Activity activity) {
-        super.onAttach(activity);
-
-        // Activities containing this fragment must implement its callbacks.
-        if (!(activity instanceof Callbacks)) {
-            throw new IllegalStateException(
-                    "Activity must implement fragment's callbacks.");
-        }
-
-        mCallbacks = (Callbacks) activity;
-    }
-
-
-    @Override
-    public void onResume() {
-        if (DEBUG)  Log.d(TAG, "onResume() ");
-
-        super.onResume();
-    }
-
-
-    @Override
-    public void onPause() {
-        if (DEBUG)  Log.d(TAG, "onPause() ");
-
-        super.onPause();
-    }
-
-
-    @Override
-    public void onDetach() {
-        super.onDetach();
-
-        // Reset the active callbacks interface to the dummy implementation.
-        mCallbacks = sDummyCallbacks;
-    }
-
-    @Override
-    public void onSaveInstanceState(Bundle outState) {
-        super.onSaveInstanceState(outState);
-        if (mActivatedPosition != ListView.INVALID_POSITION) {
-            // Serialize and persist the activated item position.
-            outState.putInt(STATE_ACTIVATED_POSITION, mActivatedPosition);
-        }
-    }
-
-
-/*
-    @Override
-    public void onListItemClick(ListView listView, View view, int position,
-            long id) {
-        super.onListItemClick(listView, view, position, id);
-
-        // Notify the active callbacks interface (the activity, if the
-        // fragment is attached to one) that an item has been selected.
-        mCallbacks.onItemSelected(AdminMenu.ITEMS.get(position).id);
-    }
-*/
-
-    /**
-     * Turns on activate-on-click mode. When this mode is on, list items will be
-     * given the 'activated' state when touched.
-     */
-    public void setActivateOnItemClick(boolean activateOnItemClick) {
-        // When setting CHOICE_MODE_SINGLE, ListView will automatically
-        // give items the 'activated' state when touched.
-        //getListView().setChoiceMode(
-        //      activateOnItemClick ? ListView.CHOICE_MODE_SINGLE
-        //              : ListView.CHOICE_MODE_NONE);
-    }
-
-    /*
-    private void setActivatedPosition(int position) {
-        if (position == ListView.INVALID_POSITION) {
-            getListView().setItemChecked(mActivatedPosition, false);
-        } else {
-            getListView().setItemChecked(position, true);
-        }
-
-        mActivatedPosition = position;
-    }
-*/
-
-
-    // id menu로 이동
-    public void requestMenu(int id) {
-        mAdminMenu.requestMenu(id);
-    }
-
-
-    // go prev menu
-    public void goPreMenu() {
-        mAdminMenu.goPreMenu();
-    }
-
-
-
-}
+package com.artncore.managersetting.ui.fragments;
+
+import android.app.Activity;
+import android.os.Bundle;
+//import android.support.v4.app.Fragment;
+import androidx.fragment.app.Fragment;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ListView;
+
+/**
+ * A list fragment representing a list of Items. This fragment also supports
+ * tablet devices by allowing list items to be given an 'activated' state upon
+ * selection. This helps indicate which item is currently being viewed in a
+ * {link ItemDetailFragment}.
+ * <p>
+ * Activities containing this fragment MUST implement the {@link Callbacks}
+ * interface.
+ */
+public class AdminMenuFragment extends Fragment {
+    private static final String TAG = "AdminMenuFragment";
+
+    private final boolean DEBUG = true;
+
+    /**
+     * The serialization (saved instance state) Bundle key representing the
+     * activated item position. Only used on tablets.
+     */
+    private static final String STATE_ACTIVATED_POSITION = "activated_position";
+
+    private AdminMenu mAdminMenu;
+
+    /**
+     * The fragment's current callback object, which is notified of list item
+     * clicks.
+     */
+    private Callbacks mCallbacks = sDummyCallbacks;
+
+    /**
+     * The current activated item position. Only used on tablets.
+     */
+    private int mActivatedPosition = ListView.INVALID_POSITION;
+
+    /**
+     * A callback interface that all activities containing this fragment must
+     * implement. This mechanism allows activities to be notified of item
+     * selections.
+     */
+    public interface Callbacks {
+        /**
+         * Callback for when an item has been selected.
+         */
+        public void onItemSelected(String id);
+    }
+
+    /**
+     * A dummy implementation of the {@link Callbacks} interface that does
+     * nothing. Used only when this fragment is not attached to an activity.
+     */
+    private static Callbacks sDummyCallbacks = new Callbacks() {
+        @Override
+        public void onItemSelected(String id) {
+        }
+    };
+
+    /**
+     * Mandatory empty constructor for the fragment manager to instantiate the
+     * fragment (e.g. upon screen orientation changes).
+     */
+    public AdminMenuFragment() {
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        if (DEBUG)  Log.d(TAG, "onCreate() ");
+
+        super.onCreate(savedInstanceState);
+
+/*
+        setListAdapter(new ArrayAdapter<AdminMenu.MenuItem>(getActivity()
+                , R.layout.menu_item
+                , R.id.menu_title
+                , AdminMenu.ITEMS));
+*/
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+                             Bundle savedInstanceState) {
+
+        mAdminMenu = new AdminMenu(getActivity(), mCallbacks);
+
+        return mAdminMenu.getView();
+    }
+
+
+    @Override
+    public void onViewCreated(View view, Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+
+        // Restore the previously serialized activated item position.
+        if (savedInstanceState != null
+                && savedInstanceState.containsKey(STATE_ACTIVATED_POSITION)) {
+            //setActivatedPosition(savedInstanceState
+            //      .getInt(STATE_ACTIVATED_POSITION));
+        }
+    }
+
+    @Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+
+        // Activities containing this fragment must implement its callbacks.
+        if (!(activity instanceof Callbacks)) {
+            throw new IllegalStateException(
+                    "Activity must implement fragment's callbacks.");
+        }
+
+        mCallbacks = (Callbacks) activity;
+    }
+
+
+    @Override
+    public void onResume() {
+        if (DEBUG)  Log.d(TAG, "onResume() ");
+
+        super.onResume();
+    }
+
+
+    @Override
+    public void onPause() {
+        if (DEBUG)  Log.d(TAG, "onPause() ");
+
+        super.onPause();
+    }
+
+
+    @Override
+    public void onDetach() {
+        super.onDetach();
+
+        // Reset the active callbacks interface to the dummy implementation.
+        mCallbacks = sDummyCallbacks;
+    }
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+        if (mActivatedPosition != ListView.INVALID_POSITION) {
+            // Serialize and persist the activated item position.
+            outState.putInt(STATE_ACTIVATED_POSITION, mActivatedPosition);
+        }
+    }
+
+
+/*
+    @Override
+    public void onListItemClick(ListView listView, View view, int position,
+            long id) {
+        super.onListItemClick(listView, view, position, id);
+
+        // Notify the active callbacks interface (the activity, if the
+        // fragment is attached to one) that an item has been selected.
+        mCallbacks.onItemSelected(AdminMenu.ITEMS.get(position).id);
+    }
+*/
+
+    /**
+     * Turns on activate-on-click mode. When this mode is on, list items will be
+     * given the 'activated' state when touched.
+     */
+    public void setActivateOnItemClick(boolean activateOnItemClick) {
+        // When setting CHOICE_MODE_SINGLE, ListView will automatically
+        // give items the 'activated' state when touched.
+        //getListView().setChoiceMode(
+        //      activateOnItemClick ? ListView.CHOICE_MODE_SINGLE
+        //              : ListView.CHOICE_MODE_NONE);
+    }
+
+    /*
+    private void setActivatedPosition(int position) {
+        if (position == ListView.INVALID_POSITION) {
+            getListView().setItemChecked(mActivatedPosition, false);
+        } else {
+            getListView().setItemChecked(position, true);
+        }
+
+        mActivatedPosition = position;
+    }
+*/
+
+
+    // id menu로 이동
+    public void requestMenu(int id) {
+        mAdminMenu.requestMenu(id);
+    }
+
+
+    // go prev menu
+    public void goPreMenu() {
+        mAdminMenu.goPreMenu();
+    }
+
+
+
+}

+ 358 - 370
ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/AdminPasswordResetFragment.java

@@ -1,370 +1,358 @@
-package com.artncore.managersetting.ui.fragments;
-
-import android.annotation.SuppressLint;
-import android.app.Activity;
-import android.content.DialogInterface;
-import android.graphics.Color;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-//import android.support.v4.app.Fragment;
-import androidx.fragment.app.Fragment;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.artncore.WallPadDataMgr.WallpadStatusData;
-import com.artncore.managersetting.ui.activities.MainActivity;
-import com.artncore.managersetting.util.DialogUtil;
-import com.artncore.wallpadapi.SdbAPI;
-import com.artncore.wallpadapi.WallPadAPI;
-
-import com.artncore.managersetting.R;
-import com.util.LogUtil;
-
-import kr.co.icontrols.wallpadsupport.Version;
-
-/**
- * A fragment representing a single Item detail screen. This fragment is either
- * contained in a {@link MainActivity} in two-pane mode (on tablets) or a
- * {link ItemDetailActivity} on handsets.
- */
-public class AdminPasswordResetFragment extends Fragment {
-    private static final String TAG = "AdminPasswordResetFragment";
-
-    private final boolean DEBUG = true;
-
-    private Activity mActivity;
-    private WallPadAPI mWallPadAPI;
-    private SdbAPI mSdbApi;
-    TextView sdbMent;
-
-    // constructor
-    public AdminPasswordResetFragment() {
-    }
-
-    @Override
-    public void onAttach(Activity activity) {
-        super.onAttach(activity);
-
-        mActivity = activity;
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        if (DEBUG)  Log.d(TAG, "onCreate() ");
-
-        super.onCreate(savedInstanceState);
-
-        mWallPadAPI = MainActivity.getWallPadAPI();
-        SdbCheckHandler.sendEmptyMessageDelayed(0, 10);
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-        View rootView = (View) inflater.inflate(R.layout.password_reset_container,
-                container, false);
-
-        return (View)rootView;
-    }
-
-    @Override
-    public void onViewCreated(View view, Bundle savedInstanceState) {
-        super.onViewCreated(view, savedInstanceState);
-
-        if (savedInstanceState != null) {}
-
-        Button btnReset = (Button)view.findViewById(R.id.btn_reset);
-        btnReset.setOnClickListener(mButtonClick);
-
-        Button btnWebReset = (Button)view.findViewById(R.id.btn_webctr_reset);
-        btnWebReset.setOnClickListener(mButtonClick);
-
-        sdbMent = (TextView)view.findViewById(R.id.sdb_password_init_ment);
-        if (Version.getModelType() != Version.MODEL_TYPE.IHN_D101 && Version.getModelType() != Version.MODEL_TYPE.IHN_D101K
-                && Version.getModelType() != Version.MODEL_TYPE.IHN_D101_I && Version.getModelType() != Version.MODEL_TYPE.IHN_D101K_I) {
-            sdbMent.setVisibility(View.INVISIBLE);
-        }
-    }
-
-
-    private View.OnClickListener mButtonClick = new View.OnClickListener() {
-        @Override
-        public void onClick(View v) {
-            MainActivity.setFinishTimerReset();
-
-            //mWpadSound.Play(SND.effect.TOUCH_LATCHED);
-            switch(v.getId())
-            {
-                case R.id.btn_reset:
-                    resetConfirmDialog();
-                    if(sdbMent.getCurrentTextColor() != Color.BLACK)
-                    {
-                        sdbMent.setTextColor(Color.BLACK);
-                    }
-                    break;
-                case R.id.btn_webctr_reset:
-                    webresetConfirmDialog();
-                    break;
-
-                default:
-                    break;
-            }
-
-        }
-    };
-
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-
-        closeDialog();
-
-        if(SdbCheckHandler != null) {SdbCheckHandler.removeMessages(0);}
-    }
-
-
-    @Override
-    public void onDetach() {
-        super.onDetach();
-
-        mWallPadAPI = null;
-        if(SdbCheckHandler != null) {SdbCheckHandler.removeMessages(0);}
-    }
-
-
-    @Override
-    public void onSaveInstanceState(Bundle outState) {
-        super.onSaveInstanceState(outState);
-    }
-
-
-
-
-    private DialogUtil mDialog;
-    // open resetConfirm Dialog
-    private void resetConfirmDialog() {
-        mDialog = new DialogUtil(mActivity);
-        String title = mActivity.getString(R.string.admin_password_reset);
-        String message = "사용자 비밀번호를 초기화 하시겠습니까?";
-
-        DialogInterface.OnClickListener positiveListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        dialog.dismiss();
-
-                        // 분전반 에너지미터 비밀번호 초기화
-                        if (Version.getModelType() == Version.MODEL_TYPE.IHN_D101 || Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I
-                                || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K_I) {
-                            /*if(sdbMent.getCurrentTextColor() == Color.BLACK)
-                            {
-                                sdbMent.setTextColor(Color.GREEN);
-                            }
-                            else if(sdbMent.getCurrentTextColor() == Color.GREEN)
-                            {
-                                sdbMent.setTextColor(Color.BLACK);
-                            }*/
-
-                            if (sdbMent.getCurrentTextColor() != Color.BLACK) {
-                                sdbMent.setTextColor(Color.BLACK);
-                            }
-                            SdbCheckHandler.sendEmptyMessageDelayed(1, 10);
-                        }
-
-                        WallpadStatusData wallpadStatusData = new WallpadStatusData(mActivity);
-
-                        if (DEBUG)  Log.d(TAG, "wallpadStatusData.GetUserPW()() " + wallpadStatusData.GetUserPW());
-
-                        wallpadStatusData.SetUserPW("0000");
-                        if (DEBUG)  Log.d(TAG, "wallpadStatusData.GetUserPW()() " + wallpadStatusData.GetUserPW());
-
-                        wallpadStatusData.closeDB();
-
-                        String message = "사용자 비밀번호가 초기화 되었습니다.";
-                        resetNotiDialog(message);
-                    }
-                };
-
-        DialogInterface.OnClickListener negativeListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        dialog.dismiss();
-                    }
-                };
-
-        mDialog.openCommonDialog(title, message, positiveListener, negativeListener);
-    }
-
-    private DialogUtil mwebDialog;
-    private void webresetConfirmDialog()
-    {
-        mwebDialog = new DialogUtil(mActivity);
-        String title = mActivity.getString(R.string.admin_password_reset);
-        String message = "웹제어 비밀번호를 초기화 하시겠습니까?";
-
-        DialogInterface.OnClickListener positiveListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        dialog.dismiss();
-
-                        WallpadStatusData wallpadStatusData = new WallpadStatusData(mActivity);
-                        if (DEBUG)  Log.d(TAG, "wallpadStatusData.GetWebCtrPW()() " + wallpadStatusData.GetWebCtrPW());
-
-                        wallpadStatusData.SetWebCtrPW("000000");
-                        if (DEBUG)  Log.d(TAG, "wallpadStatusData.GetWebCtrPW()() " + wallpadStatusData.GetWebCtrPW());
-
-                        wallpadStatusData.closeDB();
-
-                        String message = "웹제어 비밀번호가 초기화 되었습니다.";
-                        resetNotiDialog(message);
-                    }
-                };
-
-        DialogInterface.OnClickListener negativeListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        dialog.dismiss();
-                    }
-                };
-
-        mwebDialog.openCommonDialog(title, message, positiveListener, negativeListener);
-    }
-
-
-    // open resetNoti Dialog
-    private void resetNotiDialog(final String message) {
-        mDialog = new DialogUtil(mActivity);
-        String title = mActivity.getString(R.string.admin_password_reset);
-
-        DialogInterface.OnClickListener positiveListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        dialog.dismiss();
-                    }
-                };
-
-        mDialog.openCommonDialog(title, message, positiveListener, null);
-    }
-
-
-
-    // close Dialog
-    private void closeDialog() {
-        if (mDialog != null) {
-            mDialog.closeDialog();
-            mDialog = null;
-        }
-    }
-
-    /**
-     * (임시코드) m_IntLightCtrl 초기생성시 Connect 에 시간이 걸리며, <br>
-     * m_IntLightCtrl 초기화후 바로 Get_IntLightController 등을 사용하여  API 를 가져올수 없기에, <br>
-     * 본 딜레이 코드를 임시로 적용한다.
-     */
-    @SuppressLint("HandlerLeak")
-    protected Handler SdbCheckHandler = new Handler()
-    {
-        @SuppressLint("HandlerLeak")
-        @Override
-        public void handleMessage(Message msg)
-        {
-            if (msg.what == 0)
-            {
-                if (SdbCheckHandler != null)
-                {
-                    if (mWallPadAPI != null)
-                    {
-                        if (mWallPadAPI.Check_Connect())
-                        {
-                            mSdbApi = mWallPadAPI.Get_SdbController();
-
-                            if (mSdbApi != null)
-                            {
-                                Log.i(TAG, "SdbCheckHandler --> sdbAPI != null");
-                                //SdbCheckHandler.sendEmptyMessageDelayed(1, 10);
-                            }
-                            else
-                            {
-                                Log.i(TAG, "SdbCheckHandler --> sdbAPI == null");
-                                SdbCheckHandler.sendEmptyMessageDelayed(0, 100);
-                            }
-
-                        }
-                        else
-                        {
-                            Log.i(TAG, "SdbCheckHandler --> m_wpapi.Check_Connect() == fail");
-                            SdbCheckHandler.sendEmptyMessageDelayed(0, 100);
-                        }
-                    }
-                }
-
-            }
-            else if (msg.what == 1)
-            {
-                if(mSdbApi == null)
-                {
-                    SdbCheckHandler.sendEmptyMessageDelayed(0, 100);
-                }
-
-                // 조건이 충족되면 명령 실행
-                SdbCheckHandler.sendEmptyMessageDelayed(2, 10);
-            }
-            else if (msg.what == 2)
-            {
-                try
-                {
-                    if(mSdbApi.SetInitPassword() >= 0)
-                    {
-                        // 글씨 초록색으로 변환
-                        sdbMent.setTextColor(Color.GREEN);
-                    }
-                    else // 실패하면 검정 글씨 유지하기
-                    {
-                        sdbMent.setTextColor(Color.BLACK);
-                    }
-
-                    // 바로 에너지미터 앱 사용안함 보내면 에너지미터에서 변경안되는것 같음
-					// ---> 딜레이 1.5초 추가
-					try {Thread.sleep(1500);}
-                    catch (RuntimeException re) {
-                        Log.e(TAG, re.toString());
-                    }
-                    catch (Exception e){
-					    //e.printStackTrace();
-                        LogUtil.errorLogInfo("", TAG, e);
-					}
-
-                    if(mSdbApi.Set_SmartPhoneLightControl(false) >= 0)
-                    {
-                        Log.d(TAG, "[SdbCheckHandler] - Set_SmartPhoneLightControl : SUCCESS");
-                    }
-                    else
-                    {
-                        Log.d(TAG, "[SdbCheckHandler] - Set_SmartPhoneLightControl : FAIL");
-                    }
-                }
-                catch (RuntimeException re) {
-                    Log.e(TAG, re.toString());
-                }
-                catch (Exception ex)
-                {
-                    Log.e(TAG, "[SdbCheckHandler] - Init Password ERROR !!!");
-                    //ex.printStackTrace();
-                    LogUtil.errorLogInfo("",TAG, ex);
-                }
-            }
-        }
-    };
-
-
-}
+package com.artncore.managersetting.ui.fragments;
+
+import android.annotation.SuppressLint;
+import android.app.Activity;
+import android.content.DialogInterface;
+import android.graphics.Color;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+//import android.support.v4.app.Fragment;
+import androidx.fragment.app.Fragment;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.TextView;
+
+import com.artncore.WallPadDataMgr.WallpadStatusData;
+import com.artncore.managersetting.ui.activities.MainActivity;
+import com.artncore.managersetting.util.DialogUtil;
+import com.artncore.wallpadapi.SdbAPI;
+import com.artncore.wallpadapi.WallPadAPI;
+
+import com.artncore.managersetting.R;
+
+import kr.co.icontrols.wallpadsupport.Version;
+
+/**
+ * A fragment representing a single Item detail screen. This fragment is either
+ * contained in a {@link MainActivity} in two-pane mode (on tablets) or a
+ * {link ItemDetailActivity} on handsets.
+ */
+public class AdminPasswordResetFragment extends Fragment {
+    private static final String TAG = "AdminPasswordResetFragment";
+
+    private final boolean DEBUG = true;
+
+    private Activity mActivity;
+    private WallPadAPI mWallPadAPI;
+    private SdbAPI mSdbApi;
+    TextView sdbMent;
+
+    // constructor
+    public AdminPasswordResetFragment() {
+    }
+
+    @Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+
+        mActivity = activity;
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        if (DEBUG)  Log.d(TAG, "onCreate() ");
+
+        super.onCreate(savedInstanceState);
+
+        mWallPadAPI = MainActivity.getWallPadAPI();
+        SdbCheckHandler.sendEmptyMessageDelayed(0, 10);
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+                             Bundle savedInstanceState) {
+        View rootView = (View) inflater.inflate(R.layout.password_reset_container,
+                container, false);
+
+        return (View)rootView;
+    }
+
+    @Override
+    public void onViewCreated(View view, Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+
+        if (savedInstanceState != null) {}
+
+        Button btnReset = (Button)view.findViewById(R.id.btn_reset);
+        btnReset.setOnClickListener(mButtonClick);
+
+        Button btnWebReset = (Button)view.findViewById(R.id.btn_webctr_reset);
+        btnWebReset.setOnClickListener(mButtonClick);
+
+        sdbMent = (TextView)view.findViewById(R.id.sdb_password_init_ment);
+        if (Version.getModelType() != Version.MODEL_TYPE.IHN_D101 && Version.getModelType() != Version.MODEL_TYPE.IHN_D101K
+                && Version.getModelType() != Version.MODEL_TYPE.IHN_D101_I && Version.getModelType() != Version.MODEL_TYPE.IHN_D101K_I) {
+            sdbMent.setVisibility(View.INVISIBLE);
+        }
+    }
+
+
+    private View.OnClickListener mButtonClick = new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+            MainActivity.setFinishTimerReset();
+
+            //mWpadSound.Play(SND.effect.TOUCH_LATCHED);
+            switch(v.getId())
+            {
+                case R.id.btn_reset:
+                    resetConfirmDialog();
+                    if(sdbMent.getCurrentTextColor() != Color.BLACK)
+                    {
+                        sdbMent.setTextColor(Color.BLACK);
+                    }
+                    break;
+                case R.id.btn_webctr_reset:
+                    webresetConfirmDialog();
+                    break;
+
+                default:
+                    break;
+            }
+
+        }
+    };
+
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+
+        closeDialog();
+
+        if(SdbCheckHandler != null) {SdbCheckHandler.removeMessages(0);}
+    }
+
+
+    @Override
+    public void onDetach() {
+        super.onDetach();
+
+        mWallPadAPI = null;
+        if(SdbCheckHandler != null) {SdbCheckHandler.removeMessages(0);}
+    }
+
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+    }
+
+
+
+
+    private DialogUtil mDialog;
+    // open resetConfirm Dialog
+    private void resetConfirmDialog() {
+        mDialog = new DialogUtil(mActivity);
+        String title = mActivity.getString(R.string.admin_password_reset);
+        String message = "사용자 비밀번호를 초기화 하시겠습니까?";
+
+        DialogInterface.OnClickListener positiveListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        dialog.dismiss();
+
+                        // 분전반 에너지미터 비밀번호 초기화
+                        if (Version.getModelType() == Version.MODEL_TYPE.IHN_D101 || Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I
+                                || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K_I) {
+                            /*if(sdbMent.getCurrentTextColor() == Color.BLACK)
+                            {
+                                sdbMent.setTextColor(Color.GREEN);
+                            }
+                            else if(sdbMent.getCurrentTextColor() == Color.GREEN)
+                            {
+                                sdbMent.setTextColor(Color.BLACK);
+                            }*/
+
+                            if (sdbMent.getCurrentTextColor() != Color.BLACK) {
+                                sdbMent.setTextColor(Color.BLACK);
+                            }
+                            SdbCheckHandler.sendEmptyMessageDelayed(1, 10);
+                        }
+
+                        WallpadStatusData wallpadStatusData = new WallpadStatusData(mActivity);
+
+                        if (DEBUG)  Log.d(TAG, "wallpadStatusData.GetUserPW()() " + wallpadStatusData.GetUserPW());
+
+                        wallpadStatusData.SetUserPW("0000");
+                        if (DEBUG)  Log.d(TAG, "wallpadStatusData.GetUserPW()() " + wallpadStatusData.GetUserPW());
+
+                        wallpadStatusData.closeDB();
+
+                        String message = "사용자 비밀번호가 초기화 되었습니다.";
+                        resetNotiDialog(message);
+                    }
+                };
+
+        DialogInterface.OnClickListener negativeListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        dialog.dismiss();
+                    }
+                };
+
+        mDialog.openCommonDialog(title, message, positiveListener, negativeListener);
+    }
+
+    private DialogUtil mwebDialog;
+    private void webresetConfirmDialog()
+    {
+        mwebDialog = new DialogUtil(mActivity);
+        String title = mActivity.getString(R.string.admin_password_reset);
+        String message = "웹제어 비밀번호를 초기화 하시겠습니까?";
+
+        DialogInterface.OnClickListener positiveListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        dialog.dismiss();
+
+                        WallpadStatusData wallpadStatusData = new WallpadStatusData(mActivity);
+                        if (DEBUG)  Log.d(TAG, "wallpadStatusData.GetWebCtrPW()() " + wallpadStatusData.GetWebCtrPW());
+
+                        wallpadStatusData.SetWebCtrPW("000000");
+                        if (DEBUG)  Log.d(TAG, "wallpadStatusData.GetWebCtrPW()() " + wallpadStatusData.GetWebCtrPW());
+
+                        wallpadStatusData.closeDB();
+
+                        String message = "웹제어 비밀번호가 초기화 되었습니다.";
+                        resetNotiDialog(message);
+                    }
+                };
+
+        DialogInterface.OnClickListener negativeListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        dialog.dismiss();
+                    }
+                };
+
+        mwebDialog.openCommonDialog(title, message, positiveListener, negativeListener);
+    }
+
+
+    // open resetNoti Dialog
+    private void resetNotiDialog(final String message) {
+        mDialog = new DialogUtil(mActivity);
+        String title = mActivity.getString(R.string.admin_password_reset);
+
+        DialogInterface.OnClickListener positiveListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        dialog.dismiss();
+                    }
+                };
+
+        mDialog.openCommonDialog(title, message, positiveListener, null);
+    }
+
+
+
+    // close Dialog
+    private void closeDialog() {
+        if (mDialog != null) {
+            mDialog.closeDialog();
+            mDialog = null;
+        }
+    }
+
+    /**
+     * (임시코드) m_IntLightCtrl 초기생성시 Connect 에 시간이 걸리며, <br>
+     * m_IntLightCtrl 초기화후 바로 Get_IntLightController 등을 사용하여  API 를 가져올수 없기에, <br>
+     * 본 딜레이 코드를 임시로 적용한다.
+     */
+    @SuppressLint("HandlerLeak")
+    protected Handler SdbCheckHandler = new Handler()
+    {
+        @SuppressLint("HandlerLeak")
+        @Override
+        public void handleMessage(Message msg)
+        {
+            if (msg.what == 0)
+            {
+                if (SdbCheckHandler != null)
+                {
+                    if (mWallPadAPI != null)
+                    {
+                        if (mWallPadAPI.Check_Connect())
+                        {
+                            mSdbApi = mWallPadAPI.Get_SdbController();
+
+                            if (mSdbApi != null)
+                            {
+                                Log.i(TAG, "SdbCheckHandler --> sdbAPI != null");
+                                //SdbCheckHandler.sendEmptyMessageDelayed(1, 10);
+                            }
+                            else
+                            {
+                                Log.i(TAG, "SdbCheckHandler --> sdbAPI == null");
+                                SdbCheckHandler.sendEmptyMessageDelayed(0, 100);
+                            }
+
+                        }
+                        else
+                        {
+                            Log.i(TAG, "SdbCheckHandler --> m_wpapi.Check_Connect() == fail");
+                            SdbCheckHandler.sendEmptyMessageDelayed(0, 100);
+                        }
+                    }
+                }
+
+            }
+            else if (msg.what == 1)
+            {
+                if(mSdbApi == null)
+                {
+                    SdbCheckHandler.sendEmptyMessageDelayed(0, 100);
+                }
+
+                // 조건이 충족되면 명령 실행
+                SdbCheckHandler.sendEmptyMessageDelayed(2, 10);
+            }
+            else if (msg.what == 2)
+            {
+                try
+                {
+                    if(mSdbApi.SetInitPassword() >= 0)
+                    {
+                        // 글씨 초록색으로 변환
+                        sdbMent.setTextColor(Color.GREEN);
+                    }
+                    else // 실패하면 검정 글씨 유지하기
+                    {
+                        sdbMent.setTextColor(Color.BLACK);
+                    }
+
+                    // 바로 에너지미터 앱 사용안함 보내면 에너지미터에서 변경안되는것 같음
+					// ---> 딜레이 1.5초 추가
+					try {Thread.sleep(1500);}catch (Exception e){e.printStackTrace();}
+
+                    if(mSdbApi.Set_SmartPhoneLightControl(false) >= 0)
+                    {
+                        Log.d(TAG, "[SdbCheckHandler] - Set_SmartPhoneLightControl : SUCCESS");
+                    }
+                    else
+                    {
+                        Log.d(TAG, "[SdbCheckHandler] - Set_SmartPhoneLightControl : FAIL");
+                    }
+                }
+                catch (Exception ex)
+                {
+                    Log.e(TAG, "[SdbCheckHandler] - Init Password ERROR !!!");
+                    ex.printStackTrace();
+                }
+            }
+        }
+    };
+
+
+}

+ 150 - 150
ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/AdminQueryFragment.java

@@ -1,150 +1,150 @@
-package com.artncore.managersetting.ui.fragments;
-
-import android.content.res.Resources;
-import android.os.Bundle;
-//import android.support.v4.app.Fragment;
-import androidx.fragment.app.Fragment;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.LinearLayout;
-
-import com.artncore.managersetting.R;
-import com.artncore.managersetting.domain.Const;
-import com.artncore.managersetting.ui.activities.MainActivity;
-
-
-/**
- * A fragment representing a single Item detail screen. This fragment is either
- * contained in a {@link MainActivity} in two-pane mode (on tablets) or a
- * {link ItemDetailActivity} on handsets.
- */
-public class AdminQueryFragment extends Fragment implements AdminSubMenu.SubMenuChangedListener {
-    private static final String TAG = "AdminQueryFragment";
-
-    private final boolean DEBUG = true;
-
-    public static final int SUB_MENU_IDX_VERSION_INFO = 0;
-    public static final int SUB_MENU_IDX_GUARD_INFO =   1;
-    public static final int SUB_MENU_IDX_CCTV_INFO =    2;
-    public static final int SUB_MENU_IDX_STORAGE_INFO = 3;
-    public static final int SUB_MENU_IDX_ETC_INFO =     4;
-
-
-
-    private AdminSubMenu mAdminSubMenu;
-
-    private View mRootView;
-
-    /**
-     * The dummy content this fragment is presenting.
-     */
-    private AdminMenu.MenuItem mItem;
-
-    /**
-     * Mandatory empty constructor for the fragment manager to instantiate the
-     * fragment (e.g. upon screen orientation changes).
-     */
-    public AdminQueryFragment() {
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        if (getArguments().containsKey(Const.ARG_ITEM_ID)) {
-            // Load the dummy content specified by the fragment
-            // arguments. In a real-world scenario, use a Loader
-            // to load content from a content provider.
-            mItem = AdminMenu.ITEM_MAP.get(getArguments().getString(
-                    Const.ARG_ITEM_ID));
-        }
-    }
-
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-            Bundle savedInstanceState) {
-        View rootView = inflater.inflate(R.layout.fragment_admin_query,
-                container, false);
-
-        mRootView = rootView;
-
-        return rootView;
-    }
-
-
-    @Override
-    public void onViewCreated(View view, Bundle savedInstanceState) {
-        super.onViewCreated(view, savedInstanceState);
-
-        Resources res = getActivity().getResources();
-        String[] menuItem= res.getStringArray(R.array.entries_menu_admin_query);
-
-        mAdminSubMenu = new AdminSubMenu(getActivity(), menuItem, this);
-
-        LinearLayout.LayoutParams subMenuParams = new LinearLayout.LayoutParams(
-                            ViewGroup.LayoutParams.MATCH_PARENT,
-                            ViewGroup.LayoutParams.WRAP_CONTENT);
-
-        ViewGroup SubMenuView = (ViewGroup) view.findViewById(R.id.sub_menu_layout);
-        (SubMenuView).addView(mAdminSubMenu.getView(), subMenuParams);
-
-        onSubMenuChanged(0);
-    }
-
-
-    @Override
-    public void onSubMenuChanged(int menuIdx) {
-        if (DEBUG)  Log.d(TAG, "onSubMenuChanged() menuIdx : " + menuIdx);
-        MainActivity.setFinishTimerReset();
-        
-        mAdminSubMenu.setMenuSelected(menuIdx, true);
-        switch (menuIdx) {
-            case SUB_MENU_IDX_VERSION_INFO:
-            {
-                QueryVersionInfoFragment fragment = new QueryVersionInfoFragment();
-                getActivity().getSupportFragmentManager().beginTransaction()
-                        .replace(R.id.menu_content, fragment).commit();
-            }
-            break;
-
-            case SUB_MENU_IDX_GUARD_INFO:
-            {
-                QueryGuardInfoFragment fragment = new QueryGuardInfoFragment();
-                getActivity().getSupportFragmentManager().beginTransaction()
-                        .replace(R.id.menu_content, fragment).commit();
-            }
-            break;
-
-            case SUB_MENU_IDX_CCTV_INFO:
-            {
-                QueryCCTVInfoFragment fragment = new QueryCCTVInfoFragment();
-                getActivity().getSupportFragmentManager().beginTransaction()
-                        .replace(R.id.menu_content, fragment).commit();
-            }
-            break;
-
-            case SUB_MENU_IDX_STORAGE_INFO:
-            {
-                QueryStorageInfoFragment fragment = new QueryStorageInfoFragment();
-                getActivity().getSupportFragmentManager().beginTransaction()
-                        .replace(R.id.menu_content, fragment).commit();
-            }
-            break;
-
-            case SUB_MENU_IDX_ETC_INFO:
-            {
-                QueryEtcInfoFragment fragment = new QueryEtcInfoFragment();
-                getActivity().getSupportFragmentManager().beginTransaction()
-                        .replace(R.id.menu_content, fragment).commit();
-            }
-            break;
-
-            default:
-                break;
-        }
-    }
-
-}
+package com.artncore.managersetting.ui.fragments;
+
+import android.content.res.Resources;
+import android.os.Bundle;
+//import android.support.v4.app.Fragment;
+import androidx.fragment.app.Fragment;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.LinearLayout;
+
+import com.artncore.managersetting.R;
+import com.artncore.managersetting.domain.Const;
+import com.artncore.managersetting.ui.activities.MainActivity;
+
+
+/**
+ * A fragment representing a single Item detail screen. This fragment is either
+ * contained in a {@link MainActivity} in two-pane mode (on tablets) or a
+ * {link ItemDetailActivity} on handsets.
+ */
+public class AdminQueryFragment extends Fragment implements AdminSubMenu.SubMenuChangedListener {
+    private static final String TAG = "AdminQueryFragment";
+
+    private final boolean DEBUG = true;
+
+    public static final int SUB_MENU_IDX_VERSION_INFO = 0;
+    public static final int SUB_MENU_IDX_GUARD_INFO =   1;
+    public static final int SUB_MENU_IDX_CCTV_INFO =    2;
+    public static final int SUB_MENU_IDX_STORAGE_INFO = 3;
+    public static final int SUB_MENU_IDX_ETC_INFO =     4;
+
+
+
+    private AdminSubMenu mAdminSubMenu;
+
+    private View mRootView;
+
+    /**
+     * The dummy content this fragment is presenting.
+     */
+    private AdminMenu.MenuItem mItem;
+
+    /**
+     * Mandatory empty constructor for the fragment manager to instantiate the
+     * fragment (e.g. upon screen orientation changes).
+     */
+    public AdminQueryFragment() {
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        if (getArguments().containsKey(Const.ARG_ITEM_ID)) {
+            // Load the dummy content specified by the fragment
+            // arguments. In a real-world scenario, use a Loader
+            // to load content from a content provider.
+            mItem = AdminMenu.ITEM_MAP.get(getArguments().getString(
+                    Const.ARG_ITEM_ID));
+        }
+    }
+
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+            Bundle savedInstanceState) {
+        View rootView = inflater.inflate(R.layout.fragment_admin_query,
+                container, false);
+
+        mRootView = rootView;
+
+        return rootView;
+    }
+
+
+    @Override
+    public void onViewCreated(View view, Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+
+        Resources res = getActivity().getResources();
+        String[] menuItem= res.getStringArray(R.array.entries_menu_admin_query);
+
+        mAdminSubMenu = new AdminSubMenu(getActivity(), menuItem, this);
+
+        LinearLayout.LayoutParams subMenuParams = new LinearLayout.LayoutParams(
+                            ViewGroup.LayoutParams.MATCH_PARENT,
+                            ViewGroup.LayoutParams.WRAP_CONTENT);
+
+        ViewGroup SubMenuView = (ViewGroup) view.findViewById(R.id.sub_menu_layout);
+        (SubMenuView).addView(mAdminSubMenu.getView(), subMenuParams);
+
+        onSubMenuChanged(0);
+    }
+
+
+    @Override
+    public void onSubMenuChanged(int menuIdx) {
+        if (DEBUG)  Log.d(TAG, "onSubMenuChanged() menuIdx : " + menuIdx);
+        MainActivity.setFinishTimerReset();
+        
+        mAdminSubMenu.setMenuSelected(menuIdx, true);
+        switch (menuIdx) {
+            case SUB_MENU_IDX_VERSION_INFO:
+            {
+                QueryVersionInfoFragment fragment = new QueryVersionInfoFragment();
+                getActivity().getSupportFragmentManager().beginTransaction()
+                        .replace(R.id.menu_content, fragment).commit();
+            }
+            break;
+
+            case SUB_MENU_IDX_GUARD_INFO:
+            {
+                QueryGuardInfoFragment fragment = new QueryGuardInfoFragment();
+                getActivity().getSupportFragmentManager().beginTransaction()
+                        .replace(R.id.menu_content, fragment).commit();
+            }
+            break;
+
+            case SUB_MENU_IDX_CCTV_INFO:
+            {
+                QueryCCTVInfoFragment fragment = new QueryCCTVInfoFragment();
+                getActivity().getSupportFragmentManager().beginTransaction()
+                        .replace(R.id.menu_content, fragment).commit();
+            }
+            break;
+
+            case SUB_MENU_IDX_STORAGE_INFO:
+            {
+                QueryStorageInfoFragment fragment = new QueryStorageInfoFragment();
+                getActivity().getSupportFragmentManager().beginTransaction()
+                        .replace(R.id.menu_content, fragment).commit();
+            }
+            break;
+
+            case SUB_MENU_IDX_ETC_INFO:
+            {
+                QueryEtcInfoFragment fragment = new QueryEtcInfoFragment();
+                getActivity().getSupportFragmentManager().beginTransaction()
+                        .replace(R.id.menu_content, fragment).commit();
+            }
+            break;
+
+            default:
+                break;
+        }
+    }
+
+}

+ 701 - 701
ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/AdminSalesSampleFragment.java

@@ -1,701 +1,701 @@
-package com.artncore.managersetting.ui.fragments;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import android.app.Activity;
-import android.os.Bundle;
-//import android.support.v4.app.Fragment;
-import androidx.fragment.app.Fragment;
-import androidx.core.view.MotionEventCompat;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.View.OnTouchListener;
-import android.widget.ListView;
-
-
-import com.artncore.WallPadDataMgr.WallpadSalesSampleData;
-import com.artncore.deviceinterface.WallPadInterface;
-import com.artncore.managersetting.domain.Const;
-import com.artncore.managersetting.domain.ControllerVO;
-import com.artncore.managersetting.ui.ControllerListAdapter;
-import com.artncore.managersetting.ui.activities.MainActivity;
-import com.artncore.wallpadapi.WallPadAPI;
-import com.artncore.managersetting.MainApplication;
-import com.artncore.managersetting.R;
-
-/**
- * A list fragment representing a list of Items. This fragment also supports
- * tablet devices by allowing list items to be given an 'activated' state upon
- * selection. This helps indicate which item is currently being viewed in a
- * {link ItemDetailFragment}.
- * <p>
- * Activities containing this fragment MUST implement the {link Callbacks}
- * interface.
- */
-public class AdminSalesSampleFragment extends Fragment
-        implements ControllerListAdapter.ItemChangedListener {
-
-    private static final String TAG = "AdminSalesSampleFragment";
-
-    private final boolean DEBUG = true;
-
-    public final int SALES_TYPE_BASE =         Const.COMMON_TYPE_BASE;
-    public final int SALES_TYPE_SLIP_MODE =                         SALES_TYPE_BASE + 0;
-    public final int SALES_TYPE_HW_BUTTON =                         SALES_TYPE_BASE + 1;
-    public final int SALES_TYPE_ELEVATOR_SAMPLE_MODE =              SALES_TYPE_BASE + 2;
-    public final int SALES_TYPE_PARKING_SAMPLE_MODE =               SALES_TYPE_BASE + 3;
-    public final int SALES_TYPE_DOOR_CAMERA_SAMPLE_MODE =           SALES_TYPE_BASE + 4;
-    public final int SALES_TYPE_CONTROLLER_SAMPLE_MODE =            SALES_TYPE_BASE + 5;
-    public final int SALES_TYPE_ADDITIONAL_FUNCTION_SAMPLE_MODE =   SALES_TYPE_BASE + 6;
-    public final int SALES_TYPE_CALL_SCREEN_FUNCTION =              SALES_TYPE_BASE + 7;
-    public final int SALES_TYPE_ADDITIONAL_FUNCTION_TYPE =          SALES_TYPE_BASE + 8;
-    public final int SALES_TYPE_SENSOR_DETECT =                     SALES_TYPE_BASE + 9;
-    public final int SALES_TYPE_ROOM_NUMBER =                       SALES_TYPE_BASE + 10;
-    public final int SALES_TYPE_LIGHT_SHOW_MAINSCREEN =             SALES_TYPE_BASE + 11;
-    public final int SALES_TYPE_LOGO_OPTION =                       SALES_TYPE_BASE + 12;
-
-
-    private Activity mActivity;
-    private WallPadAPI mWallPadAPI;
-    private WallpadSalesSampleData mWallpadSalesSampleData;
-    private ListView mSalesListView;
-    private List<ControllerVO> mSalesList = new ArrayList<ControllerVO>();
-
-
-    // constructor
-    public AdminSalesSampleFragment() {
-    }
-
-    @Override
-    public void onAttach(Activity activity) {
-        super.onAttach(activity);
-
-        mActivity = activity;
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        if (DEBUG)  Log.d(TAG, "onCreate() ");
-
-        super.onCreate(savedInstanceState);
-
-        mWallPadAPI = MainActivity.getWallPadAPI();
-        mWallpadSalesSampleData = new WallpadSalesSampleData(mActivity);
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-        View rootView = (View) inflater.inflate(R.layout.controller_setting_container,
-                container, false);
-
-        return (View)rootView;
-    }
-
-    @Override
-    public void onViewCreated(View view, Bundle savedInstanceState) {
-        super.onViewCreated(view, savedInstanceState);
-
-        if (savedInstanceState != null) {}
-
-        mSalesListView = (ListView) view.findViewById(R.id.controller_list);
-
-        mSalesListView.setOnTouchListener(new OnTouchListener() {
-
-            @Override
-            public boolean onTouch(View v, MotionEvent event) {
-                switch (MotionEventCompat.getActionMasked(event)) {
-
-                    case MotionEvent.ACTION_UP:
-                        MainActivity.setFinishTimerReset();
-                        break;
-
-                    default:
-                        break;
-                }
-                return false;
-            }
-        });
-
-        initListView();
-    }
-
-    @Override
-    public void onDetach() {
-        super.onDetach();
-
-        mWallPadAPI = null;
-        mWallpadSalesSampleData.closeDB();
-        mWallpadSalesSampleData = null;
-    }
-
-
-    @Override
-    public void onSaveInstanceState(Bundle outState) {
-        super.onSaveInstanceState(outState);
-    }
-
-
-    // init ListView
-    private void initListView() {
-        getSalesList();
-/*
-        SwitchButtonListAdapter adapter = new SwitchButtonListAdapter(mActivity
-                                                                , R.layout.switch_button_list_item
-                                                                , mSalesList
-                                                                , this);
-  */
-        ControllerListAdapter adapter = new ControllerListAdapter(mActivity
-                , R.layout.setting_controller_item
-                , mSalesList
-                , this);
-
-        mSalesListView.setAdapter(adapter);
-    }
-
-
-    // add all SalesItem to SalesList
-    private void getSalesList() {
-        if (mWallPadAPI != null) {
-            addControllerVO(SALES_TYPE_SLIP_MODE);
-            addControllerVO(SALES_TYPE_HW_BUTTON);
-            addControllerVO(SALES_TYPE_ELEVATOR_SAMPLE_MODE);
-            addControllerVO(SALES_TYPE_PARKING_SAMPLE_MODE);
-            addControllerVO(SALES_TYPE_DOOR_CAMERA_SAMPLE_MODE);
-            addControllerVO(SALES_TYPE_CONTROLLER_SAMPLE_MODE);
-            addControllerVO(SALES_TYPE_ADDITIONAL_FUNCTION_SAMPLE_MODE);
-            addControllerVO(SALES_TYPE_CALL_SCREEN_FUNCTION);
-            addControllerVO(SALES_TYPE_ADDITIONAL_FUNCTION_TYPE);
-            addControllerVO(SALES_TYPE_SENSOR_DETECT);
-            addControllerVO(SALES_TYPE_ROOM_NUMBER);
-            addControllerVO(SALES_TYPE_LIGHT_SHOW_MAINSCREEN);
-            addControllerVO(SALES_TYPE_LOGO_OPTION);
-        }
-    }
-
-
-    // add SalesItem to SalesList
-    private void addControllerVO(int type) {
-        ControllerVO controllerVO = null;
-
-        switch (type) {
-            case SALES_TYPE_SLIP_MODE:
-            {
-                int slipModeCount = Const.CONTROLLER_ONOFF_COUNT;
-                int slipModeCurrent = 1;
-
-                int getData = mWallpadSalesSampleData.getSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_SLEEP);
-                if (getData == WallpadSalesSampleData.SALES_SAMPLE_MODE_ENABLED)
-                    slipModeCurrent = 1;
-                else
-                    slipModeCurrent = 0;
-
-                if (DEBUG)  Log.d(TAG, "slipModeCurrent : " + slipModeCurrent);
-
-                String controllerName = mActivity.getString(R.string.sales_sample_slip_mode);
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , slipModeCount
-                        , slipModeCurrent
-                );
-            }
-            break;
-
-            case SALES_TYPE_HW_BUTTON:
-            {
-                int HWButtonCount = Const.CONTROLLER_ONOFF_COUNT;
-                int HWButtonCurrent = 1;
-
-                int getData = mWallpadSalesSampleData.getSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_HW_BUTTON_OPERATION);
-                if (getData == WallpadSalesSampleData.SALES_SAMPLE_MODE_DO_USED)
-                    HWButtonCurrent = 1;
-                else
-                    HWButtonCurrent = 0;
-
-                if (DEBUG)  Log.d(TAG, "HWButtonCurrent : " + HWButtonCurrent);
-/*
-                List<String> itemList = new ArrayList<String>();
-                itemList.add(mActivity.getString(R.string.do_used));
-                itemList.add(mActivity.getString(R.string.do_not_used));
-*/
-                String controllerName = mActivity.getString(R.string.sales_sample_hw_button);
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , HWButtonCount
-                        , HWButtonCurrent
-                );
-            }
-            break;
-
-            case SALES_TYPE_ELEVATOR_SAMPLE_MODE:
-            {
-                int elevatroSampeModeCount = Const.CONTROLLER_ONOFF_COUNT;
-                int elevatroSampeModeCurrent = 1;
-
-                int getData = mWallpadSalesSampleData.getSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_ELEVATOR);
-                if (getData == WallpadSalesSampleData.SALES_SAMPLE_MODE_ENABLED)
-                    elevatroSampeModeCurrent = 1;
-                else
-                    elevatroSampeModeCurrent = 0;
-
-                if (DEBUG)  Log.d(TAG, "elevatroSampeModeCurrent : " + elevatroSampeModeCurrent);
-
-                String controllerName = mActivity.getString(R.string.sales_sample_elevator_sample_mode);
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , elevatroSampeModeCount
-                        , elevatroSampeModeCurrent
-                );
-            }
-            break;
-
-            case SALES_TYPE_PARKING_SAMPLE_MODE:
-            {
-                int parkingSampleModeCount = Const.CONTROLLER_ONOFF_COUNT;
-                int parkingSampleModeCurrent = 1;
-
-                int getData = mWallpadSalesSampleData.getSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_PARKING);
-                if (getData == WallpadSalesSampleData.SALES_SAMPLE_MODE_ENABLED)
-                    parkingSampleModeCurrent = 1;
-                else
-                    parkingSampleModeCurrent = 0;
-
-                if (DEBUG)  Log.d(TAG, "parkingSampleModeCurrent : " + parkingSampleModeCurrent);
-
-                String controllerName = mActivity.getString(R.string.sales_sample_parking_sample_mode);
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , parkingSampleModeCount
-                        , parkingSampleModeCurrent
-                );
-            }
-            break;
-
-            case SALES_TYPE_DOOR_CAMERA_SAMPLE_MODE:
-            {
-                int doorCameraSampelModeCount = Const.CONTROLLER_ONOFF_COUNT;
-                int doorCameraSampelModeCurrent = 1;
-
-                int getData = mWallpadSalesSampleData.getSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_DOOR_CAMERA);
-                if (getData == WallpadSalesSampleData.SALES_SAMPLE_MODE_ENABLED)
-                    doorCameraSampelModeCurrent = 1;
-                else
-                    doorCameraSampelModeCurrent = 0;
-
-                if (DEBUG)  Log.d(TAG, "doorCameraSampelModeCurrent : " + doorCameraSampelModeCurrent);
-
-                String controllerName = mActivity.getString(R.string.sales_sample_door_camera_sample_mode);
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , doorCameraSampelModeCount
-                        , doorCameraSampelModeCurrent
-                );
-            }
-            break;
-
-            case SALES_TYPE_CONTROLLER_SAMPLE_MODE:
-            {
-                int controllerSampleModeCount = Const.CONTROLLER_ONOFF_COUNT;
-                int controllerSampleModeCurrent = 1;
-
-                int getData = mWallpadSalesSampleData.getSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_DEVICE_CONTROLLER);
-                if (getData == WallpadSalesSampleData.SALES_SAMPLE_MODE_ENABLED)
-                    controllerSampleModeCurrent = 1;
-                else
-                    controllerSampleModeCurrent = 0;
-
-                if (DEBUG)  Log.d(TAG, "controllerSampleModeCurrent : " + controllerSampleModeCurrent);
-
-                String controllerName = mActivity.getString(R.string.sales_sample_controller_sample_mode);
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , controllerSampleModeCount
-                        , controllerSampleModeCurrent
-                );
-            }
-            break;
-
-            case SALES_TYPE_ADDITIONAL_FUNCTION_SAMPLE_MODE:
-            {
-                int additionalFunctionSampleModeCount = Const.CONTROLLER_ONOFF_COUNT;
-                int additionalFunctionSampleModeCurrent = 1;
-
-                int getData = mWallpadSalesSampleData.getSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_ADDITIONAL_FUNCTION);
-                if (getData == WallpadSalesSampleData.SALES_SAMPLE_MODE_ENABLED)
-                    additionalFunctionSampleModeCurrent = 1;
-                else
-                    additionalFunctionSampleModeCurrent = 0;
-
-                if (DEBUG)  Log.d(TAG, "additionalFunctionSampleModeCurrent : " + additionalFunctionSampleModeCurrent);
-
-                String controllerName = mActivity.getString(R.string.sales_sample_additional_function_sample_mode);
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , additionalFunctionSampleModeCount
-                        , additionalFunctionSampleModeCurrent
-                );
-            }
-            break;
-
-            case SALES_TYPE_CALL_SCREEN_FUNCTION:
-            {
-                int callScreenFunctionCount = Const.CONTROLLER_ONOFF_COUNT;
-                int callScreenFunctionCurrent = 1;
-
-                int getData = mWallpadSalesSampleData.getSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_CALL);
-                if (getData == WallpadSalesSampleData.SALES_SAMPLE_MODE_ENABLED)
-                    callScreenFunctionCurrent = 1;
-                else
-                    callScreenFunctionCurrent = 0;
-
-                if (DEBUG)  Log.d(TAG, "callScreenFunctionCurrent : " + callScreenFunctionCurrent);
-
-                String controllerName = mActivity.getString(R.string.sales_sample_call_screen_function);
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , callScreenFunctionCount
-                        , callScreenFunctionCurrent
-                );
-            }
-            break;
-
-            case SALES_TYPE_ADDITIONAL_FUNCTION_TYPE:
-            {
-                int additionalFunctionTypeCount = Const.CONTROLLER_ONOFF_COUNT;
-                int additionalFunctionTypeCurrent = 1;
-
-                int getData = mWallpadSalesSampleData.getSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_ADDITIONAL_FUNCTION_SELECT);
-                if (getData == WallpadSalesSampleData.SALES_SAMPLE_ADDITIONAL_FUNCTION_SELECT_EXTENTION)
-                    additionalFunctionTypeCurrent = 0;
-                else
-                    additionalFunctionTypeCurrent = 1;
-
-                if (DEBUG)  Log.d(TAG, "additionalFunctionTypeCurrent : " + additionalFunctionTypeCurrent);
-
-                List<String> itemList = new ArrayList<String>();
-                itemList.add(mActivity.getString(R.string.additional_function_type_extention));
-                itemList.add(mActivity.getString(R.string.additional_function_type_default));
-
-                String controllerName = mActivity.getString(R.string.sales_sample_additional_function_type);
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , additionalFunctionTypeCount
-                        , additionalFunctionTypeCurrent
-                        , itemList
-                );
-            }
-            break;
-
-            case SALES_TYPE_SENSOR_DETECT:
-            {
-                int sensorDetectCount = Const.CONTROLLER_ONOFF_COUNT;
-                int sensorDetectCurrent = 1;
-
-                int getData = mWallpadSalesSampleData.getSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_SENSOR_DETECTING);
-                if (getData == WallpadSalesSampleData.SALES_SAMPLE_MODE_DO_USED)
-                    sensorDetectCurrent = 1;
-                else
-                    sensorDetectCurrent = 0;
-
-                if (DEBUG)  Log.d(TAG, "sensorDetectCurrent : " + sensorDetectCurrent);
-
-                String controllerName = mActivity.getString(R.string.sales_sample_sensor_detect);
-/*
-                List<String> itemList = new ArrayList<String>();
-                itemList.add(mActivity.getString(R.string.do_used));
-                itemList.add(mActivity.getString(R.string.do_not_used));
-*/
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , sensorDetectCount
-                        , sensorDetectCurrent
-                );
-            }
-            break;
-
-            case SALES_TYPE_ROOM_NUMBER:
-            {
-                int RoomCount = Const.CONTROLLER_ROOM_MAX_COUNT;
-
-                int RoomCurrent = (mWallpadSalesSampleData.GetSampleRoomNumber() - 1);
-
-
-                if (DEBUG)  Log.d(TAG, "RoomCurrent : " + RoomCurrent);
-
-                String controllerName = mActivity.getString(R.string.sales_sample_room_number);
-
-                List<String> itemList = new ArrayList<String>();
-                itemList.add("1");
-                itemList.add("2");
-                itemList.add("3");
-                itemList.add("4");
-                itemList.add("5");
-                itemList.add("6");
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , RoomCount
-                        , RoomCurrent
-                        , itemList
-                );
-
-            }
-            break;
-
-            case SALES_TYPE_LIGHT_SHOW_MAINSCREEN:
-            {
-                int LightShowCount = Const.CONTROLLER_ONOFF_COUNT;
-                int LightShowCurrent = 1;
-
-                int getData = mWallpadSalesSampleData.getSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_LIGHT_SHOW_MAINSCREEN);
-                if (getData == WallpadSalesSampleData.SALES_SAMPLE_MODE_DO_USED)
-                    LightShowCurrent = 1;
-                else
-                    LightShowCurrent = 0;
-
-                if (DEBUG)  Log.d(TAG, "LightShowCurrent : " + LightShowCurrent);
-
-                String controllerName = mActivity.getString(R.string.sales_sample_light_show_mainscreen);
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , LightShowCount
-                        , LightShowCurrent
-                );
-            }
-            break;
-
-            case SALES_TYPE_LOGO_OPTION:
-            {
-                int LogoShowCount = Const.CONTROLLER_ONOFF_COUNT;
-                int LogoCurrent = mWallpadSalesSampleData.GetSampleMainScreenLogoOption();
-
-                if (DEBUG)  Log.d(TAG, "LogoCurrent : " + LogoCurrent);
-
-                String controllerName = mActivity.getString(R.string.sales_sample_logo_show_option);
-
-                List<String> itemList = new ArrayList<String>();
-                itemList.add("사용안함(조명 없음)");
-                itemList.add("SKT스마트홈 로고");
-                itemList.add("양우내안애");
-                itemList.add("GS ITM");
-                itemList.add("제로에너지 하우스");
-                itemList.add("거실조명표시");
-                itemList.add("거실조명삭제");
-                itemList.add("기타 1");
-                itemList.add("기타 2");
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , LogoShowCount
-                        , LogoCurrent
-                        , itemList
-                );
-            }
-            break;
-
-            default:
-                break;
-        }
-
-        if (controllerVO != null)
-            mSalesList.add(controllerVO);
-    }
-
-
-    @Override
-    public void onItemChanged(final int controllerIdx, final int position, final String itemName) {
-        String controllerName = mSalesList.get(controllerIdx).getName();
-        String message = controllerName + " 를 " + (itemName) + "로 변경하였습니다.";
-
-
-        if (DEBUG)  Log.d(TAG, "onItemChanged() controllerIdx : " + controllerIdx
-                + ", position : " + position
-                + ", itemName : " + itemName
-        );
-
-        //int type = ENERGY_TYPE_BASE + controllerIdx;
-        int type = mSalesList.get(controllerIdx).getType();
-
-        ControllerVO controllerVO = mSalesList.get(controllerIdx);
-        if (controllerVO != null) {
-            controllerVO.setInitCount(position);
-        }
-
-        switch (type) {
-            case SALES_TYPE_SLIP_MODE:
-            {
-                MainApplication.getApplication().setReboot();
-
-                int modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_DISABLED;
-                if (position == 1)
-                    modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_ENABLED;
-
-                if (DEBUG)  Log.d(TAG, "updateSalesSampleData() " + WallpadSalesSampleData.SALES_SAMPLE_MODE_SLEEP + ", " + modeSet);
-
-                mWallpadSalesSampleData.updateSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_SLEEP, modeSet);
-            }
-            break;
-
-            case SALES_TYPE_HW_BUTTON:
-            {
-                int modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_DO_NOT_USED;
-                if (position == 1)
-                    modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_DO_USED;
-
-                if (DEBUG)  Log.d(TAG, "updateSalesSampleData() " + WallpadSalesSampleData.SALES_SAMPLE_MODE_HW_BUTTON_OPERATION + ", " + modeSet);
-
-                mWallpadSalesSampleData.updateSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_HW_BUTTON_OPERATION, modeSet);
-
-
-                WallPadInterface wallPadInterface = new WallPadInterface();;
-                wallPadInterface.setHWKeyControll((modeSet == WallpadSalesSampleData.SALES_SAMPLE_MODE_DO_USED) ? true : false);
-            }
-            break;
-
-            case SALES_TYPE_ELEVATOR_SAMPLE_MODE:
-            {
-                int modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_DISABLED;
-                if (position == 1)
-                    modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_ENABLED;
-
-                if (DEBUG)  Log.d(TAG, "updateSalesSampleData() " + WallpadSalesSampleData.SALES_SAMPLE_MODE_ELEVATOR + ", " + modeSet);
-
-                mWallpadSalesSampleData.updateSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_ELEVATOR, modeSet);
-            }
-            break;
-
-            case SALES_TYPE_PARKING_SAMPLE_MODE:
-            {
-                int modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_DISABLED;
-                if (position == 1)
-                    modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_ENABLED;
-
-                if (DEBUG)  Log.d(TAG, "updateSalesSampleData() " + WallpadSalesSampleData.SALES_SAMPLE_MODE_PARKING + ", " + modeSet);
-
-                mWallpadSalesSampleData.updateSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_PARKING, modeSet);
-            }
-            break;
-
-            case SALES_TYPE_DOOR_CAMERA_SAMPLE_MODE:
-            {
-                int modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_DISABLED;
-                if (position == 1)
-                    modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_ENABLED;
-
-                if (DEBUG)  Log.d(TAG, "updateSalesSampleData() " + WallpadSalesSampleData.SALES_SAMPLE_MODE_DOOR_CAMERA + ", " + modeSet);
-
-                mWallpadSalesSampleData.updateSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_DOOR_CAMERA, modeSet);
-            }
-            break;
-
-            case SALES_TYPE_CONTROLLER_SAMPLE_MODE:
-            {
-                int modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_DISABLED;
-                if (position == 1)
-                    modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_ENABLED;
-
-                if (DEBUG)  Log.d(TAG, "updateSalesSampleData() " + WallpadSalesSampleData.SALES_SAMPLE_MODE_DEVICE_CONTROLLER + ", " + modeSet);
-
-                mWallpadSalesSampleData.updateSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_DEVICE_CONTROLLER, modeSet);
-            }
-            break;
-
-            case SALES_TYPE_ADDITIONAL_FUNCTION_SAMPLE_MODE:
-            {
-                int modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_DISABLED;
-                if (position == 1)
-                    modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_ENABLED;
-
-                if (DEBUG)  Log.d(TAG, "updateSalesSampleData() " + WallpadSalesSampleData.SALES_SAMPLE_MODE_ADDITIONAL_FUNCTION + ", " + modeSet);
-
-                mWallpadSalesSampleData.updateSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_ADDITIONAL_FUNCTION, modeSet);
-            }
-            break;
-
-            case SALES_TYPE_CALL_SCREEN_FUNCTION:
-            {
-                int modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_DISABLED;
-                if (position == 1)
-                    modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_ENABLED;
-
-                if (DEBUG)  Log.d(TAG, "updateSalesSampleData() " + WallpadSalesSampleData.SALES_SAMPLE_MODE_CALL + ", " + modeSet);
-
-                mWallpadSalesSampleData.updateSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_CALL, modeSet);
-            }
-            break;
-
-            case SALES_TYPE_ADDITIONAL_FUNCTION_TYPE:
-            {
-                int modeSet = WallpadSalesSampleData.SALES_SAMPLE_ADDITIONAL_FUNCTION_SELECT_DEFAULT;
-                if (position == 0)
-                    modeSet = WallpadSalesSampleData.SALES_SAMPLE_ADDITIONAL_FUNCTION_SELECT_EXTENTION;
-
-                if (DEBUG)  Log.d(TAG, "updateSalesSampleData() " + WallpadSalesSampleData.SALES_SAMPLE_MODE_ADDITIONAL_FUNCTION_SELECT + ", " + modeSet);
-
-                mWallpadSalesSampleData.updateSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_ADDITIONAL_FUNCTION_SELECT, modeSet);
-            }
-            break;
-
-            case SALES_TYPE_SENSOR_DETECT:
-            {
-                int modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_DO_NOT_USED;
-                if (position == 1)
-                    modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_DO_USED;
-
-                if (DEBUG)  Log.d(TAG, "updateSalesSampleData() " + WallpadSalesSampleData.SALES_SAMPLE_MODE_SENSOR_DETECTING + ", " + modeSet);
-
-                mWallpadSalesSampleData.updateSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_SENSOR_DETECTING, modeSet);
-            }
-            break;
-
-            case SALES_TYPE_ROOM_NUMBER:
-            {
-                int modeSet = (position+1);
-                if (DEBUG)  Log.d(TAG, "updateSalesSampleData() " + WallpadSalesSampleData.SALES_SAMPLE_MODE_ROOM_NUMBER + ", " + modeSet);
-                mWallpadSalesSampleData.updateSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_ROOM_NUMBER, modeSet);
-
-            }
-            break;
-
-            case SALES_TYPE_LIGHT_SHOW_MAINSCREEN:
-            {
-                int modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_DO_NOT_USED;
-                if (position == 1)
-                    modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_DO_USED;
-
-                if (DEBUG)  Log.d(TAG, "updateSalesSampleData() " + WallpadSalesSampleData.SALES_SAMPLE_MODE_LIGHT_SHOW_MAINSCREEN + ", " + modeSet);
-
-                mWallpadSalesSampleData.updateSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_LIGHT_SHOW_MAINSCREEN, modeSet);
-            }
-            break;
-
-            case SALES_TYPE_LOGO_OPTION:
-            {
-                int modeSet = (position);
-
-                if (DEBUG)  Log.d(TAG, "updateSalesSampleData() " + WallpadSalesSampleData.SALES_SAMPLE_MODE_LOGO_SHOW_OPTION + ", " + modeSet);
-
-                mWallpadSalesSampleData.updateSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_LOGO_SHOW_OPTION, modeSet);
-            }
-            break;
-
-            default:
-                break;
-        }
-    }
-
-}
+package com.artncore.managersetting.ui.fragments;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import android.app.Activity;
+import android.os.Bundle;
+//import android.support.v4.app.Fragment;
+import androidx.fragment.app.Fragment;
+import androidx.core.view.MotionEventCompat;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.View.OnTouchListener;
+import android.widget.ListView;
+
+
+import com.artncore.WallPadDataMgr.WallpadSalesSampleData;
+import com.artncore.deviceinterface.WallPadInterface;
+import com.artncore.managersetting.domain.Const;
+import com.artncore.managersetting.domain.ControllerVO;
+import com.artncore.managersetting.ui.ControllerListAdapter;
+import com.artncore.managersetting.ui.activities.MainActivity;
+import com.artncore.wallpadapi.WallPadAPI;
+import com.artncore.managersetting.MainApplication;
+import com.artncore.managersetting.R;
+
+/**
+ * A list fragment representing a list of Items. This fragment also supports
+ * tablet devices by allowing list items to be given an 'activated' state upon
+ * selection. This helps indicate which item is currently being viewed in a
+ * {link ItemDetailFragment}.
+ * <p>
+ * Activities containing this fragment MUST implement the {link Callbacks}
+ * interface.
+ */
+public class AdminSalesSampleFragment extends Fragment
+        implements ControllerListAdapter.ItemChangedListener {
+
+    private static final String TAG = "AdminSalesSampleFragment";
+
+    private final boolean DEBUG = true;
+
+    public final int SALES_TYPE_BASE =         Const.COMMON_TYPE_BASE;
+    public final int SALES_TYPE_SLIP_MODE =                         SALES_TYPE_BASE + 0;
+    public final int SALES_TYPE_HW_BUTTON =                         SALES_TYPE_BASE + 1;
+    public final int SALES_TYPE_ELEVATOR_SAMPLE_MODE =              SALES_TYPE_BASE + 2;
+    public final int SALES_TYPE_PARKING_SAMPLE_MODE =               SALES_TYPE_BASE + 3;
+    public final int SALES_TYPE_DOOR_CAMERA_SAMPLE_MODE =           SALES_TYPE_BASE + 4;
+    public final int SALES_TYPE_CONTROLLER_SAMPLE_MODE =            SALES_TYPE_BASE + 5;
+    public final int SALES_TYPE_ADDITIONAL_FUNCTION_SAMPLE_MODE =   SALES_TYPE_BASE + 6;
+    public final int SALES_TYPE_CALL_SCREEN_FUNCTION =              SALES_TYPE_BASE + 7;
+    public final int SALES_TYPE_ADDITIONAL_FUNCTION_TYPE =          SALES_TYPE_BASE + 8;
+    public final int SALES_TYPE_SENSOR_DETECT =                     SALES_TYPE_BASE + 9;
+    public final int SALES_TYPE_ROOM_NUMBER =                       SALES_TYPE_BASE + 10;
+    public final int SALES_TYPE_LIGHT_SHOW_MAINSCREEN =             SALES_TYPE_BASE + 11;
+    public final int SALES_TYPE_LOGO_OPTION =                       SALES_TYPE_BASE + 12;
+
+
+    private Activity mActivity;
+    private WallPadAPI mWallPadAPI;
+    private WallpadSalesSampleData mWallpadSalesSampleData;
+    private ListView mSalesListView;
+    private List<ControllerVO> mSalesList = new ArrayList<ControllerVO>();
+
+
+    // constructor
+    public AdminSalesSampleFragment() {
+    }
+
+    @Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+
+        mActivity = activity;
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        if (DEBUG)  Log.d(TAG, "onCreate() ");
+
+        super.onCreate(savedInstanceState);
+
+        mWallPadAPI = MainActivity.getWallPadAPI();
+        mWallpadSalesSampleData = new WallpadSalesSampleData(mActivity);
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+                             Bundle savedInstanceState) {
+        View rootView = (View) inflater.inflate(R.layout.controller_setting_container,
+                container, false);
+
+        return (View)rootView;
+    }
+
+    @Override
+    public void onViewCreated(View view, Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+
+        if (savedInstanceState != null) {}
+
+        mSalesListView = (ListView) view.findViewById(R.id.controller_list);
+
+        mSalesListView.setOnTouchListener(new OnTouchListener() {
+
+            @Override
+            public boolean onTouch(View v, MotionEvent event) {
+                switch (MotionEventCompat.getActionMasked(event)) {
+
+                    case MotionEvent.ACTION_UP:
+                        MainActivity.setFinishTimerReset();
+                        break;
+
+                    default:
+                        break;
+                }
+                return false;
+            }
+        });
+
+        initListView();
+    }
+
+    @Override
+    public void onDetach() {
+        super.onDetach();
+
+        mWallPadAPI = null;
+        mWallpadSalesSampleData.closeDB();
+        mWallpadSalesSampleData = null;
+    }
+
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+    }
+
+
+    // init ListView
+    private void initListView() {
+        getSalesList();
+/*
+        SwitchButtonListAdapter adapter = new SwitchButtonListAdapter(mActivity
+                                                                , R.layout.switch_button_list_item
+                                                                , mSalesList
+                                                                , this);
+  */
+        ControllerListAdapter adapter = new ControllerListAdapter(mActivity
+                , R.layout.setting_controller_item
+                , mSalesList
+                , this);
+
+        mSalesListView.setAdapter(adapter);
+    }
+
+
+    // add all SalesItem to SalesList
+    private void getSalesList() {
+        if (mWallPadAPI != null) {
+            addControllerVO(SALES_TYPE_SLIP_MODE);
+            addControllerVO(SALES_TYPE_HW_BUTTON);
+            addControllerVO(SALES_TYPE_ELEVATOR_SAMPLE_MODE);
+            addControllerVO(SALES_TYPE_PARKING_SAMPLE_MODE);
+            addControllerVO(SALES_TYPE_DOOR_CAMERA_SAMPLE_MODE);
+            addControllerVO(SALES_TYPE_CONTROLLER_SAMPLE_MODE);
+            addControllerVO(SALES_TYPE_ADDITIONAL_FUNCTION_SAMPLE_MODE);
+            addControllerVO(SALES_TYPE_CALL_SCREEN_FUNCTION);
+            addControllerVO(SALES_TYPE_ADDITIONAL_FUNCTION_TYPE);
+            addControllerVO(SALES_TYPE_SENSOR_DETECT);
+            addControllerVO(SALES_TYPE_ROOM_NUMBER);
+            addControllerVO(SALES_TYPE_LIGHT_SHOW_MAINSCREEN);
+            addControllerVO(SALES_TYPE_LOGO_OPTION);
+        }
+    }
+
+
+    // add SalesItem to SalesList
+    private void addControllerVO(int type) {
+        ControllerVO controllerVO = null;
+
+        switch (type) {
+            case SALES_TYPE_SLIP_MODE:
+            {
+                int slipModeCount = Const.CONTROLLER_ONOFF_COUNT;
+                int slipModeCurrent = 1;
+
+                int getData = mWallpadSalesSampleData.getSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_SLEEP);
+                if (getData == WallpadSalesSampleData.SALES_SAMPLE_MODE_ENABLED)
+                    slipModeCurrent = 1;
+                else
+                    slipModeCurrent = 0;
+
+                if (DEBUG)  Log.d(TAG, "slipModeCurrent : " + slipModeCurrent);
+
+                String controllerName = mActivity.getString(R.string.sales_sample_slip_mode);
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , slipModeCount
+                        , slipModeCurrent
+                );
+            }
+            break;
+
+            case SALES_TYPE_HW_BUTTON:
+            {
+                int HWButtonCount = Const.CONTROLLER_ONOFF_COUNT;
+                int HWButtonCurrent = 1;
+
+                int getData = mWallpadSalesSampleData.getSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_HW_BUTTON_OPERATION);
+                if (getData == WallpadSalesSampleData.SALES_SAMPLE_MODE_DO_USED)
+                    HWButtonCurrent = 1;
+                else
+                    HWButtonCurrent = 0;
+
+                if (DEBUG)  Log.d(TAG, "HWButtonCurrent : " + HWButtonCurrent);
+/*
+                List<String> itemList = new ArrayList<String>();
+                itemList.add(mActivity.getString(R.string.do_used));
+                itemList.add(mActivity.getString(R.string.do_not_used));
+*/
+                String controllerName = mActivity.getString(R.string.sales_sample_hw_button);
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , HWButtonCount
+                        , HWButtonCurrent
+                );
+            }
+            break;
+
+            case SALES_TYPE_ELEVATOR_SAMPLE_MODE:
+            {
+                int elevatroSampeModeCount = Const.CONTROLLER_ONOFF_COUNT;
+                int elevatroSampeModeCurrent = 1;
+
+                int getData = mWallpadSalesSampleData.getSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_ELEVATOR);
+                if (getData == WallpadSalesSampleData.SALES_SAMPLE_MODE_ENABLED)
+                    elevatroSampeModeCurrent = 1;
+                else
+                    elevatroSampeModeCurrent = 0;
+
+                if (DEBUG)  Log.d(TAG, "elevatroSampeModeCurrent : " + elevatroSampeModeCurrent);
+
+                String controllerName = mActivity.getString(R.string.sales_sample_elevator_sample_mode);
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , elevatroSampeModeCount
+                        , elevatroSampeModeCurrent
+                );
+            }
+            break;
+
+            case SALES_TYPE_PARKING_SAMPLE_MODE:
+            {
+                int parkingSampleModeCount = Const.CONTROLLER_ONOFF_COUNT;
+                int parkingSampleModeCurrent = 1;
+
+                int getData = mWallpadSalesSampleData.getSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_PARKING);
+                if (getData == WallpadSalesSampleData.SALES_SAMPLE_MODE_ENABLED)
+                    parkingSampleModeCurrent = 1;
+                else
+                    parkingSampleModeCurrent = 0;
+
+                if (DEBUG)  Log.d(TAG, "parkingSampleModeCurrent : " + parkingSampleModeCurrent);
+
+                String controllerName = mActivity.getString(R.string.sales_sample_parking_sample_mode);
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , parkingSampleModeCount
+                        , parkingSampleModeCurrent
+                );
+            }
+            break;
+
+            case SALES_TYPE_DOOR_CAMERA_SAMPLE_MODE:
+            {
+                int doorCameraSampelModeCount = Const.CONTROLLER_ONOFF_COUNT;
+                int doorCameraSampelModeCurrent = 1;
+
+                int getData = mWallpadSalesSampleData.getSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_DOOR_CAMERA);
+                if (getData == WallpadSalesSampleData.SALES_SAMPLE_MODE_ENABLED)
+                    doorCameraSampelModeCurrent = 1;
+                else
+                    doorCameraSampelModeCurrent = 0;
+
+                if (DEBUG)  Log.d(TAG, "doorCameraSampelModeCurrent : " + doorCameraSampelModeCurrent);
+
+                String controllerName = mActivity.getString(R.string.sales_sample_door_camera_sample_mode);
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , doorCameraSampelModeCount
+                        , doorCameraSampelModeCurrent
+                );
+            }
+            break;
+
+            case SALES_TYPE_CONTROLLER_SAMPLE_MODE:
+            {
+                int controllerSampleModeCount = Const.CONTROLLER_ONOFF_COUNT;
+                int controllerSampleModeCurrent = 1;
+
+                int getData = mWallpadSalesSampleData.getSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_DEVICE_CONTROLLER);
+                if (getData == WallpadSalesSampleData.SALES_SAMPLE_MODE_ENABLED)
+                    controllerSampleModeCurrent = 1;
+                else
+                    controllerSampleModeCurrent = 0;
+
+                if (DEBUG)  Log.d(TAG, "controllerSampleModeCurrent : " + controllerSampleModeCurrent);
+
+                String controllerName = mActivity.getString(R.string.sales_sample_controller_sample_mode);
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , controllerSampleModeCount
+                        , controllerSampleModeCurrent
+                );
+            }
+            break;
+
+            case SALES_TYPE_ADDITIONAL_FUNCTION_SAMPLE_MODE:
+            {
+                int additionalFunctionSampleModeCount = Const.CONTROLLER_ONOFF_COUNT;
+                int additionalFunctionSampleModeCurrent = 1;
+
+                int getData = mWallpadSalesSampleData.getSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_ADDITIONAL_FUNCTION);
+                if (getData == WallpadSalesSampleData.SALES_SAMPLE_MODE_ENABLED)
+                    additionalFunctionSampleModeCurrent = 1;
+                else
+                    additionalFunctionSampleModeCurrent = 0;
+
+                if (DEBUG)  Log.d(TAG, "additionalFunctionSampleModeCurrent : " + additionalFunctionSampleModeCurrent);
+
+                String controllerName = mActivity.getString(R.string.sales_sample_additional_function_sample_mode);
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , additionalFunctionSampleModeCount
+                        , additionalFunctionSampleModeCurrent
+                );
+            }
+            break;
+
+            case SALES_TYPE_CALL_SCREEN_FUNCTION:
+            {
+                int callScreenFunctionCount = Const.CONTROLLER_ONOFF_COUNT;
+                int callScreenFunctionCurrent = 1;
+
+                int getData = mWallpadSalesSampleData.getSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_CALL);
+                if (getData == WallpadSalesSampleData.SALES_SAMPLE_MODE_ENABLED)
+                    callScreenFunctionCurrent = 1;
+                else
+                    callScreenFunctionCurrent = 0;
+
+                if (DEBUG)  Log.d(TAG, "callScreenFunctionCurrent : " + callScreenFunctionCurrent);
+
+                String controllerName = mActivity.getString(R.string.sales_sample_call_screen_function);
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , callScreenFunctionCount
+                        , callScreenFunctionCurrent
+                );
+            }
+            break;
+
+            case SALES_TYPE_ADDITIONAL_FUNCTION_TYPE:
+            {
+                int additionalFunctionTypeCount = Const.CONTROLLER_ONOFF_COUNT;
+                int additionalFunctionTypeCurrent = 1;
+
+                int getData = mWallpadSalesSampleData.getSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_ADDITIONAL_FUNCTION_SELECT);
+                if (getData == WallpadSalesSampleData.SALES_SAMPLE_ADDITIONAL_FUNCTION_SELECT_EXTENTION)
+                    additionalFunctionTypeCurrent = 0;
+                else
+                    additionalFunctionTypeCurrent = 1;
+
+                if (DEBUG)  Log.d(TAG, "additionalFunctionTypeCurrent : " + additionalFunctionTypeCurrent);
+
+                List<String> itemList = new ArrayList<String>();
+                itemList.add(mActivity.getString(R.string.additional_function_type_extention));
+                itemList.add(mActivity.getString(R.string.additional_function_type_default));
+
+                String controllerName = mActivity.getString(R.string.sales_sample_additional_function_type);
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , additionalFunctionTypeCount
+                        , additionalFunctionTypeCurrent
+                        , itemList
+                );
+            }
+            break;
+
+            case SALES_TYPE_SENSOR_DETECT:
+            {
+                int sensorDetectCount = Const.CONTROLLER_ONOFF_COUNT;
+                int sensorDetectCurrent = 1;
+
+                int getData = mWallpadSalesSampleData.getSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_SENSOR_DETECTING);
+                if (getData == WallpadSalesSampleData.SALES_SAMPLE_MODE_DO_USED)
+                    sensorDetectCurrent = 1;
+                else
+                    sensorDetectCurrent = 0;
+
+                if (DEBUG)  Log.d(TAG, "sensorDetectCurrent : " + sensorDetectCurrent);
+
+                String controllerName = mActivity.getString(R.string.sales_sample_sensor_detect);
+/*
+                List<String> itemList = new ArrayList<String>();
+                itemList.add(mActivity.getString(R.string.do_used));
+                itemList.add(mActivity.getString(R.string.do_not_used));
+*/
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , sensorDetectCount
+                        , sensorDetectCurrent
+                );
+            }
+            break;
+
+            case SALES_TYPE_ROOM_NUMBER:
+            {
+                int RoomCount = Const.CONTROLLER_ROOM_MAX_COUNT;
+
+                int RoomCurrent = (mWallpadSalesSampleData.GetSampleRoomNumber() - 1);
+
+
+                if (DEBUG)  Log.d(TAG, "RoomCurrent : " + RoomCurrent);
+
+                String controllerName = mActivity.getString(R.string.sales_sample_room_number);
+
+                List<String> itemList = new ArrayList<String>();
+                itemList.add("1");
+                itemList.add("2");
+                itemList.add("3");
+                itemList.add("4");
+                itemList.add("5");
+                itemList.add("6");
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , RoomCount
+                        , RoomCurrent
+                        , itemList
+                );
+
+            }
+            break;
+
+            case SALES_TYPE_LIGHT_SHOW_MAINSCREEN:
+            {
+                int LightShowCount = Const.CONTROLLER_ONOFF_COUNT;
+                int LightShowCurrent = 1;
+
+                int getData = mWallpadSalesSampleData.getSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_LIGHT_SHOW_MAINSCREEN);
+                if (getData == WallpadSalesSampleData.SALES_SAMPLE_MODE_DO_USED)
+                    LightShowCurrent = 1;
+                else
+                    LightShowCurrent = 0;
+
+                if (DEBUG)  Log.d(TAG, "LightShowCurrent : " + LightShowCurrent);
+
+                String controllerName = mActivity.getString(R.string.sales_sample_light_show_mainscreen);
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , LightShowCount
+                        , LightShowCurrent
+                );
+            }
+            break;
+
+            case SALES_TYPE_LOGO_OPTION:
+            {
+                int LogoShowCount = Const.CONTROLLER_ONOFF_COUNT;
+                int LogoCurrent = mWallpadSalesSampleData.GetSampleMainScreenLogoOption();
+
+                if (DEBUG)  Log.d(TAG, "LogoCurrent : " + LogoCurrent);
+
+                String controllerName = mActivity.getString(R.string.sales_sample_logo_show_option);
+
+                List<String> itemList = new ArrayList<String>();
+                itemList.add("사용안함(조명 없음)");
+                itemList.add("SKT스마트홈 로고");
+                itemList.add("양우내안애");
+                itemList.add("GS ITM");
+                itemList.add("제로에너지 하우스");
+                itemList.add("거실조명표시");
+                itemList.add("거실조명삭제");
+                itemList.add("기타 1");
+                itemList.add("기타 2");
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , LogoShowCount
+                        , LogoCurrent
+                        , itemList
+                );
+            }
+            break;
+
+            default:
+                break;
+        }
+
+        if (controllerVO != null)
+            mSalesList.add(controllerVO);
+    }
+
+
+    @Override
+    public void onItemChanged(final int controllerIdx, final int position, final String itemName) {
+        String controllerName = mSalesList.get(controllerIdx).getName();
+        String message = controllerName + " 를 " + (itemName) + "로 변경하였습니다.";
+
+
+        if (DEBUG)  Log.d(TAG, "onItemChanged() controllerIdx : " + controllerIdx
+                + ", position : " + position
+                + ", itemName : " + itemName
+        );
+
+        //int type = ENERGY_TYPE_BASE + controllerIdx;
+        int type = mSalesList.get(controllerIdx).getType();
+
+        ControllerVO controllerVO = mSalesList.get(controllerIdx);
+        if (controllerVO != null) {
+            controllerVO.setInitCount(position);
+        }
+
+        switch (type) {
+            case SALES_TYPE_SLIP_MODE:
+            {
+                MainApplication.getApplication().setReboot();
+
+                int modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_DISABLED;
+                if (position == 1)
+                    modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_ENABLED;
+
+                if (DEBUG)  Log.d(TAG, "updateSalesSampleData() " + WallpadSalesSampleData.SALES_SAMPLE_MODE_SLEEP + ", " + modeSet);
+
+                mWallpadSalesSampleData.updateSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_SLEEP, modeSet);
+            }
+            break;
+
+            case SALES_TYPE_HW_BUTTON:
+            {
+                int modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_DO_NOT_USED;
+                if (position == 1)
+                    modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_DO_USED;
+
+                if (DEBUG)  Log.d(TAG, "updateSalesSampleData() " + WallpadSalesSampleData.SALES_SAMPLE_MODE_HW_BUTTON_OPERATION + ", " + modeSet);
+
+                mWallpadSalesSampleData.updateSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_HW_BUTTON_OPERATION, modeSet);
+
+
+                WallPadInterface wallPadInterface = new WallPadInterface();;
+                wallPadInterface.setHWKeyControll((modeSet == WallpadSalesSampleData.SALES_SAMPLE_MODE_DO_USED) ? true : false);
+            }
+            break;
+
+            case SALES_TYPE_ELEVATOR_SAMPLE_MODE:
+            {
+                int modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_DISABLED;
+                if (position == 1)
+                    modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_ENABLED;
+
+                if (DEBUG)  Log.d(TAG, "updateSalesSampleData() " + WallpadSalesSampleData.SALES_SAMPLE_MODE_ELEVATOR + ", " + modeSet);
+
+                mWallpadSalesSampleData.updateSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_ELEVATOR, modeSet);
+            }
+            break;
+
+            case SALES_TYPE_PARKING_SAMPLE_MODE:
+            {
+                int modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_DISABLED;
+                if (position == 1)
+                    modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_ENABLED;
+
+                if (DEBUG)  Log.d(TAG, "updateSalesSampleData() " + WallpadSalesSampleData.SALES_SAMPLE_MODE_PARKING + ", " + modeSet);
+
+                mWallpadSalesSampleData.updateSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_PARKING, modeSet);
+            }
+            break;
+
+            case SALES_TYPE_DOOR_CAMERA_SAMPLE_MODE:
+            {
+                int modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_DISABLED;
+                if (position == 1)
+                    modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_ENABLED;
+
+                if (DEBUG)  Log.d(TAG, "updateSalesSampleData() " + WallpadSalesSampleData.SALES_SAMPLE_MODE_DOOR_CAMERA + ", " + modeSet);
+
+                mWallpadSalesSampleData.updateSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_DOOR_CAMERA, modeSet);
+            }
+            break;
+
+            case SALES_TYPE_CONTROLLER_SAMPLE_MODE:
+            {
+                int modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_DISABLED;
+                if (position == 1)
+                    modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_ENABLED;
+
+                if (DEBUG)  Log.d(TAG, "updateSalesSampleData() " + WallpadSalesSampleData.SALES_SAMPLE_MODE_DEVICE_CONTROLLER + ", " + modeSet);
+
+                mWallpadSalesSampleData.updateSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_DEVICE_CONTROLLER, modeSet);
+            }
+            break;
+
+            case SALES_TYPE_ADDITIONAL_FUNCTION_SAMPLE_MODE:
+            {
+                int modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_DISABLED;
+                if (position == 1)
+                    modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_ENABLED;
+
+                if (DEBUG)  Log.d(TAG, "updateSalesSampleData() " + WallpadSalesSampleData.SALES_SAMPLE_MODE_ADDITIONAL_FUNCTION + ", " + modeSet);
+
+                mWallpadSalesSampleData.updateSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_ADDITIONAL_FUNCTION, modeSet);
+            }
+            break;
+
+            case SALES_TYPE_CALL_SCREEN_FUNCTION:
+            {
+                int modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_DISABLED;
+                if (position == 1)
+                    modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_ENABLED;
+
+                if (DEBUG)  Log.d(TAG, "updateSalesSampleData() " + WallpadSalesSampleData.SALES_SAMPLE_MODE_CALL + ", " + modeSet);
+
+                mWallpadSalesSampleData.updateSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_CALL, modeSet);
+            }
+            break;
+
+            case SALES_TYPE_ADDITIONAL_FUNCTION_TYPE:
+            {
+                int modeSet = WallpadSalesSampleData.SALES_SAMPLE_ADDITIONAL_FUNCTION_SELECT_DEFAULT;
+                if (position == 0)
+                    modeSet = WallpadSalesSampleData.SALES_SAMPLE_ADDITIONAL_FUNCTION_SELECT_EXTENTION;
+
+                if (DEBUG)  Log.d(TAG, "updateSalesSampleData() " + WallpadSalesSampleData.SALES_SAMPLE_MODE_ADDITIONAL_FUNCTION_SELECT + ", " + modeSet);
+
+                mWallpadSalesSampleData.updateSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_ADDITIONAL_FUNCTION_SELECT, modeSet);
+            }
+            break;
+
+            case SALES_TYPE_SENSOR_DETECT:
+            {
+                int modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_DO_NOT_USED;
+                if (position == 1)
+                    modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_DO_USED;
+
+                if (DEBUG)  Log.d(TAG, "updateSalesSampleData() " + WallpadSalesSampleData.SALES_SAMPLE_MODE_SENSOR_DETECTING + ", " + modeSet);
+
+                mWallpadSalesSampleData.updateSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_SENSOR_DETECTING, modeSet);
+            }
+            break;
+
+            case SALES_TYPE_ROOM_NUMBER:
+            {
+                int modeSet = (position+1);
+                if (DEBUG)  Log.d(TAG, "updateSalesSampleData() " + WallpadSalesSampleData.SALES_SAMPLE_MODE_ROOM_NUMBER + ", " + modeSet);
+                mWallpadSalesSampleData.updateSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_ROOM_NUMBER, modeSet);
+
+            }
+            break;
+
+            case SALES_TYPE_LIGHT_SHOW_MAINSCREEN:
+            {
+                int modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_DO_NOT_USED;
+                if (position == 1)
+                    modeSet = WallpadSalesSampleData.SALES_SAMPLE_MODE_DO_USED;
+
+                if (DEBUG)  Log.d(TAG, "updateSalesSampleData() " + WallpadSalesSampleData.SALES_SAMPLE_MODE_LIGHT_SHOW_MAINSCREEN + ", " + modeSet);
+
+                mWallpadSalesSampleData.updateSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_LIGHT_SHOW_MAINSCREEN, modeSet);
+            }
+            break;
+
+            case SALES_TYPE_LOGO_OPTION:
+            {
+                int modeSet = (position);
+
+                if (DEBUG)  Log.d(TAG, "updateSalesSampleData() " + WallpadSalesSampleData.SALES_SAMPLE_MODE_LOGO_SHOW_OPTION + ", " + modeSet);
+
+                mWallpadSalesSampleData.updateSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_LOGO_SHOW_OPTION, modeSet);
+            }
+            break;
+
+            default:
+                break;
+        }
+    }
+
+}

+ 727 - 727
ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/AdminSetIPFragment.java

@@ -1,727 +1,727 @@
-package com.artncore.managersetting.ui.fragments;
-
-import kr.co.icontrols.v40ioctl.V40IF;
-import kr.co.icontrols.wallpadsupport.Version;
-import kr.co.icontrols.wallpadsupport.WpadScale;
-import kr.co.icontrols.wallpadsupport.WpadSound;
-import kr.co.icontrols.wallpadsupport.WpadSound.SND;
-import android.app.Activity;
-import android.content.DialogInterface;
-import android.net.ethernet.EthernetDevInfo;
-import android.net.ethernet.EthernetManager;
-import android.os.Bundle;
-//import android.support.v4.app.Fragment;
-import androidx.fragment.app.Fragment;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.Button;
-import android.widget.TextView;
-
-
-import com.artncore.deviceinterface.WallPadInterface;
-import com.artncore.WallPadDataMgr.WallpadStatusData;
-import com.artncore.WallPadDataMgr.wallpaddbmgr;
-import com.artncore.WallPadDataMgr.wallpaddbmgr.AddressSet;
-import com.artncore.managersetting.domain.Const;
-import com.artncore.managersetting.ui.activities.MainActivity;
-import com.artncore.managersetting.util.DialogUtil;
-import com.artncore.managersetting.util.NetworkUtil;
-import com.artncore.managersetting.util.StringUtil;
-import com.artncore.wallpadapi.WallPadAPI;
-import com.artncore.managersetting.R;
-
-/**
- * A fragment representing a single Item detail screen. This fragment is either
- * contained in a {@link MainActivity} in two-pane mode (on tablets) or a
- * {link ItemDetailActivity} on handsets.
- */
-public class AdminSetIPFragment extends Fragment {
-    private static final String TAG = "AdminSetIPFragment";
-
-    private final boolean DEBUG = true;
-
-
-    private Activity mActivity;
-    private WpadSound mWpadSound;
-    private WallPadAPI mWallPadAPI;
-
-    private TextView tvLocalIP_1;
-    private TextView tvLocalIP_2;
-    private TextView tvLocalIP_3;
-    private TextView tvLocalIP_4;
-
-
-    private TextView tvSubnetMask_1;
-    private TextView tvSubnetMask_2;
-    private TextView tvSubnetMask_3;
-    private TextView tvSubnetMask_4;
-
-
-    private TextView tvGatewayIP_1;
-    private TextView tvGatewayIP_2;
-    private TextView tvGatewayIP_3;
-    private TextView tvGatewayIP_4;
-
-
-    private TextView mSelectedView = null;
-
-    private int mSelectedIdx = -1;
-
-    private String mDong = "0", mHo = "0";
-
-    // constructor
-    public AdminSetIPFragment() {
-    }
-
-    @Override
-    public void onAttach(Activity activity) {
-        super.onAttach(activity);
-
-        mActivity = activity;
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        if (DEBUG)  Log.d(TAG, "onCreate() ");
-
-        super.onCreate(savedInstanceState);
-
-        mWallPadAPI = MainActivity.getWallPadAPI();
-        mWpadSound = MainActivity.getWpadSound();
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-
-        View rootView = null;
-        if ((WpadScale.getWidthPixels() == 800) && (WpadScale.getHeightPixels() == 480)) {
-            rootView = (View) inflater.inflate(R.layout.set_ip_manually_container_800x480, container, false);
-        }
-        else {
-            if (Version.getModelType() == Version.MODEL_TYPE.IHN_1030_D) {
-                rootView = (View) inflater.inflate(R.layout.set_ip_manually_container_1024x600_a20, container, false);
-            }
-            else {
-                rootView = (View) inflater.inflate(R.layout.set_ip_manually_container, container, false);
-            }
-        }
-
-        return (View)rootView;
-    }
-
-    @Override
-    public void onViewCreated(View view, Bundle savedInstanceState) {
-        super.onViewCreated(view, savedInstanceState);
-
-        if (savedInstanceState != null) {}
-
-
-        TextView tvDongHo = (TextView)view.findViewById(R.id.tv_dongho);
-        wallpaddbmgr dbmgr = new wallpaddbmgr(mActivity);
-        AddressSet addc =  dbmgr.getAddressMGR();
-
-        String strDongHo = addc.Dong + " " + mActivity.getString(R.string.dong)
-                + " "
-                + addc.Ho + " " + mActivity.getString(R.string.ho);
-
-        if (DEBUG)  Log.d(TAG, "Dong : " + addc.Dong
-                + "\n" + ", Ho : " + addc.Ho
-                + "\n" + ", IP : " + addc.IPAddress
-        );
-        tvDongHo.setText(strDongHo);
-
-
-
-
-
-        tvLocalIP_1 = (TextView)view.findViewById(R.id.tv_local_ip_1);
-        tvLocalIP_2 = (TextView)view.findViewById(R.id.tv_local_ip_2);
-        tvLocalIP_3 = (TextView)view.findViewById(R.id.tv_local_ip_3);
-        tvLocalIP_4 = (TextView)view.findViewById(R.id.tv_local_ip_4);
-
-        tvLocalIP_1.setOnClickListener(mButtonClick);
-        tvLocalIP_2.setOnClickListener(mButtonClick);
-        tvLocalIP_3.setOnClickListener(mButtonClick);
-        tvLocalIP_4.setOnClickListener(mButtonClick);
-
-
-        String localIP = dbmgr.getAddressMGR().IPAddress;
-        if ((localIP != null) && (localIP.length() > Const.IP_MIN_LENGTH)) {
-            String[] arrLocalIPString = StringUtil.split(localIP, ".");
-            if (arrLocalIPString.length > 3) {
-                if (DEBUG)  Log.d(TAG, "local_ip : "
-                        + arrLocalIPString[0] + "."
-                        + arrLocalIPString[1] + "."
-                        + arrLocalIPString[2] + "."
-                        + arrLocalIPString[3] + "."
-                );
-
-                tvLocalIP_1.setText(arrLocalIPString[0]);
-                tvLocalIP_2.setText(arrLocalIPString[1]);
-                tvLocalIP_3.setText(arrLocalIPString[2]);
-                tvLocalIP_4.setText(arrLocalIPString[3]);
-            }
-        }
-
-        dbmgr.closeDB();
-
-
-
-
-
-        tvSubnetMask_1 = (TextView)view.findViewById(R.id.tv_subnet_mask_1);
-        tvSubnetMask_2 = (TextView)view.findViewById(R.id.tv_subnet_mask_2);
-        tvSubnetMask_3 = (TextView)view.findViewById(R.id.tv_subnet_mask_3);
-        tvSubnetMask_4 = (TextView)view.findViewById(R.id.tv_subnet_mask_4);
-
-        tvSubnetMask_1.setOnClickListener(mButtonClick);
-        tvSubnetMask_2.setOnClickListener(mButtonClick);
-        tvSubnetMask_3.setOnClickListener(mButtonClick);
-        tvSubnetMask_4.setOnClickListener(mButtonClick);
-
-
-        String subnetMask = Const.SUBNET_MASK;
-        if ((subnetMask != null) && (subnetMask.length() > Const.IP_MIN_LENGTH)) {
-            String[] arrSubnetMaskString = StringUtil.split(subnetMask, ".");
-            if (arrSubnetMaskString.length > 3) {
-                if (DEBUG)  Log.d(TAG, "manage pc ip : "
-                        + arrSubnetMaskString[0] + "."
-                        + arrSubnetMaskString[1] + "."
-                        + arrSubnetMaskString[2] + "."
-                        + arrSubnetMaskString[3] + "."
-                );
-
-                tvSubnetMask_1.setText(arrSubnetMaskString[0]);
-                tvSubnetMask_2.setText(arrSubnetMaskString[1]);
-                tvSubnetMask_3.setText(arrSubnetMaskString[2]);
-                tvSubnetMask_4.setText(arrSubnetMaskString[3]);
-            }
-        }
-
-
-
-
-
-
-        tvGatewayIP_1 = (TextView)view.findViewById(R.id.tv_gateway_ip_1);
-        tvGatewayIP_2 = (TextView)view.findViewById(R.id.tv_gateway_ip_2);
-        tvGatewayIP_3 = (TextView)view.findViewById(R.id.tv_gateway_ip_3);
-        tvGatewayIP_4 = (TextView)view.findViewById(R.id.tv_gateway_ip_4);
-
-        tvGatewayIP_1.setOnClickListener(mButtonClick);
-        tvGatewayIP_2.setOnClickListener(mButtonClick);
-        tvGatewayIP_3.setOnClickListener(mButtonClick);
-        tvGatewayIP_4.setOnClickListener(mButtonClick);
-
-
-        String GatewayIP = NetworkUtil.getGatewayAddr(mActivity).IP;
-        if ((GatewayIP != null) && (GatewayIP.length() > Const.IP_MIN_LENGTH)) {
-            String[] arrGatewayIPString = StringUtil.split(GatewayIP, ".");
-            if (arrGatewayIPString.length > 3) {
-                if (DEBUG)  Log.d(TAG, "FTP server ip : "
-                        + arrGatewayIPString[0] + "."
-                        + arrGatewayIPString[1] + "."
-                        + arrGatewayIPString[2] + "."
-                        + arrGatewayIPString[3] + "."
-                );
-
-                tvGatewayIP_1.setText(arrGatewayIPString[0]);
-                tvGatewayIP_2.setText(arrGatewayIPString[1]);
-                tvGatewayIP_3.setText(arrGatewayIPString[2]);
-                tvGatewayIP_4.setText(arrGatewayIPString[3]);
-            }
-        }
-
-
-
-        Button btnNum1 = (Button)view.findViewById(R.id.num1);
-        Button btnNum2 = (Button)view.findViewById(R.id.num2);
-        Button btnNum3 = (Button)view.findViewById(R.id.num3);
-        Button btnNum4 = (Button)view.findViewById(R.id.num4);
-        Button btnNum5 = (Button)view.findViewById(R.id.num5);
-        Button btnNum6 = (Button)view.findViewById(R.id.num6);
-        Button btnNum7 = (Button)view.findViewById(R.id.num7);
-        Button btnNum8 = (Button)view.findViewById(R.id.num8);
-        Button btnNum9 = (Button)view.findViewById(R.id.num9);
-        Button btnNum0 = (Button)view.findViewById(R.id.num0);
-        Button btnDot = (Button)view.findViewById(R.id.dot);
-        Button btnEraser = (Button)view.findViewById(R.id.btn_eraser);
-        Button btnSave = (Button)view.findViewById(R.id.btn_save);
-
-        if((WpadScale.getWidthPixels() == 800) && (WpadScale.getHeightPixels() == 480))
-        {
-            btnEraser.setTextSize(15);
-        }
-
-
-
-
-        btnNum1.setOnClickListener(mNumButtonClick);
-        btnNum2.setOnClickListener(mNumButtonClick);
-        btnNum3.setOnClickListener(mNumButtonClick);
-        btnNum4.setOnClickListener(mNumButtonClick);
-        btnNum5.setOnClickListener(mNumButtonClick);
-        btnNum6.setOnClickListener(mNumButtonClick);
-        btnNum7.setOnClickListener(mNumButtonClick);
-        btnNum8.setOnClickListener(mNumButtonClick);
-        btnNum9.setOnClickListener(mNumButtonClick);
-        btnNum0.setOnClickListener(mNumButtonClick);
-        btnDot.setOnClickListener(mNumButtonClick);
-        btnEraser.setOnClickListener(mNumButtonClick);
-        btnSave.setOnClickListener(mNumButtonClick);
-    }
-
-    @Override
-    public void onDetach() {
-        super.onDetach();
-
-        mWallPadAPI = null;
-    }
-
-
-    @Override
-    public void onSaveInstanceState(Bundle outState) {
-        super.onSaveInstanceState(outState);
-    }
-
-
-
-    private View.OnClickListener mButtonClick = new View.OnClickListener() {
-        @Override
-        public void onClick(View v) {
-
-            mWpadSound.Play(SND.effect.TOUCH_LATCHED);
-            MainActivity.setFinishTimerReset();
-
-            switch(v.getId())
-            {
-                case R.id.tv_local_ip_1:
-                case R.id.tv_local_ip_2:
-                case R.id.tv_local_ip_3:
-                case R.id.tv_local_ip_4:
-
-                case R.id.tv_subnet_mask_1:
-                case R.id.tv_subnet_mask_2:
-                case R.id.tv_subnet_mask_3:
-                case R.id.tv_subnet_mask_4:
-
-                case R.id.tv_gateway_ip_1:
-                case R.id.tv_gateway_ip_2:
-                case R.id.tv_gateway_ip_3:
-                case R.id.tv_gateway_ip_4:
-                {
-                    if (mSelectedView != null) {
-                        mSelectedView.setBackgroundColor(mActivity.getResources().getColor(R.color.textview_default));
-                    }
-
-                    mSelectedView = (TextView)v;
-                    v.setBackgroundColor(mActivity.getResources().getColor(R.color.textview_selected));
-                }
-                break;
-
-                default:
-                    break;
-            }
-
-        }
-    };
-
-
-    private View.OnClickListener mNumButtonClick = new View.OnClickListener() {
-        @Override
-        public void onClick(View v) {
-
-            int getnum = -1;
-
-            MainActivity.setFinishTimerReset();
-
-            switch(v.getId())
-            {
-                case R.id.num1: getnum = 1;
-                    mWpadSound.Play(SND.number.NUM1);
-                    break;
-                case R.id.num2: getnum = 2;
-                    mWpadSound.Play(SND.number.NUM2);
-                    break;
-                case R.id.num3: getnum = 3;
-                    mWpadSound.Play(SND.number.NUM3);
-                    break;
-                case R.id.num4: getnum = 4;
-                    mWpadSound.Play(SND.number.NUM4);
-                    break;
-                case R.id.num5: getnum = 5;
-                    mWpadSound.Play(SND.number.NUM5);
-                    break;
-                case R.id.num6: getnum = 6;
-                    mWpadSound.Play(SND.number.NUM6);
-                    break;
-                case R.id.num7: getnum = 7;
-                    mWpadSound.Play(SND.number.NUM7);
-                    break;
-                case R.id.num8: getnum = 8;
-                    mWpadSound.Play(SND.number.NUM8);
-                    break;
-                case R.id.num9: getnum = 9;
-                    mWpadSound.Play(SND.number.NUM9);
-                    break;
-                case R.id.num0: getnum = 0;
-                    mWpadSound.Play(SND.number.NUM0);
-                    break;
-
-                case R.id.dot:
-                    break;
-
-                case R.id.btn_eraser:
-                    eraseProc();
-                    break;
-
-                case R.id.btn_save:
-                {
-                    if (DEBUG)  Log.d(TAG, "onClick() btn_save" );
-
-                    //String controllerName = mNetworkAddrList.get(mSelectedIdx);
-                    //if (DEBUG)    Toast.makeText(mActivity, controllerName + " test", Toast.LENGTH_SHORT).show();
-
-                    doUpdateIP();
-                }
-                break;
-
-                default:
-                    break;
-            }
-
-            if (getnum>-1)
-                addProc(getnum);
-        }
-    };
-
-
-    // 마지막 입력문자 제거
-    private void eraseProc()
-    {
-        if (mSelectedView == null)  return;
-
-        String selectText = mSelectedView.getText().toString();
-        if (selectText.length() == 0) return;
-
-        selectText = selectText.substring(0,selectText.length()-1);
-        mSelectedView.setText(selectText);
-    }
-
-
-    // 입력문자 추가
-    private void addProc(int getNum)
-    {
-        if (mSelectedView == null)  return;
-
-        String selectText = mSelectedView.getText().toString();
-
-        selectText += String.valueOf(getNum);
-
-        mSelectedView.setText(selectText);
-    }
-
-
-
-
-
-
-
-
-    // 입력된 IP, SM, GW를 검사하고, confirm popup을 show
-    private void doUpdateIP() {
-        String strLocalIP_FirstNum =   tvLocalIP_1.getText().toString();
-        String strLocalIP_SecondNum = tvLocalIP_2.getText().toString();
-        String strLocalIP_ThirtNum =   tvLocalIP_3.getText().toString();
-        String strLocalIP_FouthNum =   tvLocalIP_4.getText().toString();
-        String strLocalIP = strLocalIP_FirstNum
-                + "." + strLocalIP_SecondNum
-                + "." + strLocalIP_ThirtNum
-                + "." + strLocalIP_FouthNum
-                ;
-
-        if (!NetworkUtil.isValidIP(strLocalIP_FirstNum, strLocalIP_SecondNum, strLocalIP_ThirtNum, strLocalIP_FouthNum)) {
-            String title = getString(R.string.admin_setip_manually);
-            String message = "IP 입력 값을 확인 바랍니다.";
-            openDialog(title, message);
-
-            return;
-        }
-        else // 정상적인 IP 주소가 입력되어 있으면 동,호를 저장
-        {
-            if(strLocalIP_SecondNum.length() == 1)
-            {
-                mDong = "10" + strLocalIP_SecondNum;
-            }
-            else if(strLocalIP_SecondNum.length() == 2)
-            {
-                mDong = "1" + strLocalIP_SecondNum;
-            }
-
-            if(strLocalIP_FouthNum.length() == 1)
-            {
-                mHo = strLocalIP_ThirtNum + "0" + strLocalIP_FouthNum;
-            }
-            else if(strLocalIP_FouthNum.length() == 2)
-            {
-                mHo = strLocalIP_ThirtNum + strLocalIP_FouthNum;
-            }
-
-            Log.i(TAG, "[doUpdateIP] - mDong = " + mDong + " / mHo = " + mHo);
-        }
-
-
-
-        int firstNum =  Integer.parseInt(strLocalIP_FirstNum);
-        int secNum =  Integer.parseInt(strLocalIP_SecondNum);
-        int thirdNum = Integer.parseInt(strLocalIP_ThirtNum);
-        int forthNum = Integer.parseInt(strLocalIP_FouthNum);
-        String MacAddr = String.format("00:%02x:%02x:%02x:%02x:00", firstNum, secNum, thirdNum, forthNum);
-        if (DEBUG)  Log.d(TAG, "MacAddr : " + MacAddr);
-
-
-        String strSubnetMask_FirstNum =   tvSubnetMask_1.getText().toString();
-        String strSubnetMask_SecondNum = tvSubnetMask_2.getText().toString();
-        String strSubnetMask_ThirtNum =   tvSubnetMask_3.getText().toString();
-        String strSubnetMask_FouthNum =   tvSubnetMask_4.getText().toString();
-        String strSubnetMask = strSubnetMask_FirstNum
-                + "." + strSubnetMask_SecondNum
-                + "." + strSubnetMask_ThirtNum
-                + "." + strSubnetMask_FouthNum
-                ;
-
-        if (!NetworkUtil.isValidIP(strSubnetMask_FirstNum, strSubnetMask_SecondNum, strSubnetMask_ThirtNum, strSubnetMask_FouthNum)) {
-            String title = getString(R.string.admin_setip_manually);
-            String message = "S/M 입력 값을 확인 바랍니다.";
-            openDialog(title, message);
-
-            return;
-        }
-
-
-        String strGatewayIP_FirstNum =   tvGatewayIP_1.getText().toString();
-        String strGatewayIP_SecondNum = tvGatewayIP_2.getText().toString();
-        String strGatewayIP_ThirtNum =   tvGatewayIP_3.getText().toString();
-        String strGatewayIP_FouthNum =   tvGatewayIP_4.getText().toString();
-        String strGatewayIP = strGatewayIP_FirstNum
-                + "." + strGatewayIP_SecondNum
-                + "." + strGatewayIP_ThirtNum
-                + "." + strGatewayIP_FouthNum
-                ;
-
-        if (!NetworkUtil.isValidIP(strGatewayIP_FirstNum, strGatewayIP_SecondNum, strGatewayIP_ThirtNum, strGatewayIP_FouthNum)) {
-            String title = getString(R.string.admin_setip_manually);
-            String message = "G/W 입력 값을 확인 바랍니다.";
-            openDialog(title, message);
-
-            return;
-        }
-
-        //openSetIPDialog(strLocalIP, strSubnetMask, strGatewayIP, MacAddr);
-        openManagerPWDialog(strLocalIP, strSubnetMask, strGatewayIP, MacAddr);
-    }
-
-
-
-    private DialogUtil mDialog;
-    // open Dialog
-    public void openDialog(final String title, final String message) {
-        mDialog = new DialogUtil(mActivity);
-
-        DialogInterface.OnClickListener positiveListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        dialog.dismiss();
-                        MainActivity.setFinishTimerReset();
-                    }
-                };
-
-        mDialog.openCommonDialog(title, message, positiveListener, null);
-    }
-
-    // open FinishDialog
-    public void openFinishDialog(final String title, final String message) {
-        mDialog = new DialogUtil(mActivity);
-
-        DialogInterface.OnClickListener positiveListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-
-                        if (Version.getPlatformType() == Version.PLATFORM_TYPE.A40i) {
-                            // IP 설정을 한 후, 팝업창의 "확인" or "Ok"를 누른 경우 재부팅 설정
-                            V40IF mV40IF = new V40IF();
-                            Log.d(TAG, "IP Set PopUp Ok -> Do Reboot !!!");
-                            mV40IF.setV40Reboot(5);
-                        }
-
-                        //finish();
-                        MainActivity.setFinishTimerReset();
-                    }
-                };
-
-        mDialog.openCommonDialog(title, message, positiveListener, null);
-    }
-
-    // open failed PW Dialog
-    public void failedPWDialog() {
-        String title = mActivity.getString(R.string.admin_setip_confirm_password);
-        String message = mActivity.getString(R.string.admin_setip_failed_password);
-        mDialog = new DialogUtil(mActivity);
-
-        DialogInterface.OnClickListener positiveListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        //finish();
-                        MainActivity.setFinishTimerReset();
-                    }
-                };
-
-        mDialog.openCommonDialog(title, message, positiveListener, null);
-    }
-
-
-    // open Manager PW Dialog
-    public void openManagerPWDialog(final String strLocalIP, final String strSubnetMask, final String strGatewayIP
-            , final String MacAddr) {
-
-        String title = mActivity.getString(R.string.admin_setip_confirm_password);
-        String message = mActivity.getString(R.string.admin_setip_insert_password_message);
-
-        DialogInterface.OnClickListener positiveListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-
-                        WallpadStatusData wallpadStatusData = new WallpadStatusData(mActivity);
-
-                        if (DEBUG)  Log.d(TAG, "wallpadStatusData.GetManagerPW() : " + wallpadStatusData.GetManagerPW());
-                        MainActivity.setFinishTimerReset();
-
-                        mDialog.hideSoftKeypad();
-
-                        //if (!wallpadStatusData.GetManagerPW().equals(mDialog.getEditText())) {
-                        if (!mDialog.getEditText().equals("")) {
-                            dialog.dismiss();
-
-                            failedPWDialog();
-                        }
-                        else {
-                            dialog.dismiss();
-
-                            openSetIPDialog(strLocalIP, strSubnetMask, strGatewayIP, MacAddr); ;
-                        }
-
-                        wallpadStatusData.closeDB();
-                    }
-                };
-
-        DialogInterface.OnClickListener negativeListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        dialog.dismiss();
-                        MainActivity.setFinishTimerReset();
-                    }
-                };
-
-        mDialog = new DialogUtil(mActivity);
-        mDialog.openPasswordDialog(title, message, positiveListener, negativeListener, null);
-    }
-
-
-    // open SetIP Dialog
-    public void openSetIPDialog(final String strLocalIP, final String strSubnetMask, final String strGatewayIP
-            , final String MacAddr) {
-
-        String title = mActivity.getString(R.string.admin_setip_manually);
-        String message = "IP : " + strLocalIP
-                + "\nS/M : " + strSubnetMask
-                + "\nG/W : " + strGatewayIP
-                + "\n\n로 설정하시겠습니까?"
-                ;
-
-        DialogInterface.OnClickListener positiveListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        dialog.dismiss();
-
-                        setNetworkAddr(strLocalIP, strSubnetMask, strGatewayIP, MacAddr); ;
-                    }
-                };
-
-        DialogInterface.OnClickListener negativeListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        dialog.dismiss();
-                    }
-                };
-
-        mDialog = new DialogUtil(mActivity);
-        mDialog.openCommonDialog(title, message, positiveListener, negativeListener);
-    }
-
-    // set Network Address
-    private void setNetworkAddr(final String strLocalIP, final String strSubnetMask, final String strGatewayIP
-            , final String MacAddr) {
-
-        /*wallpaddbmgr dbmgr = new wallpaddbmgr(mActivity); // 동,호 DB 저장
-        AddressSet addc =  dbmgr.getAddressMGR();
-        addc.setAddress(mDong, mHo);
-        addc.setIPAddress(strLocalIP);
-        dbmgr.closeDB();
-
-        wallpaddbmgr dbmgr2 = new wallpaddbmgr(mActivity);
-        wallpaddbmgr.AddressSetBackup addc_Backup =  dbmgr2.getAddressMGR_Backup(); // 동,호 백업 DB 저장
-        addc_Backup.setAddress(mDong, mHo);
-        addc_Backup.setIPAddress(strLocalIP);
-        dbmgr2.closeDB();*/
-
-
-        WallPadInterface wallPadInterface = new WallPadInterface();
-        wallPadInterface.setMacAddr(MacAddr);
-        Log.d("MANAGERSETTING", " IP : "+strLocalIP+" Mac : "+ MacAddr);
-
-        if (Version.getPlatformType() == Version.PLATFORM_TYPE.A40i) {
-            V40IF mV40IF = new V40IF();
-            mV40IF.setNetworkInterface(strLocalIP, strSubnetMask, strGatewayIP, Const.DNS_IP, MacAddr);
-            Log.d(TAG, "[setNetworkAddr] IP : "+strLocalIP + " NetMask : " + strSubnetMask + "Gateway : " + strGatewayIP + " Mac : "+ MacAddr);
-
-            mV40IF.setDns(Const.DNS_IP, Const.DNS_IP2);
-            Log.d(TAG, "[setNetworkAddr] DNS 1 : " + Const.DNS_IP +" / DNS 2 : " + Const.DNS_IP2);
-        }
-        else {
-            EthernetDevInfo info = new EthernetDevInfo(); // 기존 월패드에서의 IP 설정 코드
-
-            info.setIfName("eth0");
-            info.setConnectMode(EthernetDevInfo.ETH_CONN_MODE_MANUAL);
-            info.setIpAddress(strLocalIP);
-            info.setRouteAddr(strGatewayIP);
-            info.setDnsAddr(Const.DNS_IP);
-            info.setNetMask(strSubnetMask);
-
-            EthernetManager mEthManager = (EthernetManager) mActivity.getSystemService("ethernet");
-            mEthManager.setEthernetState(EthernetManager.ETH_STATE_DISABLED);
-            mEthManager.UpdateEthDevInfo(info);
-            mEthManager.setEthernetState(EthernetManager.ETH_STATE_ENABLING);
-        }
-
-
-        String title = getString(R.string.admin_setip_manually);
-        String message = "IP : " + strLocalIP
-                + "\nS/M : " + strSubnetMask
-                + "\nG/W : " + strGatewayIP
-//                            + "\nMacAddr : " + MacAddr
-                + "\n\n로 설정되었습니다.";
-
-        openFinishDialog(title, message);
-    }
-
-}
+package com.artncore.managersetting.ui.fragments;
+
+import kr.co.icontrols.v40ioctl.V40IF;
+import kr.co.icontrols.wallpadsupport.Version;
+import kr.co.icontrols.wallpadsupport.WpadScale;
+import kr.co.icontrols.wallpadsupport.WpadSound;
+import kr.co.icontrols.wallpadsupport.WpadSound.SND;
+import android.app.Activity;
+import android.content.DialogInterface;
+import android.net.ethernet.EthernetDevInfo;
+import android.net.ethernet.EthernetManager;
+import android.os.Bundle;
+//import android.support.v4.app.Fragment;
+import androidx.fragment.app.Fragment;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.TextView;
+
+
+import com.artncore.deviceinterface.WallPadInterface;
+import com.artncore.WallPadDataMgr.WallpadStatusData;
+import com.artncore.WallPadDataMgr.wallpaddbmgr;
+import com.artncore.WallPadDataMgr.wallpaddbmgr.AddressSet;
+import com.artncore.managersetting.domain.Const;
+import com.artncore.managersetting.ui.activities.MainActivity;
+import com.artncore.managersetting.util.DialogUtil;
+import com.artncore.managersetting.util.NetworkUtil;
+import com.artncore.managersetting.util.StringUtil;
+import com.artncore.wallpadapi.WallPadAPI;
+import com.artncore.managersetting.R;
+
+/**
+ * A fragment representing a single Item detail screen. This fragment is either
+ * contained in a {@link MainActivity} in two-pane mode (on tablets) or a
+ * {link ItemDetailActivity} on handsets.
+ */
+public class AdminSetIPFragment extends Fragment {
+    private static final String TAG = "AdminSetIPFragment";
+
+    private final boolean DEBUG = true;
+
+
+    private Activity mActivity;
+    private WpadSound mWpadSound;
+    private WallPadAPI mWallPadAPI;
+
+    private TextView tvLocalIP_1;
+    private TextView tvLocalIP_2;
+    private TextView tvLocalIP_3;
+    private TextView tvLocalIP_4;
+
+
+    private TextView tvSubnetMask_1;
+    private TextView tvSubnetMask_2;
+    private TextView tvSubnetMask_3;
+    private TextView tvSubnetMask_4;
+
+
+    private TextView tvGatewayIP_1;
+    private TextView tvGatewayIP_2;
+    private TextView tvGatewayIP_3;
+    private TextView tvGatewayIP_4;
+
+
+    private TextView mSelectedView = null;
+
+    private int mSelectedIdx = -1;
+
+    private String mDong = "0", mHo = "0";
+
+    // constructor
+    public AdminSetIPFragment() {
+    }
+
+    @Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+
+        mActivity = activity;
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        if (DEBUG)  Log.d(TAG, "onCreate() ");
+
+        super.onCreate(savedInstanceState);
+
+        mWallPadAPI = MainActivity.getWallPadAPI();
+        mWpadSound = MainActivity.getWpadSound();
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+                             Bundle savedInstanceState) {
+
+        View rootView = null;
+        if ((WpadScale.getWidthPixels() == 800) && (WpadScale.getHeightPixels() == 480)) {
+            rootView = (View) inflater.inflate(R.layout.set_ip_manually_container_800x480, container, false);
+        }
+        else {
+            if (Version.getModelType() == Version.MODEL_TYPE.IHN_1030_D) {
+                rootView = (View) inflater.inflate(R.layout.set_ip_manually_container_1024x600_a20, container, false);
+            }
+            else {
+                rootView = (View) inflater.inflate(R.layout.set_ip_manually_container, container, false);
+            }
+        }
+
+        return (View)rootView;
+    }
+
+    @Override
+    public void onViewCreated(View view, Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+
+        if (savedInstanceState != null) {}
+
+
+        TextView tvDongHo = (TextView)view.findViewById(R.id.tv_dongho);
+        wallpaddbmgr dbmgr = new wallpaddbmgr(mActivity);
+        AddressSet addc =  dbmgr.getAddressMGR();
+
+        String strDongHo = addc.Dong + " " + mActivity.getString(R.string.dong)
+                + " "
+                + addc.Ho + " " + mActivity.getString(R.string.ho);
+
+        if (DEBUG)  Log.d(TAG, "Dong : " + addc.Dong
+                + "\n" + ", Ho : " + addc.Ho
+                + "\n" + ", IP : " + addc.IPAddress
+        );
+        tvDongHo.setText(strDongHo);
+
+
+
+
+
+        tvLocalIP_1 = (TextView)view.findViewById(R.id.tv_local_ip_1);
+        tvLocalIP_2 = (TextView)view.findViewById(R.id.tv_local_ip_2);
+        tvLocalIP_3 = (TextView)view.findViewById(R.id.tv_local_ip_3);
+        tvLocalIP_4 = (TextView)view.findViewById(R.id.tv_local_ip_4);
+
+        tvLocalIP_1.setOnClickListener(mButtonClick);
+        tvLocalIP_2.setOnClickListener(mButtonClick);
+        tvLocalIP_3.setOnClickListener(mButtonClick);
+        tvLocalIP_4.setOnClickListener(mButtonClick);
+
+
+        String localIP = dbmgr.getAddressMGR().IPAddress;
+        if ((localIP != null) && (localIP.length() > Const.IP_MIN_LENGTH)) {
+            String[] arrLocalIPString = StringUtil.split(localIP, ".");
+            if (arrLocalIPString.length > 3) {
+                if (DEBUG)  Log.d(TAG, "local_ip : "
+                        + arrLocalIPString[0] + "."
+                        + arrLocalIPString[1] + "."
+                        + arrLocalIPString[2] + "."
+                        + arrLocalIPString[3] + "."
+                );
+
+                tvLocalIP_1.setText(arrLocalIPString[0]);
+                tvLocalIP_2.setText(arrLocalIPString[1]);
+                tvLocalIP_3.setText(arrLocalIPString[2]);
+                tvLocalIP_4.setText(arrLocalIPString[3]);
+            }
+        }
+
+        dbmgr.closeDB();
+
+
+
+
+
+        tvSubnetMask_1 = (TextView)view.findViewById(R.id.tv_subnet_mask_1);
+        tvSubnetMask_2 = (TextView)view.findViewById(R.id.tv_subnet_mask_2);
+        tvSubnetMask_3 = (TextView)view.findViewById(R.id.tv_subnet_mask_3);
+        tvSubnetMask_4 = (TextView)view.findViewById(R.id.tv_subnet_mask_4);
+
+        tvSubnetMask_1.setOnClickListener(mButtonClick);
+        tvSubnetMask_2.setOnClickListener(mButtonClick);
+        tvSubnetMask_3.setOnClickListener(mButtonClick);
+        tvSubnetMask_4.setOnClickListener(mButtonClick);
+
+
+        String subnetMask = Const.SUBNET_MASK;
+        if ((subnetMask != null) && (subnetMask.length() > Const.IP_MIN_LENGTH)) {
+            String[] arrSubnetMaskString = StringUtil.split(subnetMask, ".");
+            if (arrSubnetMaskString.length > 3) {
+                if (DEBUG)  Log.d(TAG, "manage pc ip : "
+                        + arrSubnetMaskString[0] + "."
+                        + arrSubnetMaskString[1] + "."
+                        + arrSubnetMaskString[2] + "."
+                        + arrSubnetMaskString[3] + "."
+                );
+
+                tvSubnetMask_1.setText(arrSubnetMaskString[0]);
+                tvSubnetMask_2.setText(arrSubnetMaskString[1]);
+                tvSubnetMask_3.setText(arrSubnetMaskString[2]);
+                tvSubnetMask_4.setText(arrSubnetMaskString[3]);
+            }
+        }
+
+
+
+
+
+
+        tvGatewayIP_1 = (TextView)view.findViewById(R.id.tv_gateway_ip_1);
+        tvGatewayIP_2 = (TextView)view.findViewById(R.id.tv_gateway_ip_2);
+        tvGatewayIP_3 = (TextView)view.findViewById(R.id.tv_gateway_ip_3);
+        tvGatewayIP_4 = (TextView)view.findViewById(R.id.tv_gateway_ip_4);
+
+        tvGatewayIP_1.setOnClickListener(mButtonClick);
+        tvGatewayIP_2.setOnClickListener(mButtonClick);
+        tvGatewayIP_3.setOnClickListener(mButtonClick);
+        tvGatewayIP_4.setOnClickListener(mButtonClick);
+
+
+        String GatewayIP = NetworkUtil.getGatewayAddr(mActivity).IP;
+        if ((GatewayIP != null) && (GatewayIP.length() > Const.IP_MIN_LENGTH)) {
+            String[] arrGatewayIPString = StringUtil.split(GatewayIP, ".");
+            if (arrGatewayIPString.length > 3) {
+                if (DEBUG)  Log.d(TAG, "FTP server ip : "
+                        + arrGatewayIPString[0] + "."
+                        + arrGatewayIPString[1] + "."
+                        + arrGatewayIPString[2] + "."
+                        + arrGatewayIPString[3] + "."
+                );
+
+                tvGatewayIP_1.setText(arrGatewayIPString[0]);
+                tvGatewayIP_2.setText(arrGatewayIPString[1]);
+                tvGatewayIP_3.setText(arrGatewayIPString[2]);
+                tvGatewayIP_4.setText(arrGatewayIPString[3]);
+            }
+        }
+
+
+
+        Button btnNum1 = (Button)view.findViewById(R.id.num1);
+        Button btnNum2 = (Button)view.findViewById(R.id.num2);
+        Button btnNum3 = (Button)view.findViewById(R.id.num3);
+        Button btnNum4 = (Button)view.findViewById(R.id.num4);
+        Button btnNum5 = (Button)view.findViewById(R.id.num5);
+        Button btnNum6 = (Button)view.findViewById(R.id.num6);
+        Button btnNum7 = (Button)view.findViewById(R.id.num7);
+        Button btnNum8 = (Button)view.findViewById(R.id.num8);
+        Button btnNum9 = (Button)view.findViewById(R.id.num9);
+        Button btnNum0 = (Button)view.findViewById(R.id.num0);
+        Button btnDot = (Button)view.findViewById(R.id.dot);
+        Button btnEraser = (Button)view.findViewById(R.id.btn_eraser);
+        Button btnSave = (Button)view.findViewById(R.id.btn_save);
+
+        if((WpadScale.getWidthPixels() == 800) && (WpadScale.getHeightPixels() == 480))
+        {
+            btnEraser.setTextSize(15);
+        }
+
+
+
+
+        btnNum1.setOnClickListener(mNumButtonClick);
+        btnNum2.setOnClickListener(mNumButtonClick);
+        btnNum3.setOnClickListener(mNumButtonClick);
+        btnNum4.setOnClickListener(mNumButtonClick);
+        btnNum5.setOnClickListener(mNumButtonClick);
+        btnNum6.setOnClickListener(mNumButtonClick);
+        btnNum7.setOnClickListener(mNumButtonClick);
+        btnNum8.setOnClickListener(mNumButtonClick);
+        btnNum9.setOnClickListener(mNumButtonClick);
+        btnNum0.setOnClickListener(mNumButtonClick);
+        btnDot.setOnClickListener(mNumButtonClick);
+        btnEraser.setOnClickListener(mNumButtonClick);
+        btnSave.setOnClickListener(mNumButtonClick);
+    }
+
+    @Override
+    public void onDetach() {
+        super.onDetach();
+
+        mWallPadAPI = null;
+    }
+
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+    }
+
+
+
+    private View.OnClickListener mButtonClick = new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+
+            mWpadSound.Play(SND.effect.TOUCH_LATCHED);
+            MainActivity.setFinishTimerReset();
+
+            switch(v.getId())
+            {
+                case R.id.tv_local_ip_1:
+                case R.id.tv_local_ip_2:
+                case R.id.tv_local_ip_3:
+                case R.id.tv_local_ip_4:
+
+                case R.id.tv_subnet_mask_1:
+                case R.id.tv_subnet_mask_2:
+                case R.id.tv_subnet_mask_3:
+                case R.id.tv_subnet_mask_4:
+
+                case R.id.tv_gateway_ip_1:
+                case R.id.tv_gateway_ip_2:
+                case R.id.tv_gateway_ip_3:
+                case R.id.tv_gateway_ip_4:
+                {
+                    if (mSelectedView != null) {
+                        mSelectedView.setBackgroundColor(mActivity.getResources().getColor(R.color.textview_default));
+                    }
+
+                    mSelectedView = (TextView)v;
+                    v.setBackgroundColor(mActivity.getResources().getColor(R.color.textview_selected));
+                }
+                break;
+
+                default:
+                    break;
+            }
+
+        }
+    };
+
+
+    private View.OnClickListener mNumButtonClick = new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+
+            int getnum = -1;
+
+            MainActivity.setFinishTimerReset();
+
+            switch(v.getId())
+            {
+                case R.id.num1: getnum = 1;
+                    mWpadSound.Play(SND.number.NUM1);
+                    break;
+                case R.id.num2: getnum = 2;
+                    mWpadSound.Play(SND.number.NUM2);
+                    break;
+                case R.id.num3: getnum = 3;
+                    mWpadSound.Play(SND.number.NUM3);
+                    break;
+                case R.id.num4: getnum = 4;
+                    mWpadSound.Play(SND.number.NUM4);
+                    break;
+                case R.id.num5: getnum = 5;
+                    mWpadSound.Play(SND.number.NUM5);
+                    break;
+                case R.id.num6: getnum = 6;
+                    mWpadSound.Play(SND.number.NUM6);
+                    break;
+                case R.id.num7: getnum = 7;
+                    mWpadSound.Play(SND.number.NUM7);
+                    break;
+                case R.id.num8: getnum = 8;
+                    mWpadSound.Play(SND.number.NUM8);
+                    break;
+                case R.id.num9: getnum = 9;
+                    mWpadSound.Play(SND.number.NUM9);
+                    break;
+                case R.id.num0: getnum = 0;
+                    mWpadSound.Play(SND.number.NUM0);
+                    break;
+
+                case R.id.dot:
+                    break;
+
+                case R.id.btn_eraser:
+                    eraseProc();
+                    break;
+
+                case R.id.btn_save:
+                {
+                    if (DEBUG)  Log.d(TAG, "onClick() btn_save" );
+
+                    //String controllerName = mNetworkAddrList.get(mSelectedIdx);
+                    //if (DEBUG)    Toast.makeText(mActivity, controllerName + " test", Toast.LENGTH_SHORT).show();
+
+                    doUpdateIP();
+                }
+                break;
+
+                default:
+                    break;
+            }
+
+            if (getnum>-1)
+                addProc(getnum);
+        }
+    };
+
+
+    // 마지막 입력문자 제거
+    private void eraseProc()
+    {
+        if (mSelectedView == null)  return;
+
+        String selectText = mSelectedView.getText().toString();
+        if (selectText.length() == 0) return;
+
+        selectText = selectText.substring(0,selectText.length()-1);
+        mSelectedView.setText(selectText);
+    }
+
+
+    // 입력문자 추가
+    private void addProc(int getNum)
+    {
+        if (mSelectedView == null)  return;
+
+        String selectText = mSelectedView.getText().toString();
+
+        selectText += String.valueOf(getNum);
+
+        mSelectedView.setText(selectText);
+    }
+
+
+
+
+
+
+
+
+    // 입력된 IP, SM, GW를 검사하고, confirm popup을 show
+    private void doUpdateIP() {
+        String strLocalIP_FirstNum =   tvLocalIP_1.getText().toString();
+        String strLocalIP_SecondNum = tvLocalIP_2.getText().toString();
+        String strLocalIP_ThirtNum =   tvLocalIP_3.getText().toString();
+        String strLocalIP_FouthNum =   tvLocalIP_4.getText().toString();
+        String strLocalIP = strLocalIP_FirstNum
+                + "." + strLocalIP_SecondNum
+                + "." + strLocalIP_ThirtNum
+                + "." + strLocalIP_FouthNum
+                ;
+
+        if (!NetworkUtil.isValidIP(strLocalIP_FirstNum, strLocalIP_SecondNum, strLocalIP_ThirtNum, strLocalIP_FouthNum)) {
+            String title = getString(R.string.admin_setip_manually);
+            String message = "IP 입력 값을 확인 바랍니다.";
+            openDialog(title, message);
+
+            return;
+        }
+        else // 정상적인 IP 주소가 입력되어 있으면 동,호를 저장
+        {
+            if(strLocalIP_SecondNum.length() == 1)
+            {
+                mDong = "10" + strLocalIP_SecondNum;
+            }
+            else if(strLocalIP_SecondNum.length() == 2)
+            {
+                mDong = "1" + strLocalIP_SecondNum;
+            }
+
+            if(strLocalIP_FouthNum.length() == 1)
+            {
+                mHo = strLocalIP_ThirtNum + "0" + strLocalIP_FouthNum;
+            }
+            else if(strLocalIP_FouthNum.length() == 2)
+            {
+                mHo = strLocalIP_ThirtNum + strLocalIP_FouthNum;
+            }
+
+            Log.i(TAG, "[doUpdateIP] - mDong = " + mDong + " / mHo = " + mHo);
+        }
+
+
+
+        int firstNum =  Integer.parseInt(strLocalIP_FirstNum);
+        int secNum =  Integer.parseInt(strLocalIP_SecondNum);
+        int thirdNum = Integer.parseInt(strLocalIP_ThirtNum);
+        int forthNum = Integer.parseInt(strLocalIP_FouthNum);
+        String MacAddr = String.format("00:%02x:%02x:%02x:%02x:00", firstNum, secNum, thirdNum, forthNum);
+        if (DEBUG)  Log.d(TAG, "MacAddr : " + MacAddr);
+
+
+        String strSubnetMask_FirstNum =   tvSubnetMask_1.getText().toString();
+        String strSubnetMask_SecondNum = tvSubnetMask_2.getText().toString();
+        String strSubnetMask_ThirtNum =   tvSubnetMask_3.getText().toString();
+        String strSubnetMask_FouthNum =   tvSubnetMask_4.getText().toString();
+        String strSubnetMask = strSubnetMask_FirstNum
+                + "." + strSubnetMask_SecondNum
+                + "." + strSubnetMask_ThirtNum
+                + "." + strSubnetMask_FouthNum
+                ;
+
+        if (!NetworkUtil.isValidIP(strSubnetMask_FirstNum, strSubnetMask_SecondNum, strSubnetMask_ThirtNum, strSubnetMask_FouthNum)) {
+            String title = getString(R.string.admin_setip_manually);
+            String message = "S/M 입력 값을 확인 바랍니다.";
+            openDialog(title, message);
+
+            return;
+        }
+
+
+        String strGatewayIP_FirstNum =   tvGatewayIP_1.getText().toString();
+        String strGatewayIP_SecondNum = tvGatewayIP_2.getText().toString();
+        String strGatewayIP_ThirtNum =   tvGatewayIP_3.getText().toString();
+        String strGatewayIP_FouthNum =   tvGatewayIP_4.getText().toString();
+        String strGatewayIP = strGatewayIP_FirstNum
+                + "." + strGatewayIP_SecondNum
+                + "." + strGatewayIP_ThirtNum
+                + "." + strGatewayIP_FouthNum
+                ;
+
+        if (!NetworkUtil.isValidIP(strGatewayIP_FirstNum, strGatewayIP_SecondNum, strGatewayIP_ThirtNum, strGatewayIP_FouthNum)) {
+            String title = getString(R.string.admin_setip_manually);
+            String message = "G/W 입력 값을 확인 바랍니다.";
+            openDialog(title, message);
+
+            return;
+        }
+
+        //openSetIPDialog(strLocalIP, strSubnetMask, strGatewayIP, MacAddr);
+        openManagerPWDialog(strLocalIP, strSubnetMask, strGatewayIP, MacAddr);
+    }
+
+
+
+    private DialogUtil mDialog;
+    // open Dialog
+    public void openDialog(final String title, final String message) {
+        mDialog = new DialogUtil(mActivity);
+
+        DialogInterface.OnClickListener positiveListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        dialog.dismiss();
+                        MainActivity.setFinishTimerReset();
+                    }
+                };
+
+        mDialog.openCommonDialog(title, message, positiveListener, null);
+    }
+
+    // open FinishDialog
+    public void openFinishDialog(final String title, final String message) {
+        mDialog = new DialogUtil(mActivity);
+
+        DialogInterface.OnClickListener positiveListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+
+                        if (Version.getPlatformType() == Version.PLATFORM_TYPE.A40i) {
+                            // IP 설정을 한 후, 팝업창의 "확인" or "Ok"를 누른 경우 재부팅 설정
+                            V40IF mV40IF = new V40IF();
+                            Log.d(TAG, "IP Set PopUp Ok -> Do Reboot !!!");
+                            mV40IF.setV40Reboot(5);
+                        }
+
+                        //finish();
+                        MainActivity.setFinishTimerReset();
+                    }
+                };
+
+        mDialog.openCommonDialog(title, message, positiveListener, null);
+    }
+
+    // open failed PW Dialog
+    public void failedPWDialog() {
+        String title = mActivity.getString(R.string.admin_setip_confirm_password);
+        String message = mActivity.getString(R.string.admin_setip_failed_password);
+        mDialog = new DialogUtil(mActivity);
+
+        DialogInterface.OnClickListener positiveListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        //finish();
+                        MainActivity.setFinishTimerReset();
+                    }
+                };
+
+        mDialog.openCommonDialog(title, message, positiveListener, null);
+    }
+
+
+    // open Manager PW Dialog
+    public void openManagerPWDialog(final String strLocalIP, final String strSubnetMask, final String strGatewayIP
+            , final String MacAddr) {
+
+        String title = mActivity.getString(R.string.admin_setip_confirm_password);
+        String message = mActivity.getString(R.string.admin_setip_insert_password_message);
+
+        DialogInterface.OnClickListener positiveListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+
+                        WallpadStatusData wallpadStatusData = new WallpadStatusData(mActivity);
+
+                        if (DEBUG)  Log.d(TAG, "wallpadStatusData.GetManagerPW() : " + wallpadStatusData.GetManagerPW());
+                        MainActivity.setFinishTimerReset();
+
+                        mDialog.hideSoftKeypad();
+
+                        //if (!wallpadStatusData.GetManagerPW().equals(mDialog.getEditText())) {
+                        if (!mDialog.getEditText().equals("")) {
+                            dialog.dismiss();
+
+                            failedPWDialog();
+                        }
+                        else {
+                            dialog.dismiss();
+
+                            openSetIPDialog(strLocalIP, strSubnetMask, strGatewayIP, MacAddr); ;
+                        }
+
+                        wallpadStatusData.closeDB();
+                    }
+                };
+
+        DialogInterface.OnClickListener negativeListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        dialog.dismiss();
+                        MainActivity.setFinishTimerReset();
+                    }
+                };
+
+        mDialog = new DialogUtil(mActivity);
+        mDialog.openPasswordDialog(title, message, positiveListener, negativeListener, null);
+    }
+
+
+    // open SetIP Dialog
+    public void openSetIPDialog(final String strLocalIP, final String strSubnetMask, final String strGatewayIP
+            , final String MacAddr) {
+
+        String title = mActivity.getString(R.string.admin_setip_manually);
+        String message = "IP : " + strLocalIP
+                + "\nS/M : " + strSubnetMask
+                + "\nG/W : " + strGatewayIP
+                + "\n\n로 설정하시겠습니까?"
+                ;
+
+        DialogInterface.OnClickListener positiveListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        dialog.dismiss();
+
+                        setNetworkAddr(strLocalIP, strSubnetMask, strGatewayIP, MacAddr); ;
+                    }
+                };
+
+        DialogInterface.OnClickListener negativeListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        dialog.dismiss();
+                    }
+                };
+
+        mDialog = new DialogUtil(mActivity);
+        mDialog.openCommonDialog(title, message, positiveListener, negativeListener);
+    }
+
+    // set Network Address
+    private void setNetworkAddr(final String strLocalIP, final String strSubnetMask, final String strGatewayIP
+            , final String MacAddr) {
+
+        /*wallpaddbmgr dbmgr = new wallpaddbmgr(mActivity); // 동,호 DB 저장
+        AddressSet addc =  dbmgr.getAddressMGR();
+        addc.setAddress(mDong, mHo);
+        addc.setIPAddress(strLocalIP);
+        dbmgr.closeDB();
+
+        wallpaddbmgr dbmgr2 = new wallpaddbmgr(mActivity);
+        wallpaddbmgr.AddressSetBackup addc_Backup =  dbmgr2.getAddressMGR_Backup(); // 동,호 백업 DB 저장
+        addc_Backup.setAddress(mDong, mHo);
+        addc_Backup.setIPAddress(strLocalIP);
+        dbmgr2.closeDB();*/
+
+
+        WallPadInterface wallPadInterface = new WallPadInterface();
+        wallPadInterface.setMacAddr(MacAddr);
+        Log.d("MANAGERSETTING", " IP : "+strLocalIP+" Mac : "+ MacAddr);
+
+        if (Version.getPlatformType() == Version.PLATFORM_TYPE.A40i) {
+            V40IF mV40IF = new V40IF();
+            mV40IF.setNetworkInterface(strLocalIP, strSubnetMask, strGatewayIP, Const.DNS_IP, MacAddr);
+            Log.d(TAG, "[setNetworkAddr] IP : "+strLocalIP + " NetMask : " + strSubnetMask + "Gateway : " + strGatewayIP + " Mac : "+ MacAddr);
+
+            mV40IF.setDns(Const.DNS_IP, Const.DNS_IP2);
+            Log.d(TAG, "[setNetworkAddr] DNS 1 : " + Const.DNS_IP +" / DNS 2 : " + Const.DNS_IP2);
+        }
+        else {
+            EthernetDevInfo info = new EthernetDevInfo(); // 기존 월패드에서의 IP 설정 코드
+
+            info.setIfName("eth0");
+            info.setConnectMode(EthernetDevInfo.ETH_CONN_MODE_MANUAL);
+            info.setIpAddress(strLocalIP);
+            info.setRouteAddr(strGatewayIP);
+            info.setDnsAddr(Const.DNS_IP);
+            info.setNetMask(strSubnetMask);
+
+            EthernetManager mEthManager = (EthernetManager) mActivity.getSystemService("ethernet");
+            mEthManager.setEthernetState(EthernetManager.ETH_STATE_DISABLED);
+            mEthManager.UpdateEthDevInfo(info);
+            mEthManager.setEthernetState(EthernetManager.ETH_STATE_ENABLING);
+        }
+
+
+        String title = getString(R.string.admin_setip_manually);
+        String message = "IP : " + strLocalIP
+                + "\nS/M : " + strSubnetMask
+                + "\nG/W : " + strGatewayIP
+//                            + "\nMacAddr : " + MacAddr
+                + "\n\n로 설정되었습니다.";
+
+        openFinishDialog(title, message);
+    }
+
+}

+ 237 - 253
ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/AdminSettingFragment.java

@@ -1,253 +1,237 @@
-package com.artncore.managersetting.ui.fragments;
-
-import android.content.res.Resources;
-import android.os.Bundle;
-//import android.support.v4.app.Fragment;
-import androidx.fragment.app.Fragment;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.LinearLayout;
-
-import com.artncore.managersetting.R;
-import com.artncore.managersetting.domain.Const;
-import com.artncore.managersetting.ui.activities.MainActivity;
-
-import kr.co.icontrols.wallpadsupport.Version;
-
-/**
- * A fragment representing a single Item detail screen. This fragment is either
- * contained in a {@link MainActivity} in two-pane mode (on tablets) or a
- * {link ItemDetailActivity} on handsets.
- */
-public class AdminSettingFragment extends Fragment implements AdminSubMenu.SubMenuChangedListener {
-    private static final String TAG = "AdminSettingFragment";
-
-    private final boolean DEBUG = true;
-
-    public static final int SUB_MENU_IDX_CONTROLLER_SETTING = 0;
-    public static final int SUB_MENU_IDX_ENERGY_MANAGEMENT_SETTING = 1;
-    public static final int SUB_MENU_IDX_ADDED_FUNCTION_SETTING = 2;
-    public static final int SUB_MENU_IDX_CALL_FUNCTION_SETTING = 3;
-    public static final int SUB_MENU_IDX_DETAIL_FUNCTION_SETTING = 4;
-    public static final int SUB_MENU_IDX_LIVEM_CONCENT_REGI_SETTING = 5;
-    public static final int SUB_MENU_IDX_SUBWPD_SETTING = 6;
-    public static final int SUB_MENU_IDX_DEBUGGING_SETTING = 7;
-
-
-
-    private AdminSubMenu mAdminSubMenu;
-
-    private View mRootView;
-
-    /**
-     * The dummy content this fragment is presenting.
-     */
-    private AdminMenu.MenuItem mItem;
-
-    /**
-     * Mandatory empty constructor for the fragment manager to instantiate the
-     * fragment (e.g. upon screen orientation changes).
-     */
-    public AdminSettingFragment() {
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        if (getArguments().containsKey(Const.ARG_ITEM_ID)) {
-            // Load the dummy content specified by the fragment
-            // arguments. In a real-world scenario, use a Loader
-            // to load content from a content provider.
-            mItem = AdminMenu.ITEM_MAP.get(getArguments().getString(
-                    Const.ARG_ITEM_ID));
-        }
-    }
-
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-            Bundle savedInstanceState) {
-        View rootView = inflater.inflate(R.layout.fragment_admin_setting,
-                container, false);
-
-        mRootView = rootView;
-
-        return rootView;
-    }
-
-
-    @Override
-    public void onViewCreated(View view, Bundle savedInstanceState) {
-        super.onViewCreated(view, savedInstanceState);
-
-        Resources res = getActivity().getResources();
-        String[] menuItem= res.getStringArray(R.array.entries_menu_admin_setting);
-        String[] inputmenuItem = null;
-
-        if (Version.getGatewayUsage()) {
-            if (Version.getModelType() == Version.MODEL_TYPE.IHN_1010GL || Version.getModelType() == Version.MODEL_TYPE.IHN_1010GL_I) {
-                inputmenuItem = new String[menuItem.length-2];
-                Log.d(TAG, "[onViewCreated] inputmenuItem.length [" + inputmenuItem.length + "]");
-
-                for (int i = 0; i < menuItem.length-2; i++) {
-                    if ( i == (menuItem.length-3) ) {
-                        inputmenuItem[i] = menuItem[i+2]; // IHN-1010GL 월패드인 경우에는 거실EM 설정, 서브월패드 설정 화면 안나오도록 함.
-                        break;
-                    }
-                    else {
-                        inputmenuItem[i] = menuItem[i];
-                    }
-                }
-            }
-            else {
-                inputmenuItem = new String[menuItem.length-1];
-                Log.d(TAG, "[onViewCreated] inputmenuItem.length [" + inputmenuItem.length + "]");
-
-                for (int i = 0; i < menuItem.length-1; i++) {
-                    if ( i == (menuItem.length-2) ) {
-                        inputmenuItem[i] = menuItem[i+1]; // 현산월패드인 경우에는 서브월패드 설정 화면 안나오도록 함.
-                        break;
-                    }
-                    else {
-                        inputmenuItem[i] = menuItem[i];
-                    }
-                }
-            }
-        }
-        else {
-            int modelType = Version.getModelType();
-            if (modelType == Version.MODEL_TYPE.IHN_1010 || modelType == Version.MODEL_TYPE.IHN_1010_I) {
-                inputmenuItem = new String[menuItem.length-1]; // 1010의 경우에만 서브월패드 설정 화면 나오도록 함.
-                Log.d(TAG, "[onViewCreated] inputmenuItem.length [" + inputmenuItem.length + "]");
-
-                for (int i = 0; i < menuItem.length-1; i++) {
-                    if ((i == menuItem.length-3) || (i == menuItem.length-2)) {
-                        inputmenuItem[i] = menuItem[i+1]; // 1010의 경우에는 거실EM 콘센트 등록 화면 안나오도록 함.
-                    }
-                    else {
-                        inputmenuItem[i] = menuItem[i];
-                    }
-                }
-            }
-            else {
-                inputmenuItem = new String[menuItem.length-2];
-
-                for (int i = 0; i < menuItem.length-2; i++) {
-                    if (i == (menuItem.length-3)) {
-                        inputmenuItem[i] = menuItem[i+2]; // 1010 외 대외월패드인 경우에는 거실EM 콘센트 등록 화면 및 서브월패드 설정 화면 안나오도록 함.
-                    }
-                    else {
-                        inputmenuItem[i] = menuItem[i];
-                    }
-                }
-            }
-        }
-
-        mAdminSubMenu = new AdminSubMenu(getActivity(), inputmenuItem, this);
-        LinearLayout.LayoutParams subMenuParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
-        ViewGroup SubMenuView = (ViewGroup) view.findViewById(R.id.sub_menu_layout);
-        (SubMenuView).addView(mAdminSubMenu.getView(), subMenuParams);
-        onSubMenuChanged(0);
-    }
-
-
-    @Override
-    public void onSubMenuChanged(int menuIdx) {
-        if (DEBUG)  Log.d(TAG, "onSubMenuChanged() menuIdx : " + menuIdx);
-        MainActivity.setFinishTimerReset();
-        int modelType = Version.getModelType();
-        
-        mAdminSubMenu.setMenuSelected(menuIdx, true);
-        switch (menuIdx) {
-            case SUB_MENU_IDX_CONTROLLER_SETTING:
-            {
-                SettingControllerFragment fragment = new SettingControllerFragment();
-                getActivity().getSupportFragmentManager().beginTransaction()
-                        .replace(R.id.menu_content, fragment).commit();
-            }
-            break;
-
-            case SUB_MENU_IDX_ENERGY_MANAGEMENT_SETTING:
-            {
-                SettingEnergyManagementFragment fragment = new SettingEnergyManagementFragment();
-                getActivity().getSupportFragmentManager().beginTransaction()
-                        .replace(R.id.menu_content, fragment).commit();
-            }
-            break;
-
-            case SUB_MENU_IDX_ADDED_FUNCTION_SETTING:
-            {
-                SettingAdditionalFunctionFragment fragment = new SettingAdditionalFunctionFragment();
-                getActivity().getSupportFragmentManager().beginTransaction()
-                        .replace(R.id.menu_content, fragment).commit();
-            }
-            break;
-
-            case SUB_MENU_IDX_CALL_FUNCTION_SETTING:
-            {
-                SettingCallFunctionFragment fragment = new SettingCallFunctionFragment();
-                getActivity().getSupportFragmentManager().beginTransaction()
-                        .replace(R.id.menu_content, fragment).commit();
-            }
-            break;
-
-            case SUB_MENU_IDX_DETAIL_FUNCTION_SETTING:
-            {
-                SettingDetailFunctionFragment fragment = new SettingDetailFunctionFragment();
-                getActivity().getSupportFragmentManager().beginTransaction()
-                        .replace(R.id.menu_content, fragment).commit();
-            }
-            break;
-
-            case SUB_MENU_IDX_LIVEM_CONCENT_REGI_SETTING:
-            {
-                if (modelType == Version.MODEL_TYPE.IHN_D101 || modelType == Version.MODEL_TYPE.IHN_D101_I
-                        || modelType == Version.MODEL_TYPE.IHN_D101K || modelType == Version.MODEL_TYPE.IHN_D101K_I)
-                {
-                    SettingEMLivingRegiFrag fragment = new SettingEMLivingRegiFrag();
-                    getActivity().getSupportFragmentManager().beginTransaction()
-                            .replace(R.id.menu_content, fragment).commit();
-                }
-                else if (modelType == Version.MODEL_TYPE.IHN_1010 || modelType == Version.MODEL_TYPE.IHN_1010_I) {
-                    SettingSubWpdSettingFragment fragment = new SettingSubWpdSettingFragment();
-                    getActivity().getSupportFragmentManager().beginTransaction()
-                            .replace(R.id.menu_content, fragment).commit();
-                }
-                else {
-                    SettingDebuggingFragment fragment = new SettingDebuggingFragment();
-                    getActivity().getSupportFragmentManager().beginTransaction()
-                            .replace(R.id.menu_content, fragment).commit();
-                }
-            }
-            break;
-
-            case SUB_MENU_IDX_SUBWPD_SETTING:
-            {
-                if (modelType == Version.MODEL_TYPE.IHN_D101 || modelType == Version.MODEL_TYPE.IHN_D101_I
-                        || modelType == Version.MODEL_TYPE.IHN_D101K || modelType == Version.MODEL_TYPE.IHN_D101K_I
-                        || modelType == Version.MODEL_TYPE.IHN_1010 || modelType == Version.MODEL_TYPE.IHN_1010_I)
-                {
-                    SettingDebuggingFragment fragment = new SettingDebuggingFragment();
-                    getActivity().getSupportFragmentManager().beginTransaction()
-                            .replace(R.id.menu_content, fragment).commit();
-                }
-            }
-            break;
-
-            case SUB_MENU_IDX_DEBUGGING_SETTING:
-            {
-                SettingDebuggingFragment fragment = new SettingDebuggingFragment();
-                getActivity().getSupportFragmentManager().beginTransaction()
-                        .replace(R.id.menu_content, fragment).commit();
-            }
-            break;
-
-            default:
-                break;
-        }
-    }
-
-}
+package com.artncore.managersetting.ui.fragments;
+
+import android.content.res.Resources;
+import android.os.Bundle;
+//import android.support.v4.app.Fragment;
+import androidx.fragment.app.Fragment;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.LinearLayout;
+
+import com.artncore.managersetting.R;
+import com.artncore.managersetting.domain.Const;
+import com.artncore.managersetting.ui.activities.MainActivity;
+
+import kr.co.icontrols.wallpadsupport.Version;
+
+/**
+ * A fragment representing a single Item detail screen. This fragment is either
+ * contained in a {@link MainActivity} in two-pane mode (on tablets) or a
+ * {link ItemDetailActivity} on handsets.
+ */
+public class AdminSettingFragment extends Fragment implements AdminSubMenu.SubMenuChangedListener {
+    private static final String TAG = "AdminSettingFragment";
+
+    private final boolean DEBUG = true;
+
+    public static final int SUB_MENU_IDX_CONTROLLER_SETTING = 0;
+    public static final int SUB_MENU_IDX_ENERGY_MANAGEMENT_SETTING = 1;
+    public static final int SUB_MENU_IDX_ADDED_FUNCTION_SETTING = 2;
+    public static final int SUB_MENU_IDX_CALL_FUNCTION_SETTING = 3;
+    public static final int SUB_MENU_IDX_DETAIL_FUNCTION_SETTING = 4;
+    public static final int SUB_MENU_IDX_LIVEM_CONCENT_REGI_SETTING = 5;
+    public static final int SUB_MENU_IDX_SUBWPD_SETTING = 6;
+    public static final int SUB_MENU_IDX_DEBUGGING_SETTING = 7;
+
+
+
+    private AdminSubMenu mAdminSubMenu;
+
+    private View mRootView;
+
+    /**
+     * The dummy content this fragment is presenting.
+     */
+    private AdminMenu.MenuItem mItem;
+
+    /**
+     * Mandatory empty constructor for the fragment manager to instantiate the
+     * fragment (e.g. upon screen orientation changes).
+     */
+    public AdminSettingFragment() {
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        if (getArguments().containsKey(Const.ARG_ITEM_ID)) {
+            // Load the dummy content specified by the fragment
+            // arguments. In a real-world scenario, use a Loader
+            // to load content from a content provider.
+            mItem = AdminMenu.ITEM_MAP.get(getArguments().getString(
+                    Const.ARG_ITEM_ID));
+        }
+    }
+
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+            Bundle savedInstanceState) {
+        View rootView = inflater.inflate(R.layout.fragment_admin_setting,
+                container, false);
+
+        mRootView = rootView;
+
+        return rootView;
+    }
+
+
+    @Override
+    public void onViewCreated(View view, Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+
+        Resources res = getActivity().getResources();
+        String[] menuItem= res.getStringArray(R.array.entries_menu_admin_setting);
+        String[] inputmenuItem = null;
+
+        if (Version.getGatewayUsage()) {
+            inputmenuItem = new String[menuItem.length-1];
+            Log.d(TAG, "[onViewCreated] inputmenuItem.length [" + inputmenuItem.length + "]");
+
+            for (int i = 0; i < menuItem.length-1; i++) {
+                if ( i == (menuItem.length-2) ) {
+                    inputmenuItem[i] = menuItem[i+1]; // 현산월패드인 경우에는 서브월패드 설정 화면 안나오도록 함.
+                    break;
+                }
+                else {
+                    inputmenuItem[i] = menuItem[i];
+                }
+            }
+        }
+        else {
+            int modelType = Version.getModelType();
+            if (modelType == Version.MODEL_TYPE.IHN_1010 || modelType == Version.MODEL_TYPE.IHN_1010_I) {
+                inputmenuItem = new String[menuItem.length-1]; // 1010의 경우에만 서브월패드 설정 화면 나오도록 함.
+                Log.d(TAG, "[onViewCreated] inputmenuItem.length [" + inputmenuItem.length + "]");
+
+                for (int i = 0; i < menuItem.length-1; i++) {
+                    if ((i == menuItem.length-3) || (i == menuItem.length-2)) {
+                        inputmenuItem[i] = menuItem[i+1]; // 1010의 경우에는 거실EM 콘센트 등록 화면 안나오도록 함.
+                    }
+                    else {
+                        inputmenuItem[i] = menuItem[i];
+                    }
+                }
+            }
+            else {
+                inputmenuItem = new String[menuItem.length-2];
+
+                for (int i = 0; i < menuItem.length-2; i++) {
+                    if (i == (menuItem.length-3)) {
+                        inputmenuItem[i] = menuItem[i+2]; // 1010 외 대외월패드인 경우에는 거실EM 콘센트 등록 화면 및 서브월패드 설정 화면 안나오도록 함.
+                    }
+                    else {
+                        inputmenuItem[i] = menuItem[i];
+                    }
+                }
+            }
+        }
+
+        mAdminSubMenu = new AdminSubMenu(getActivity(), inputmenuItem, this);
+        LinearLayout.LayoutParams subMenuParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
+        ViewGroup SubMenuView = (ViewGroup) view.findViewById(R.id.sub_menu_layout);
+        (SubMenuView).addView(mAdminSubMenu.getView(), subMenuParams);
+        onSubMenuChanged(0);
+    }
+
+
+    @Override
+    public void onSubMenuChanged(int menuIdx) {
+        if (DEBUG)  Log.d(TAG, "onSubMenuChanged() menuIdx : " + menuIdx);
+        MainActivity.setFinishTimerReset();
+        int modelType = Version.getModelType();
+        
+        mAdminSubMenu.setMenuSelected(menuIdx, true);
+        switch (menuIdx) {
+            case SUB_MENU_IDX_CONTROLLER_SETTING:
+            {
+                SettingControllerFragment fragment = new SettingControllerFragment();
+                getActivity().getSupportFragmentManager().beginTransaction()
+                        .replace(R.id.menu_content, fragment).commit();
+            }
+            break;
+
+            case SUB_MENU_IDX_ENERGY_MANAGEMENT_SETTING:
+            {
+                SettingEnergyManagementFragment fragment = new SettingEnergyManagementFragment();
+                getActivity().getSupportFragmentManager().beginTransaction()
+                        .replace(R.id.menu_content, fragment).commit();
+            }
+            break;
+
+            case SUB_MENU_IDX_ADDED_FUNCTION_SETTING:
+            {
+                SettingAdditionalFunctionFragment fragment = new SettingAdditionalFunctionFragment();
+                getActivity().getSupportFragmentManager().beginTransaction()
+                        .replace(R.id.menu_content, fragment).commit();
+            }
+            break;
+
+            case SUB_MENU_IDX_CALL_FUNCTION_SETTING:
+            {
+                SettingCallFunctionFragment fragment = new SettingCallFunctionFragment();
+                getActivity().getSupportFragmentManager().beginTransaction()
+                        .replace(R.id.menu_content, fragment).commit();
+            }
+            break;
+
+            case SUB_MENU_IDX_DETAIL_FUNCTION_SETTING:
+            {
+                SettingDetailFunctionFragment fragment = new SettingDetailFunctionFragment();
+                getActivity().getSupportFragmentManager().beginTransaction()
+                        .replace(R.id.menu_content, fragment).commit();
+            }
+            break;
+
+            case SUB_MENU_IDX_LIVEM_CONCENT_REGI_SETTING:
+            {
+                if (modelType == Version.MODEL_TYPE.IHN_D101 || modelType == Version.MODEL_TYPE.IHN_D101_I
+                        || modelType == Version.MODEL_TYPE.IHN_D101K || modelType == Version.MODEL_TYPE.IHN_D101K_I)
+                {
+                    SettingEMLivingRegiFrag fragment = new SettingEMLivingRegiFrag();
+                    getActivity().getSupportFragmentManager().beginTransaction()
+                            .replace(R.id.menu_content, fragment).commit();
+                }
+                else if (modelType == Version.MODEL_TYPE.IHN_1010 || modelType == Version.MODEL_TYPE.IHN_1010_I) {
+                    SettingSubWpdSettingFragment fragment = new SettingSubWpdSettingFragment();
+                    getActivity().getSupportFragmentManager().beginTransaction()
+                            .replace(R.id.menu_content, fragment).commit();
+                }
+                else {
+                    SettingDebuggingFragment fragment = new SettingDebuggingFragment();
+                    getActivity().getSupportFragmentManager().beginTransaction()
+                            .replace(R.id.menu_content, fragment).commit();
+                }
+            }
+            break;
+
+            case SUB_MENU_IDX_SUBWPD_SETTING:
+            {
+                if (modelType == Version.MODEL_TYPE.IHN_D101 || modelType == Version.MODEL_TYPE.IHN_D101_I
+                        || modelType == Version.MODEL_TYPE.IHN_D101K || modelType == Version.MODEL_TYPE.IHN_D101K_I
+                        || modelType == Version.MODEL_TYPE.IHN_1010 || modelType == Version.MODEL_TYPE.IHN_1010_I)
+                {
+                    SettingDebuggingFragment fragment = new SettingDebuggingFragment();
+                    getActivity().getSupportFragmentManager().beginTransaction()
+                            .replace(R.id.menu_content, fragment).commit();
+                }
+            }
+            break;
+
+            case SUB_MENU_IDX_DEBUGGING_SETTING:
+            {
+                SettingDebuggingFragment fragment = new SettingDebuggingFragment();
+                getActivity().getSupportFragmentManager().beginTransaction()
+                        .replace(R.id.menu_content, fragment).commit();
+            }
+            break;
+
+            default:
+                break;
+        }
+    }
+
+}

+ 349 - 356
ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/AdminSubMenu.java

@@ -1,356 +1,349 @@
-package com.artncore.managersetting.ui.fragments;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import kr.co.icontrols.wallpadsupport.WpadSound;
-import kr.co.icontrols.wallpadsupport.WpadSound.SND;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.graphics.Rect;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.ViewTreeObserver;
-import android.widget.AbsListView;
-import android.widget.AbsListView.OnScrollListener;
-import android.widget.HorizontalScrollView;
-import android.widget.Button;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-import com.artncore.managersetting.R;
-import com.artncore.managersetting.ui.activities.MainActivity;
-import com.artncore.managersetting.util.ViewUtil;
-import com.util.LogUtil;
-
-/**
- * Helper class for providing sample content for user interfaces created by
- * Android template wizards.
- * <p>
- * TODO: Replace all uses of this class before publishing your app.
- */
-public class AdminSubMenu implements View.OnTouchListener {
-    private static final String TAG = "AdminSubMenu";
-
-    private final boolean DEBUG = true;
-    private final boolean DEBUG_SCROLL = true;
-
-    private final int SUB_MENU_FULL_WIDTH = 733;
-    private final int SUB_MENU_MARGIN_LEFT = 5;
-
-    private Context mContext;
-    private WpadSound mWpadSound;
-    private SubMenuChangedListener mListener;
-    private View mRootView;
-    private HorizontalScrollView mTopMenuScroll;
-    private LinearLayout mMenuLayout;
-
-    private int mItemWidth;
-    private int mMenuWidth;
-
-    private Button mLeftArrow;
-    private Button mRightArrow;
-
-    View mArrMenuView[] = null;
-
-
-    private boolean bInit = false;
-
-
-
-    // 상단 sub menu select listener
-    public interface SubMenuChangedListener {
-        public void onSubMenuChanged(int menuIdx);
-    }
-
-
-    // constructor
-    public AdminSubMenu(Context context, String[] arrMenu, SubMenuChangedListener listener) {
-        try {
-            mContext = context;
-            mListener = listener;
-            mWpadSound = MainActivity.getWpadSound();
-            LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-            mRootView = inflater.inflate(R.layout.sub_menu, null);
-
-            initSubMenu(arrMenu);
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
-        } catch (Exception e) {
-            Log.e(TAG, "[Exception] AdminSubMenu(Context context, String[] arrMenu, SubMenuChangedListener listener)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
-        }
-    }
-
-    // return rootView
-    public View getView() {
-        return mRootView;
-    }
-
-
-    // init SubMenu
-    private void initSubMenu(String arrMenu[]) {
-        try {
-            if (bInit == false) {
-                if (DEBUG)  Log.d(TAG, "initSubMenu() ");
-
-                mArrMenuView = new View[arrMenu.length];
-                mTopMenuScroll = (HorizontalScrollView) mRootView.findViewById(R.id.top_menu_scroll);
-                mTopMenuScroll.setOnTouchListener(this);
-                ViewTreeObserver viewTreeObserver = mTopMenuScroll.getViewTreeObserver();
-                mLeftArrow = (Button)mRootView.findViewById(R.id.btn_left_arrow);
-                mRightArrow = (Button)mRootView.findViewById(R.id.btn_right_arrow);
-                mLeftArrow.setOnClickListener(mButtonClick);
-                mRightArrow.setOnClickListener(mButtonClick);
-
-                mMenuLayout = (LinearLayout) mRootView.findViewById(R.id.top_menu);
-                LinearLayout.LayoutParams menuParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
-                menuParams.leftMargin = SUB_MENU_MARGIN_LEFT;
-
-                LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-                for (int i = 0; i < arrMenu.length; i++) {
-                    if (DEBUG)  Log.d(TAG, "arrMenu[" + i + "] : " + arrMenu[i]);
-
-                    mArrMenuView[i] = inflater.inflate(R.layout.sub_menu_item, mMenuLayout, false);
-
-                    TextView tvView = (TextView) mArrMenuView[i].findViewById(R.id.tv_title);
-                    tvView.setText(arrMenu[i]);
-
-                    MenuOnClickListener menuOnClickListener = new MenuOnClickListener(i);
-                    mArrMenuView[i].setOnClickListener(menuOnClickListener);
-
-                    mMenuLayout.addView(mArrMenuView[i], menuParams);
-
-                    if (i == 0) {
-                        mArrMenuView[i].measure(0, 0);
-                        mItemWidth = mArrMenuView[i].getMeasuredWidth();
-
-                        if (DEBUG)  Log.d(TAG, "mItemWidth : " + mItemWidth);
-                    }
-                }
-
-                mMenuLayout.measure(0, 0);
-                mMenuWidth = mMenuLayout.getMeasuredWidth();
-
-                if (DEBUG)  Log.d(TAG, "mMenuWidth : " + mMenuWidth);
-
-                int layoutWidth = mMenuWidth + LEFT_ARROW_WIDTH + RIGHT_ARROW_WIDTH;
-                if (layoutWidth > SUB_MENU_FULL_WIDTH) {
-                    mRightArrow.setVisibility(View.VISIBLE);
-                }
-                bInit = true;
-            }
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
-        } catch (Exception e) {
-            Log.e(TAG, "[Exception] initSubMenu(String arrMenu[])");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("",TAG, e);
-        }
-    }
-
-
-    // go prev menu
-    private void goPrevIdx(final int visibleIdx) {
-        if (DEBUG)  Log.d(TAG, "goPrevIdx() visibleIdx : " + visibleIdx);
-
-        //mMenuLayout.getChildAt(visibleIdx).requestFocus();
-        mMenuLayout.getChildAt(visibleIdx).requestFocus();
-        if (visibleIdx == 0)
-            mLeftArrow.setVisibility(View.INVISIBLE);
-
-        mTopMenuScroll.post(new Runnable() {
-            @Override
-            public void run() {
-                // TODO Auto-generated method stub
-                mRightArrow.setVisibility(View.VISIBLE);
-                mTopMenuScroll.scrollTo(mItemWidth * visibleIdx, 0);
-            }
-        });
-    }
-
-
-    // go next menu
-    private void goNextIdx(final int visibleIdx) {
-        if (DEBUG)  Log.d(TAG, "goNextIdx() visibleIdx : " + visibleIdx);
-
-        //mMenuLayout.getChildAt(visibleIdx).requestFocus();
-        mMenuLayout.getChildAt(visibleIdx).requestFocus();
-
-        int lastIdx = mMenuLayout.getChildCount() - 1;
-        if (visibleIdx >= lastIdx - 2)
-            mRightArrow.setVisibility(View.INVISIBLE);
-
-        mTopMenuScroll.post(new Runnable() {
-            @Override
-            public void run() {
-                // TODO Auto-generated method stub
-                mLeftArrow.setVisibility(View.VISIBLE);
-                mTopMenuScroll.scrollTo(mItemWidth * visibleIdx, 0);
-            }
-        });
-    }
-
-
-    private View.OnClickListener mButtonClick = new View.OnClickListener() {
-        @Override
-        public void onClick(View v) {
-
-            mWpadSound.Play(SND.effect.TOUCH_LATCHED);
-            MainActivity.setFinishTimerReset();
-
-            switch(v.getId())
-            {
-                case R.id.btn_left_arrow:
-                {
-                    if (DEBUG)  Log.d(TAG, "onClick() btn_left_arrow : " );
-
-                    int visibleIdx = ViewUtil.getCompletedVisibleChildIdx(mTopMenuScroll, mMenuLayout, true);
-
-                    if (visibleIdx > 0)
-                        goPrevIdx(visibleIdx - 1);
-                }
-                break;
-
-                case R.id.btn_right_arrow:
-                {
-                    if (DEBUG)  Log.d(TAG, "onClick() btn_right_arrow : ");
-
-                    int visibleIdx = ViewUtil.getCompletedVisibleChildIdx(mTopMenuScroll, mMenuLayout, false);
-
-                    if (DEBUG)  Log.d(TAG, "visibleIdx : " + visibleIdx
-                            + ", mMenuLayout.getChildCount() : " + (mMenuLayout.getChildCount()));
-
-                    if (visibleIdx > -1)
-                        goNextIdx(visibleIdx-1);
-                }
-                break;
-
-                default:
-                    break;
-            }
-        }
-    };
-
-
-    private class MenuOnClickListener implements View.OnClickListener {
-        int mIdx = 0;
-
-        // constructor
-        public MenuOnClickListener(int idx) {
-            mIdx= idx;
-        }
-
-        @Override
-        public void onClick(View v) {
-            if (DEBUG)  Log.d(TAG, "onClick() : " + mIdx);
-
-            MainActivity.setFinishTimerReset();
-
-            mListener.onSubMenuChanged(mIdx);
-        }
-    }
-
-
-
-
-
-
-
-    private final int LEFT_ARROW_WIDTH = 70 + SUB_MENU_MARGIN_LEFT;
-    private final int RIGHT_ARROW_WIDTH = LEFT_ARROW_WIDTH;
-
-    @Override
-    public boolean onTouch(View v, MotionEvent event) {
-        // TODO Auto-generated method stub
-
-        //화면 세로 크기
-//        WindowManager wm = getActivity().getWindowManager();
-//        int mWidth = wm.getDefaultDisplay().getWidth();
-
-        int mWidth = mRootView.getWidth();
-        Log.d(TAG, "mRootView.getWidth() : " + mRootView.getWidth());
-        MainActivity.setFinishTimerReset();
-
-        int layoutWidth = mMenuWidth;
-
-        //스크롤뷰의 getScrollX()가 0부터 시작인데, 레이아웃은 왼쪽/오늘쪽 화살표가 양쪽에 위치해 있으므로 전부 더합니다.
-        layoutWidth = layoutWidth + LEFT_ARROW_WIDTH + RIGHT_ARROW_WIDTH;
-
-        boolean isArrow = false;
-
-        //스크롤 안에 들어가 있는 LinearLayout의 width가 화면크기보다 클때
-        if(layoutWidth > mWidth)
-        {
-            isArrow = true;
-        }
-
-        //화면세로크기보다 커지면 오른쪽 화살표 표시
-        int move = layoutWidth - mWidth;
-
-        if (DEBUG_SCROLL)  Log.d(TAG, "layoutWidth : " + layoutWidth
-                + "\n" + "mWidth : " + mWidth
-                + "\n" + "move : " + move
-                + "\n" + "mTopMenuScroll.getScrollX() : " + mTopMenuScroll.getScrollX()
-        );
-
-        //0보다 크면 왼쪽 화살표 표시
-        if(isArrow && mTopMenuScroll.getScrollX() > 0)
-        {
-            mLeftArrow.setVisibility(View.VISIBLE);
-            //이동길이와 같으면 오른쪽 화살표 미표시
-            if(mTopMenuScroll.getScrollX() == move)
-            {
-                mRightArrow.setVisibility(View.INVISIBLE);
-            }
-        }
-
-        //이동길이보다 작으면 오른쪽 화살표 표시
-        if(isArrow && mTopMenuScroll.getScrollX() < move)
-        {
-            mRightArrow.setVisibility(View.VISIBLE);
-            //0과 같으면 왼쪽 화살표 미표시
-            if(mTopMenuScroll.getScrollX() == 0)
-            {
-                mLeftArrow.setVisibility(View.INVISIBLE);
-            }
-        }
-        return false;
-    };
-
-
-    private int mIdxCurMenu = -1;
-    // idxMenu의 menu를 setSelect (true or false)
-    public void setMenuSelected(int idxMenu, boolean bSet) {
-        if (DEBUG)    Log.d(TAG, "setMenuSelected() idxMenu : " + idxMenu + ", bSet : " + bSet
-                + "\n mArrMenuView.length : " + mArrMenuView.length
-        );
-
-        if ((idxMenu > -1) && (mArrMenuView.length > idxMenu)) {
-            if (bSet) {
-                if (mIdxCurMenu == idxMenu)
-                    return;
-                else {
-                    setMenuSelected(mIdxCurMenu, false);
-                    mIdxCurMenu = idxMenu;
-                }
-            }
-
-            if (DEBUG)    Log.d(TAG, "setMenuSelected() idxMenu : " + idxMenu + ", bSet : " + bSet);
-
-            mArrMenuView[idxMenu].setSelected(bSet);
-        }
-    }
-
-
-
-
-}
+package com.artncore.managersetting.ui.fragments;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import kr.co.icontrols.wallpadsupport.WpadSound;
+import kr.co.icontrols.wallpadsupport.WpadSound.SND;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.graphics.Rect;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewTreeObserver;
+import android.widget.AbsListView;
+import android.widget.AbsListView.OnScrollListener;
+import android.widget.HorizontalScrollView;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.artncore.managersetting.R;
+import com.artncore.managersetting.ui.activities.MainActivity;
+import com.artncore.managersetting.util.ViewUtil;
+
+/**
+ * Helper class for providing sample content for user interfaces created by
+ * Android template wizards.
+ * <p>
+ * TODO: Replace all uses of this class before publishing your app.
+ */
+public class AdminSubMenu implements View.OnTouchListener {
+    private static final String TAG = "AdminSubMenu";
+
+    private final boolean DEBUG = true;
+    private final boolean DEBUG_SCROLL = true;
+
+    private final int SUB_MENU_FULL_WIDTH = 733;
+    private final int SUB_MENU_MARGIN_LEFT = 5;
+
+    private Context mContext;
+    private WpadSound mWpadSound;
+    private SubMenuChangedListener mListener;
+    private View mRootView;
+    private HorizontalScrollView mTopMenuScroll;
+    private LinearLayout mMenuLayout;
+
+    private int mItemWidth;
+    private int mMenuWidth;
+
+    private Button mLeftArrow;
+    private Button mRightArrow;
+
+    View mArrMenuView[] = null;
+
+
+    private boolean bInit = false;
+
+
+
+    // 상단 sub menu select listener
+    public interface SubMenuChangedListener {
+        public void onSubMenuChanged(int menuIdx);
+    }
+
+
+    // constructor
+    public AdminSubMenu(Context context, String[] arrMenu, SubMenuChangedListener listener) {
+        try {
+            mContext = context;
+            mListener = listener;
+            mWpadSound = MainActivity.getWpadSound();
+            LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+            mRootView = inflater.inflate(R.layout.sub_menu, null);
+
+            initSubMenu(arrMenu);
+        } catch (Exception e) {
+            Log.e(TAG, "[Exception] AdminSubMenu(Context context, String[] arrMenu, SubMenuChangedListener listener)");
+            e.printStackTrace();
+        }
+    }
+
+    // return rootView
+    public View getView() {
+        return mRootView;
+    }
+
+
+    // init SubMenu
+    private void initSubMenu(String arrMenu[]) {
+        try {
+            if (bInit == false) {
+                if (DEBUG)  Log.d(TAG, "initSubMenu() ");
+
+                mArrMenuView = new View[arrMenu.length];
+                mTopMenuScroll = (HorizontalScrollView) mRootView.findViewById(R.id.top_menu_scroll);
+                mTopMenuScroll.setOnTouchListener(this);
+                ViewTreeObserver viewTreeObserver = mTopMenuScroll.getViewTreeObserver();
+                mLeftArrow = (Button)mRootView.findViewById(R.id.btn_left_arrow);
+                mRightArrow = (Button)mRootView.findViewById(R.id.btn_right_arrow);
+                mLeftArrow.setOnClickListener(mButtonClick);
+                mRightArrow.setOnClickListener(mButtonClick);
+
+                mMenuLayout = (LinearLayout) mRootView.findViewById(R.id.top_menu);
+                LinearLayout.LayoutParams menuParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
+                menuParams.leftMargin = SUB_MENU_MARGIN_LEFT;
+
+                LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+                for (int i = 0; i < arrMenu.length; i++) {
+                    if (DEBUG)  Log.d(TAG, "arrMenu[" + i + "] : " + arrMenu[i]);
+
+                    mArrMenuView[i] = inflater.inflate(R.layout.sub_menu_item, mMenuLayout, false);
+
+                    TextView tvView = (TextView) mArrMenuView[i].findViewById(R.id.tv_title);
+                    tvView.setText(arrMenu[i]);
+
+                    MenuOnClickListener menuOnClickListener = new MenuOnClickListener(i);
+                    mArrMenuView[i].setOnClickListener(menuOnClickListener);
+
+                    mMenuLayout.addView(mArrMenuView[i], menuParams);
+
+                    if (i == 0) {
+                        mArrMenuView[i].measure(0, 0);
+                        mItemWidth = mArrMenuView[i].getMeasuredWidth();
+
+                        if (DEBUG)  Log.d(TAG, "mItemWidth : " + mItemWidth);
+                    }
+                }
+
+                mMenuLayout.measure(0, 0);
+                mMenuWidth = mMenuLayout.getMeasuredWidth();
+
+                if (DEBUG)  Log.d(TAG, "mMenuWidth : " + mMenuWidth);
+
+                int layoutWidth = mMenuWidth + LEFT_ARROW_WIDTH + RIGHT_ARROW_WIDTH;
+                if (layoutWidth > SUB_MENU_FULL_WIDTH) {
+                    mRightArrow.setVisibility(View.VISIBLE);
+                }
+                bInit = true;
+            }
+        } catch (Exception e) {
+            Log.e(TAG, "[Exception] initSubMenu(String arrMenu[])");
+            e.printStackTrace();
+        }
+    }
+
+
+    // go prev menu
+    private void goPrevIdx(final int visibleIdx) {
+        if (DEBUG)  Log.d(TAG, "goPrevIdx() visibleIdx : " + visibleIdx);
+
+        //mMenuLayout.getChildAt(visibleIdx).requestFocus();
+        mMenuLayout.getChildAt(visibleIdx).requestFocus();
+        if (visibleIdx == 0)
+            mLeftArrow.setVisibility(View.INVISIBLE);
+
+        mTopMenuScroll.post(new Runnable() {
+            @Override
+            public void run() {
+                // TODO Auto-generated method stub
+                mRightArrow.setVisibility(View.VISIBLE);
+                mTopMenuScroll.scrollTo(mItemWidth * visibleIdx, 0);
+            }
+        });
+    }
+
+
+    // go next menu
+    private void goNextIdx(final int visibleIdx) {
+        if (DEBUG)  Log.d(TAG, "goNextIdx() visibleIdx : " + visibleIdx);
+
+        //mMenuLayout.getChildAt(visibleIdx).requestFocus();
+        mMenuLayout.getChildAt(visibleIdx).requestFocus();
+
+        int lastIdx = mMenuLayout.getChildCount() - 1;
+        if (visibleIdx >= lastIdx - 2)
+            mRightArrow.setVisibility(View.INVISIBLE);
+
+        mTopMenuScroll.post(new Runnable() {
+            @Override
+            public void run() {
+                // TODO Auto-generated method stub
+                mLeftArrow.setVisibility(View.VISIBLE);
+                mTopMenuScroll.scrollTo(mItemWidth * visibleIdx, 0);
+            }
+        });
+    }
+
+
+    private View.OnClickListener mButtonClick = new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+
+            mWpadSound.Play(SND.effect.TOUCH_LATCHED);
+            MainActivity.setFinishTimerReset();
+
+            switch(v.getId())
+            {
+                case R.id.btn_left_arrow:
+                {
+                    if (DEBUG)  Log.d(TAG, "onClick() btn_left_arrow : " );
+
+                    int visibleIdx = ViewUtil.getCompletedVisibleChildIdx(mTopMenuScroll, mMenuLayout, true);
+
+                    if (visibleIdx > 0)
+                        goPrevIdx(visibleIdx - 1);
+                }
+                break;
+
+                case R.id.btn_right_arrow:
+                {
+                    if (DEBUG)  Log.d(TAG, "onClick() btn_right_arrow : ");
+
+                    int visibleIdx = ViewUtil.getCompletedVisibleChildIdx(mTopMenuScroll, mMenuLayout, false);
+
+                    if (DEBUG)  Log.d(TAG, "visibleIdx : " + visibleIdx
+                            + ", mMenuLayout.getChildCount() : " + (mMenuLayout.getChildCount()));
+
+                    if (visibleIdx > -1)
+                        goNextIdx(visibleIdx-1);
+                }
+                break;
+
+                default:
+                    break;
+            }
+        }
+    };
+
+
+    private class MenuOnClickListener implements View.OnClickListener {
+        int mIdx = 0;
+
+        // constructor
+        public MenuOnClickListener(int idx) {
+            mIdx= idx;
+        }
+
+        @Override
+        public void onClick(View v) {
+            if (DEBUG)  Log.d(TAG, "onClick() : " + mIdx);
+
+            MainActivity.setFinishTimerReset();
+
+            mListener.onSubMenuChanged(mIdx);
+        }
+    }
+
+
+
+
+
+
+
+    private final int LEFT_ARROW_WIDTH = 70 + SUB_MENU_MARGIN_LEFT;
+    private final int RIGHT_ARROW_WIDTH = LEFT_ARROW_WIDTH;
+
+    @Override
+    public boolean onTouch(View v, MotionEvent event) {
+        // TODO Auto-generated method stub
+
+        //화면 세로 크기
+//        WindowManager wm = getActivity().getWindowManager();
+//        int mWidth = wm.getDefaultDisplay().getWidth();
+
+        int mWidth = mRootView.getWidth();
+        Log.d(TAG, "mRootView.getWidth() : " + mRootView.getWidth());
+        MainActivity.setFinishTimerReset();
+
+        int layoutWidth = mMenuWidth;
+
+        //스크롤뷰의 getScrollX()가 0부터 시작인데, 레이아웃은 왼쪽/오늘쪽 화살표가 양쪽에 위치해 있으므로 전부 더합니다.
+        layoutWidth = layoutWidth + LEFT_ARROW_WIDTH + RIGHT_ARROW_WIDTH;
+
+        boolean isArrow = false;
+
+        //스크롤 안에 들어가 있는 LinearLayout의 width가 화면크기보다 클때
+        if(layoutWidth > mWidth)
+        {
+            isArrow = true;
+        }
+
+        //화면세로크기보다 커지면 오른쪽 화살표 표시
+        int move = layoutWidth - mWidth;
+
+        if (DEBUG_SCROLL)  Log.d(TAG, "layoutWidth : " + layoutWidth
+                + "\n" + "mWidth : " + mWidth
+                + "\n" + "move : " + move
+                + "\n" + "mTopMenuScroll.getScrollX() : " + mTopMenuScroll.getScrollX()
+        );
+
+        //0보다 크면 왼쪽 화살표 표시
+        if(isArrow && mTopMenuScroll.getScrollX() > 0)
+        {
+            mLeftArrow.setVisibility(View.VISIBLE);
+            //이동길이와 같으면 오른쪽 화살표 미표시
+            if(mTopMenuScroll.getScrollX() == move)
+            {
+                mRightArrow.setVisibility(View.INVISIBLE);
+            }
+        }
+
+        //이동길이보다 작으면 오른쪽 화살표 표시
+        if(isArrow && mTopMenuScroll.getScrollX() < move)
+        {
+            mRightArrow.setVisibility(View.VISIBLE);
+            //0과 같으면 왼쪽 화살표 미표시
+            if(mTopMenuScroll.getScrollX() == 0)
+            {
+                mLeftArrow.setVisibility(View.INVISIBLE);
+            }
+        }
+        return false;
+    };
+
+
+    private int mIdxCurMenu = -1;
+    // idxMenu의 menu를 setSelect (true or false)
+    public void setMenuSelected(int idxMenu, boolean bSet) {
+        if (DEBUG)    Log.d(TAG, "setMenuSelected() idxMenu : " + idxMenu + ", bSet : " + bSet
+                + "\n mArrMenuView.length : " + mArrMenuView.length
+        );
+
+        if ((idxMenu > -1) && (mArrMenuView.length > idxMenu)) {
+            if (bSet) {
+                if (mIdxCurMenu == idxMenu)
+                    return;
+                else {
+                    setMenuSelected(mIdxCurMenu, false);
+                    mIdxCurMenu = idxMenu;
+                }
+            }
+
+            if (DEBUG)    Log.d(TAG, "setMenuSelected() idxMenu : " + idxMenu + ", bSet : " + bSet);
+
+            mArrMenuView[idxMenu].setSelected(bSet);
+        }
+    }
+
+
+
+
+}

+ 467 - 498
ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/AdminSystemResetFragment.java

@@ -1,498 +1,467 @@
-package com.artncore.managersetting.ui.fragments;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-
-import kr.co.icontrols.v40ioctl.V40IF;
-import kr.co.icontrols.wallpadsupport.Version;
-import android.app.Activity;
-import android.content.ComponentName;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.media.AudioManager;
-import android.os.Bundle;
-import android.os.Environment;
-import android.provider.Settings;
-//import android.support.v4.app.Fragment;
-import androidx.fragment.app.Fragment;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.WindowManager;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.artncore.WallPadDataMgr.WallpadStatusData;
-import com.artncore.WallPadDataMgr.wallpaddbmgr;
-import com.artncore.managersetting.domain.Const;
-import com.artncore.managersetting.ui.activities.MainActivity;
-import com.artncore.managersetting.util.DialogUtil;
-import com.artncore.wallpadapi.WallPadAPI;
-import com.artncore.managersetting.R;
-import com.artncore.commons.define;
-import com.util.LogUtil;
-
-/**
- * A fragment representing a single Item detail screen. This fragment is either
- * contained in a {@link MainActivity} in two-pane mode (on tablets) or a
- * {link ItemDetailActivity} on handsets.
- */
-public class AdminSystemResetFragment extends Fragment {
-    private static final String TAG = "AdminSystemResetFragment";
-
-    private final boolean DEBUG = true;
-
-    private Activity mActivity;
-    private WallPadAPI mWallPadAPI;
-    TextView textView_led_result;
-
-    final String location = define.BASE_STORAGE_LOCATION + "/wallpaddata";
-
-    final String filename = define.BASE_STORAGE_LOCATION + "/led_button_reset.txt";
-
-    // constructor
-    public AdminSystemResetFragment() {
-    }
-
-    @Override
-    public void onAttach(Activity activity) {
-        super.onAttach(activity);
-
-        mActivity = activity;
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        if (DEBUG)  Log.d(TAG, "onCreate() ");
-
-        super.onCreate(savedInstanceState);
-
-        mWallPadAPI = MainActivity.getWallPadAPI();
-
-        /*String testPath1 = Environment.getExternalStorageDirectory().getAbsolutePath() + "/wallpaddata";
-        File f = new File(testPath1);
-        File[] files = f.listFiles();
-
-        for(int i = 0; i < files.length; i++)
-        {
-            Log.i(TAG, "testPath1 [" + i + "] = " + files[i]);
-        }
-
-        String testPath2 = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Bestin";
-        File f2 = new File(testPath2);
-        File[] files2 = f2.listFiles();
-
-        for(int i = 0; i < files2.length; i++)
-        {
-            Log.i(TAG, "testPath2 [" + i + "] = " + files2[i]);
-        }
-
-        String testPath3 = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Bestin/";
-        File f3 = new File(testPath3);
-        File[] files3 = f3.listFiles();
-
-        for(int i = 0; i < files3.length; i++)
-        {
-            Log.i(TAG, "testPath3 [" + i + "] = " + files3[i]);
-        }*/
-
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-        View rootView = (View) inflater.inflate(R.layout.system_reset_container,
-                container, false);
-
-        return (View)rootView;
-    }
-
-    @Override
-    public void onViewCreated(View view, Bundle savedInstanceState) {
-        super.onViewCreated(view, savedInstanceState);
-
-        if (savedInstanceState != null) {}
-
-        Button btnReset = (Button)view.findViewById(R.id.btn_reset);
-        btnReset.setOnClickListener(mButtonClick);
-
-        Button btnLedReset = (Button)view.findViewById(R.id.btn_led_reset);
-        btnLedReset.setOnClickListener(mButtonClick);
-
-        textView_led_result = (TextView)view.findViewById(R.id.txtview_led_reset_result);
-
-        File savefile = new File(filename);
-        if(savefile.exists())
-        {
-            if (DEBUG)  Log.d(TAG, "try file exist... ");
-            textView_led_result.setText("설정되었습니다.");
-        }
-        else
-        {
-            textView_led_result.setText("설정되지 않았습니다.");
-        }
-
-    }
-
-
-    private View.OnClickListener mButtonClick = new View.OnClickListener() {
-        @Override
-        public void onClick(View v) {
-
-            MainActivity.setFinishTimerReset();
-            //mWpadSound.Play(SND.effect.TOUCH_LATCHED);
-            switch(v.getId())
-            {
-                case R.id.btn_reset:
-                    resetConfirmDialog();
-                    break;
-
-                case R.id.btn_led_reset:
-                    if (DEBUG)  Log.d(TAG, "btn_led_reset() ");
-                    boolean result = CreateLedTxtFile();
-                    if(result == true)
-                    {
-                        textView_led_result.setText("결과: 성공");
-                        if (DEBUG)  Log.d(TAG, "file write success");
-                    }
-                    else
-                    {
-                        textView_led_result.setText("결과: 실패");
-                        if (DEBUG)  Log.d(TAG, "file write fail");
-                    }
-
-                    break;
-                default:
-                    break;
-            }
-
-        }
-    };
-
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-
-        closeDialog();
-    }
-
-
-    @Override
-    public void onDetach() {
-        super.onDetach();
-
-        mWallPadAPI = null;
-    }
-
-
-    @Override
-    public void onSaveInstanceState(Bundle outState) {
-        super.onSaveInstanceState(outState);
-    }
-
-
-    // delete Files & directories
-    public boolean deleteFiles(String path) {
-        boolean bSuccess = true;
-        //Log.i(TAG, "[deleteFiles] path = " + path);
-
-        File file = new File(path);
-
-        if (file.exists()) {
-            String deleteCmd = "rm -r " + path;
-            Runtime runtime = Runtime.getRuntime();
-            try {
-                runtime.exec(deleteCmd);
-            } catch (IOException e) {
-
-                bSuccess = false;
-            }
-        }
-
-        if(DEBUG) Log.d(TAG," deleteFiles() " + path + " : " + bSuccess);
-
-        return bSuccess;
-    }
-
-
-
-    private String WALLPAD_DB_NAME = "WallpadDB.db";
-    private String WALLPAD_DB_JOURNAL_NAME = "WallpadDB.db-journal";
-
-    // delete all Contents
-    boolean deleteContents() {
-        //boolean bDelete_1 = deleteContents(Const.CONTENTS_ROOT);
-        //boolean bDelete_2 = deleteContents(Const.BESTIN_CONTENTS_ROOT);
-
-        boolean bDelete_1 = deleteContents(Environment.getExternalStorageDirectory().getAbsolutePath() + "/wallpaddata");
-        boolean bDelete_2 = deleteContents(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Bestin");
-
-        if(DEBUG) Log.d(TAG," deleteContents() " + (bDelete_1 && bDelete_2));
-
-        return (bDelete_1 && bDelete_2);
-    }
-
-
-    // delete Contents
-    boolean deleteContents(String strPath) {
-        boolean bSuccess = true;
-
-        if (strPath == null) {
-            bSuccess = false;
-        }
-        else {
-            File f = new File(strPath);
-            File[] files = f.listFiles();
-
-            /*for(int i = 0; i < files.length; i++)
-            {
-                Log.i(TAG, "file list[" + i + "] = " + files[i]);
-            }*/
-
-            if (files != null) {
-                for (int i = 0; i < files.length; i++) {
-                    File file = files[i];
-
-                    if (file.isDirectory()) {
-                        if(DEBUG) Log.d(TAG," file.isDirectory()");
-
-                        if (deleteFiles(file.getPath()) == false)
-                            bSuccess = false;
-                    } else {
-                        if(DEBUG) Log.d(TAG," !file.isDirectory()");
-
-                        if(!WALLPAD_DB_NAME.equals(file.getName())
-                                && !WALLPAD_DB_JOURNAL_NAME.equals(file.getName())
-                                )
-                        {
-                            if (deleteFiles(file.getName()) == false)
-                                bSuccess = false;
-                        }
-                    }
-                }
-            }
-        }
-
-        if(DEBUG) Log.d(TAG," deleteContents() strPath : " + strPath
-                + ", ret : " + bSuccess);
-
-        return bSuccess;
-    }
-
-
-    // restore DefaultValue
-    private void restoreDefaultValue() {
-        android.provider.Settings.System.putInt(mActivity.getContentResolver()
-                , Settings.System.SCREEN_OFF_TIMEOUT
-                , Const.DEFUALT_SLEEP_TIMEOUT_INTERVAL);
-
-        // volume : 11 (1~15)
-        AudioManager audioManager = (AudioManager) mActivity.getSystemService(Context.AUDIO_SERVICE);
-        int streamType = AudioManager.STREAM_SYSTEM;
-        int volumeMaximum = audioManager.getStreamMaxVolume(streamType);
-        int defalutVolume = (volumeMaximum * Const.DEFUALT_VOLUME) / 15;
-
-        audioManager.setStreamVolume(streamType
-                , defalutVolume
-                , 0);
-
-        // brightness : 5 (1~5)
-        final ContentResolver resolver = mActivity.getContentResolver();
-        Settings.System.putInt(resolver,
-                Settings.System.SCREEN_BRIGHTNESS, Const.DEFUALT_BRIGHTNESS);
-    }
-
-
-    // do SystemReset
-    private void doSystemReset() {
-        try
-        {
-            if (deleteContents()) {
-                restoreDefaultValue();
-
-                // 메인쪽에 있는 초기화 코드 옮김 , 메인쪽에서 할 이유가 없음
-                File delFile = new File(wallpaddbmgr.dblocation+"/"+wallpaddbmgr.WallpadDB);
-				//Log.d(TAG, "delFile size 1-1 = " + delFile.length() );
-                delFile.delete();
-                //Log.d(TAG, "delFile exist 1 = " + delFile.exists());
-				//Log.d(TAG, "delFile size 1-2 = " + delFile.length() );
-
-
-                delFile = new File(wallpaddbmgr.dblocation+"/"+wallpaddbmgr.WallpadDB+"-journal");
-				//Log.d(TAG, "delFile size 2-1 = " + delFile.length() );
-                delFile.delete();
-                //Log.d(TAG, "delFile exist 2 = " + delFile.exists());
-				//Log.d(TAG, "delFile size 2-2 = " + delFile.length() );
-
-                // DB 기본 데이터 생성하는 코드 추가하길 바람
-
-
-                WallpadStatusData wpd = new WallpadStatusData(mActivity);
-                wpd.SetDevStatus(WallpadStatusData.DEV_INIT, "NULL");
-                wpd.closeDB();
-
-                try {Thread.sleep(1000);}
-                catch (RuntimeException re) {
-                    Log.e(TAG, re.toString());
-                }
-                catch (Exception e){
-                    //e.printStackTrace();
-                    LogUtil.errorLogInfo("", TAG, e);
-                }
-
-                if (Version.getPlatformType() == Version.PLATFORM_TYPE.A20) {
-                    //PowerManager pm = (PowerManager)mActivity.getSystemService(Context.POWER_SERVICE);
-                    //pm.userActivity(8, true);
-                    getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
-                }
-                else if (Version.getPlatformType() == Version.PLATFORM_TYPE.A40i) {
-                    V40IF mV40IF = new V40IF();
-                    Log.d(TAG, "System Initialize !!! -> Do Reboot !!!");
-                    mV40IF.setV40Reboot(5);
-                }
-                else {
-                    //finish();
-                    ComponentName cnA = new ComponentName("com.artncore.updater", "com.artncore.updater.MainActivity");
-                    Intent intent = new Intent(Intent.ACTION_MAIN);
-                    intent.addCategory(Intent.CATEGORY_LAUNCHER);
-                    intent.putExtra("updatesystem", "no");
-                    intent.putExtra("updateapp", " no ");
-                    intent.putExtra("rebootcmd", "reboot");
-                    intent.setComponent(cnA);
-
-                    startActivity(intent);
-                }
-            }
-        }
-        catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-        }
-        catch( Exception e )
-        {
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
-        }
-    }
-
-
-
-
-    private DialogUtil mDialog;
-    // open resetConfirm Dialog
-    private void resetConfirmDialog() {
-        mDialog = new DialogUtil(mActivity);
-        String title = mActivity.getString(R.string.admin_system_reset);
-        String message = "단말기를 초기화 하시겠습니까?";
-
-        DialogInterface.OnClickListener positiveListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        dialog.dismiss();
-
-                        doSystemReset();
-                    }
-                };
-
-        DialogInterface.OnClickListener negativeListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        dialog.dismiss();
-                    }
-                };
-
-        mDialog.openCommonDialog(title, message, positiveListener, negativeListener);
-    }
-
-
-    // open resetNoti Dialog
-    private void resetNotiDialog(final String message) {
-        mDialog = new DialogUtil(mActivity);
-        String title = mActivity.getString(R.string.admin_system_reset);
-
-        DialogInterface.OnClickListener positiveListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        dialog.dismiss();
-                    }
-                };
-
-        mDialog.openCommonDialog(title, message, positiveListener, null);
-    }
-
-
-    // close Dialog
-    private void closeDialog() {
-        if (mDialog != null) {
-            mDialog.closeDialog();
-            mDialog = null;
-        }
-    }
-
-
-
-    private boolean CreateLedTxtFile()
-    {
-        FileOutputStream fos = null;
-        boolean result = false;
-        String testStr = "For Led Button Reset";
-        File savefile = new File(filename);
-        if(savefile.exists())
-        {
-            if (DEBUG)  Log.d(TAG, "try file exist... ");
-            return true;
-        }
-
-        try
-        {
-            if(savefile.exists())
-            {
-                if (DEBUG)  Log.d(TAG, "try file delete... ");
-                FileDelete(savefile);
-            }
-
-            if (DEBUG)  Log.d(TAG, "try file write... ");
-            fos = new FileOutputStream(savefile);
-            fos.write(testStr.getBytes());
-            savefile = null;
-        }
-        catch (IOException e)
-        {
-            result = false;
-        }
-        finally {
-            try {
-                fos.close();
-            } catch (IOException e) {
-                LogUtil.errorLogInfo("", TAG, e);
-            }
-            fos = null;
-            if(savefile!=null && savefile.exists())
-            {
-                result = true;
-            }
-            else
-            {
-                result = false;
-            }
-            return result;
-        }
-
-
-    }
-
-    private synchronized void FileDelete(File file)
-    {
-        if(file!=null && file.exists()) {
-            file.delete();
-        }
-    }
-
-}
+package com.artncore.managersetting.ui.fragments;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import kr.co.icontrols.v40ioctl.V40IF;
+import kr.co.icontrols.wallpadsupport.Version;
+import android.app.Activity;
+import android.content.ComponentName;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.media.AudioManager;
+import android.os.Bundle;
+import android.os.Environment;
+import android.provider.Settings;
+//import android.support.v4.app.Fragment;
+import androidx.fragment.app.Fragment;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+import android.widget.Button;
+import android.widget.TextView;
+
+import com.artncore.WallPadDataMgr.WallpadStatusData;
+import com.artncore.WallPadDataMgr.wallpaddbmgr;
+import com.artncore.managersetting.domain.Const;
+import com.artncore.managersetting.ui.activities.MainActivity;
+import com.artncore.managersetting.util.DialogUtil;
+import com.artncore.wallpadapi.WallPadAPI;
+import com.artncore.managersetting.R;
+import com.artncore.commons.define;
+
+/**
+ * A fragment representing a single Item detail screen. This fragment is either
+ * contained in a {@link MainActivity} in two-pane mode (on tablets) or a
+ * {link ItemDetailActivity} on handsets.
+ */
+public class AdminSystemResetFragment extends Fragment {
+    private static final String TAG = "AdminSystemResetFragment";
+
+    private final boolean DEBUG = true;
+
+    private Activity mActivity;
+    private WallPadAPI mWallPadAPI;
+    TextView textView_led_result;
+
+    final String location = define.BASE_STORAGE_LOCATION + "/wallpaddata";
+
+    final String filename = define.BASE_STORAGE_LOCATION + "/led_button_reset.txt";
+
+    // constructor
+    public AdminSystemResetFragment() {
+    }
+
+    @Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+
+        mActivity = activity;
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        if (DEBUG)  Log.d(TAG, "onCreate() ");
+
+        super.onCreate(savedInstanceState);
+
+        mWallPadAPI = MainActivity.getWallPadAPI();
+
+        /*String testPath1 = Environment.getExternalStorageDirectory().getAbsolutePath() + "/wallpaddata";
+        File f = new File(testPath1);
+        File[] files = f.listFiles();
+
+        for(int i = 0; i < files.length; i++)
+        {
+            Log.i(TAG, "testPath1 [" + i + "] = " + files[i]);
+        }
+
+        String testPath2 = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Bestin";
+        File f2 = new File(testPath2);
+        File[] files2 = f2.listFiles();
+
+        for(int i = 0; i < files2.length; i++)
+        {
+            Log.i(TAG, "testPath2 [" + i + "] = " + files2[i]);
+        }
+
+        String testPath3 = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Bestin/";
+        File f3 = new File(testPath3);
+        File[] files3 = f3.listFiles();
+
+        for(int i = 0; i < files3.length; i++)
+        {
+            Log.i(TAG, "testPath3 [" + i + "] = " + files3[i]);
+        }*/
+
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+                             Bundle savedInstanceState) {
+        View rootView = (View) inflater.inflate(R.layout.system_reset_container,
+                container, false);
+
+        return (View)rootView;
+    }
+
+    @Override
+    public void onViewCreated(View view, Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+
+        if (savedInstanceState != null) {}
+
+        Button btnReset = (Button)view.findViewById(R.id.btn_reset);
+        btnReset.setOnClickListener(mButtonClick);
+
+        Button btnLedReset = (Button)view.findViewById(R.id.btn_led_reset);
+        btnLedReset.setOnClickListener(mButtonClick);
+
+        textView_led_result = (TextView)view.findViewById(R.id.txtview_led_reset_result);
+
+        File savefile = new File(filename);
+        if(savefile.exists())
+        {
+            if (DEBUG)  Log.d(TAG, "try file exist... ");
+            textView_led_result.setText("설정되었습니다.");
+        }
+        else
+        {
+            textView_led_result.setText("설정되지 않았습니다.");
+        }
+
+    }
+
+
+    private View.OnClickListener mButtonClick = new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+
+            MainActivity.setFinishTimerReset();
+            //mWpadSound.Play(SND.effect.TOUCH_LATCHED);
+            switch(v.getId())
+            {
+                case R.id.btn_reset:
+                    resetConfirmDialog();
+                    break;
+
+                case R.id.btn_led_reset:
+                    if (DEBUG)  Log.d(TAG, "btn_led_reset() ");
+                    boolean result = CreateLedTxtFile();
+                    if(result == true)
+                    {
+                        textView_led_result.setText("결과: 성공");
+                        if (DEBUG)  Log.d(TAG, "file write success");
+                    }
+                    else
+                    {
+                        textView_led_result.setText("결과: 실패");
+                        if (DEBUG)  Log.d(TAG, "file write fail");
+                    }
+
+                    break;
+                default:
+                    break;
+            }
+
+        }
+    };
+
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+
+        closeDialog();
+    }
+
+
+    @Override
+    public void onDetach() {
+        super.onDetach();
+
+        mWallPadAPI = null;
+    }
+
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+    }
+
+
+    // delete Files & directories
+    public boolean deleteFiles(String path) {
+        boolean bSuccess = true;
+        //Log.i(TAG, "[deleteFiles] path = " + path);
+
+        File file = new File(path);
+
+        if (file.exists()) {
+            String deleteCmd = "rm -r " + path;
+            Runtime runtime = Runtime.getRuntime();
+            try {
+                runtime.exec(deleteCmd);
+            } catch (IOException e) {
+
+                bSuccess = false;
+            }
+        }
+
+        if(DEBUG) Log.d(TAG," deleteFiles() " + path + " : " + bSuccess);
+
+        return bSuccess;
+    }
+
+
+
+    private String WALLPAD_DB_NAME = "WallpadDB.db";
+    private String WALLPAD_DB_JOURNAL_NAME = "WallpadDB.db-journal";
+
+    // delete all Contents
+    boolean deleteContents() {
+        //boolean bDelete_1 = deleteContents(Const.CONTENTS_ROOT);
+        //boolean bDelete_2 = deleteContents(Const.BESTIN_CONTENTS_ROOT);
+
+        boolean bDelete_1 = deleteContents(Environment.getExternalStorageDirectory().getAbsolutePath() + "/wallpaddata");
+        boolean bDelete_2 = deleteContents(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Bestin");
+
+        if(DEBUG) Log.d(TAG," deleteContents() " + (bDelete_1 && bDelete_2));
+
+        return (bDelete_1 && bDelete_2);
+    }
+
+
+    // delete Contents
+    boolean deleteContents(String strPath) {
+        boolean bSuccess = true;
+
+        if (strPath == null) {
+            bSuccess = false;
+        }
+        else {
+            File f = new File(strPath);
+            File[] files = f.listFiles();
+
+            /*for(int i = 0; i < files.length; i++)
+            {
+                Log.i(TAG, "file list[" + i + "] = " + files[i]);
+            }*/
+
+            if (files != null) {
+                for (int i = 0; i < files.length; i++) {
+                    File file = files[i];
+
+                    if (file.isDirectory()) {
+                        if(DEBUG) Log.d(TAG," file.isDirectory()");
+
+                        if (deleteFiles(file.getPath()) == false)
+                            bSuccess = false;
+                    } else {
+                        if(DEBUG) Log.d(TAG," !file.isDirectory()");
+
+                        if(!WALLPAD_DB_NAME.equals(file.getName())
+                                && !WALLPAD_DB_JOURNAL_NAME.equals(file.getName())
+                                )
+                        {
+                            if (deleteFiles(file.getName()) == false)
+                                bSuccess = false;
+                        }
+                    }
+                }
+            }
+        }
+
+        if(DEBUG) Log.d(TAG," deleteContents() strPath : " + strPath
+                + ", ret : " + bSuccess);
+
+        return bSuccess;
+    }
+
+
+    // restore DefaultValue
+    private void restoreDefaultValue() {
+        android.provider.Settings.System.putInt(mActivity.getContentResolver()
+                , Settings.System.SCREEN_OFF_TIMEOUT
+                , Const.DEFUALT_SLEEP_TIMEOUT_INTERVAL);
+
+        // volume : 11 (1~15)
+        AudioManager audioManager = (AudioManager) mActivity.getSystemService(Context.AUDIO_SERVICE);
+        int streamType = AudioManager.STREAM_SYSTEM;
+        int volumeMaximum = audioManager.getStreamMaxVolume(streamType);
+        int defalutVolume = (volumeMaximum * Const.DEFUALT_VOLUME) / 15;
+
+        audioManager.setStreamVolume(streamType
+                , defalutVolume
+                , 0);
+
+        // brightness : 5 (1~5)
+        final ContentResolver resolver = mActivity.getContentResolver();
+        Settings.System.putInt(resolver,
+                Settings.System.SCREEN_BRIGHTNESS, Const.DEFUALT_BRIGHTNESS);
+    }
+
+
+    // do SystemReset
+    private void doSystemReset() {
+        try
+        {
+            if (deleteContents()) {
+                restoreDefaultValue();
+
+                // 메인쪽에 있는 초기화 코드 옮김 , 메인쪽에서 할 이유가 없음
+                File delFile = new File(wallpaddbmgr.dblocation+"/"+wallpaddbmgr.WallpadDB);
+				//Log.d(TAG, "delFile size 1-1 = " + delFile.length() );
+                delFile.delete();
+                //Log.d(TAG, "delFile exist 1 = " + delFile.exists());
+				//Log.d(TAG, "delFile size 1-2 = " + delFile.length() );
+
+
+                delFile = new File(wallpaddbmgr.dblocation+"/"+wallpaddbmgr.WallpadDB+"-journal");
+				//Log.d(TAG, "delFile size 2-1 = " + delFile.length() );
+                delFile.delete();
+                //Log.d(TAG, "delFile exist 2 = " + delFile.exists());
+				//Log.d(TAG, "delFile size 2-2 = " + delFile.length() );
+
+                // DB 기본 데이터 생성하는 코드 추가하길 바람
+
+
+                WallpadStatusData wpd = new WallpadStatusData(mActivity);
+                wpd.SetDevStatus(WallpadStatusData.DEV_INIT, "NULL");
+                wpd.closeDB();
+
+                try {Thread.sleep(1000);}catch (Exception e){e.printStackTrace();}
+
+                if (Version.getPlatformType() == Version.PLATFORM_TYPE.A20) {
+                    //PowerManager pm = (PowerManager)mActivity.getSystemService(Context.POWER_SERVICE);
+                    //pm.userActivity(8, true);
+                    getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
+                }
+                else if (Version.getPlatformType() == Version.PLATFORM_TYPE.A40i) {
+                    V40IF mV40IF = new V40IF();
+                    Log.d(TAG, "System Initialize !!! -> Do Reboot !!!");
+                    mV40IF.setV40Reboot(5);
+                }
+                else {
+                    //finish();
+                    ComponentName cnA = new ComponentName("com.artncore.updater", "com.artncore.updater.MainActivity");
+                    Intent intent = new Intent(Intent.ACTION_MAIN);
+                    intent.addCategory(Intent.CATEGORY_LAUNCHER);
+                    intent.putExtra("updatesystem", "no");
+                    intent.putExtra("updateapp", " no ");
+                    intent.putExtra("rebootcmd", "reboot");
+                    intent.setComponent(cnA);
+
+                    startActivity(intent);
+                }
+            }
+        }
+        catch( Exception e )
+        {
+            e.printStackTrace();
+        }
+    }
+
+
+
+
+    private DialogUtil mDialog;
+    // open resetConfirm Dialog
+    private void resetConfirmDialog() {
+        mDialog = new DialogUtil(mActivity);
+        String title = mActivity.getString(R.string.admin_system_reset);
+        String message = "단말기를 초기화 하시겠습니까?";
+
+        DialogInterface.OnClickListener positiveListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        dialog.dismiss();
+
+                        doSystemReset();
+                    }
+                };
+
+        DialogInterface.OnClickListener negativeListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        dialog.dismiss();
+                    }
+                };
+
+        mDialog.openCommonDialog(title, message, positiveListener, negativeListener);
+    }
+
+
+    // open resetNoti Dialog
+    private void resetNotiDialog(final String message) {
+        mDialog = new DialogUtil(mActivity);
+        String title = mActivity.getString(R.string.admin_system_reset);
+
+        DialogInterface.OnClickListener positiveListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        dialog.dismiss();
+                    }
+                };
+
+        mDialog.openCommonDialog(title, message, positiveListener, null);
+    }
+
+
+    // close Dialog
+    private void closeDialog() {
+        if (mDialog != null) {
+            mDialog.closeDialog();
+            mDialog = null;
+        }
+    }
+
+
+
+    private boolean CreateLedTxtFile()
+    {
+        String testStr = "For Led Button Reset";
+        File savefile = new File(filename);
+        if(savefile.exists())
+        {
+            if (DEBUG)  Log.d(TAG, "try file exist... ");
+            return true;
+        }
+
+        try
+        {
+            if(savefile.exists())
+            {
+                if (DEBUG)  Log.d(TAG, "try file delete... ");
+                savefile.delete();
+            }
+
+            if (DEBUG)  Log.d(TAG, "try file write... ");
+            FileOutputStream fos = new FileOutputStream(savefile);
+            fos.write(testStr.getBytes());
+            fos.close();
+        }
+        catch (IOException e)
+        {
+            return false;
+        }
+
+        if(savefile.exists())
+        {
+            return true;
+        }
+        else
+        {
+            return false;
+        }
+    }
+
+}

+ 1638 - 1656
ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/CheckControllerFragment.java

@@ -1,1656 +1,1638 @@
-package com.artncore.managersetting.ui.fragments;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import kr.co.icontrols.wallpadsupport.Version;
-import kr.co.icontrols.wallpadsupport.WpadSound;
-import kr.co.icontrols.wallpadsupport.WpadSound.SND;
-import android.app.Activity;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.os.Bundle;
-//import android.support.v4.app.Fragment;
-import androidx.fragment.app.Fragment;
-import androidx.core.view.MotionEventCompat;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.View.OnTouchListener;
-import android.view.ViewGroup;
-import android.widget.AdapterView;
-import android.widget.AdapterView.OnItemSelectedListener;
-import android.widget.ArrayAdapter;
-import android.widget.Button;
-import android.widget.ScrollView;
-import android.widget.Spinner;
-import android.widget.TextView;
-
-
-import com.artncore.WallPadDataMgr.WallpadDeviceSet;
-import com.artncore.managersetting.R;
-import com.artncore.managersetting.dao.MainDatabaseManager;
-import com.artncore.managersetting.domain.Const;
-import com.artncore.managersetting.domain.ControllerVO;
-import com.artncore.managersetting.ui.activities.MainActivity;
-import com.artncore.managersetting.util.StringUtil;
-import com.artncore.wallpadapi.CutOffConcentAPI;
-import com.artncore.wallpadapi.ElectricRange_API;
-import com.artncore.wallpadapi.EnergyMeterAPI;
-import com.artncore.wallpadapi.EnergyModuleAPI;
-import com.artncore.wallpadapi.LedDimmingKCC_API;
-import com.artncore.wallpadapi.MultiSwitchAPI;
-import com.artncore.wallpadapi.PhonNRemocon;
-import com.artncore.wallpadapi.WallPadAPI;
-import com.artncore.wallpadapi.WallPadDevAPI;
-import com.util.LogUtil;
-
-/**
- * A list fragment representing a list of Items. This fragment also supports
- * tablet devices by allowing list items to be given an 'activated' state upon
- * selection. This helps indicate which item is currently being viewed in a
- * {link ItemDetailFragment}.
- * <p>
- * Activities containing this fragment MUST implement the {link Callbacks}
- * interface.
- */
-public class CheckControllerFragment extends Fragment {
-    private static final String TAG = "CheckControllerFragment";
-
-    private final boolean DEBUG = true;
-    private final boolean DEBUG_TIME = true;
-
-
-
-    private Activity mActivity;
-    private WpadSound mWpadSound;
-    private WallPadAPI mWallPadAPI;
-    private MainDatabaseManager mMainDatabaseManager;
-
-    private CallEventReceiver mCallEventReceiver;
-
-    private List<ControllerVO> mControllerList = new ArrayList<ControllerVO>();
-    private TextView mTV_Result;
-    private int mNumber = 1;
-
-    private int mSelectedIdx = -1;
-
-    private String Temp_TYPE_DOOR_CAMERA_CONTROL;
-    private String Temp_TYPE_LIGHT_BATCH_CONTROL;
-
-    // 0: not used, 1: 대외 기본형, 2: 대외 각실형, 3:현산향일체형조명기본형, 4:현산향일체형조명일괄소등병합형
-    private int lightType = 0;
-
-    private int[] doorType = null;
-
-    //[Model]
-    private int ModelType = Version.getModelType();
-    //private int ModelType = Version.MODEL_TYPE.IHN_1020B_A;
-
-
-    // constructor
-    public CheckControllerFragment() {
-    }
-
-    @Override
-    public void onAttach(Activity activity) {
-        super.onAttach(activity);
-
-        mActivity = activity;
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        if (DEBUG)  Log.d(TAG, "onCreate() ");
-
-        super.onCreate(savedInstanceState);
-
-        mWallPadAPI = MainActivity.getWallPadAPI();
-        mMainDatabaseManager = MainActivity.getMainDatabaseManager();
-
-        mWpadSound = MainActivity.getWpadSound();
-        mCallEventReceiver = new CallEventReceiver();
-
-        try
-        {
-            WallpadDeviceSet wds = new WallpadDeviceSet(getContext());
-            doorType = wds.Get_DoorLock_Info();
-            wds.closeDB();
-        }
-        catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
-        }
-        catch (Exception e)
-        {
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
-        }
-
-        getController();
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-        View rootView = (View) inflater.inflate(R.layout.check_controller_container,
-                container, false);
-
-        return (View)rootView;
-    }
-
-    @Override
-    public void onViewCreated(View view, Bundle savedInstanceState) {
-        super.onViewCreated(view, savedInstanceState);
-
-        if (savedInstanceState != null) {}
-
-        Spinner controllerSpinner = (Spinner)view.findViewById(R.id.controller_spinner);
-        Button btnTest = (Button)view.findViewById(R.id.btn_test);
-        mTV_Result = (TextView)view.findViewById(R.id.tv_result);
-
-        ScrollView mScrollView = (ScrollView) view.findViewById(R.id.check_controller_scrollview);
-        mScrollView.setOnTouchListener(new OnTouchListener() {
-
-            @Override
-            public boolean onTouch(View v, MotionEvent event) {
-                switch (MotionEventCompat.getActionMasked(event)) {
-
-                    case MotionEvent.ACTION_UP:
-                        MainActivity.setFinishTimerReset();
-                        break;
-
-                    default:
-                        break;
-                }
-                return false;
-            }
-        });
-
-//        ArrayAdapter controllerAdapter = new ArrayAdapter(mActivity
-//                                                        , android.R.layout.simple_spinner_item
-//                                                         , mControllerList);
-
-        if (DEBUG)  Log.d(TAG, "mControllerList.size() : " + mControllerList.size());
-
-
-        ArrayAdapter controllerAdapter = new ControllerArrayAdapter(mActivity
-                , android.R.layout.simple_spinner_item
-                , mControllerList);
-
-
-        controllerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
-        controllerSpinner.setAdapter(controllerAdapter);
-        controllerSpinner.setPrompt("select controller");
-
-        controllerSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
-            @Override
-            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
-                if (DEBUG)  Log.d(TAG, "onItemSelected() position : " + position);
-
-                MainActivity.setFinishTimerReset();
-                mSelectedIdx = position;
-            }
-
-            @Override
-            public void onNothingSelected(AdapterView<?> parent) {
-            }
-        });
-
-
-
-        btnTest.setOnClickListener(mButtonClick);
-    }
-
-
-
-    @Override
-    public void onResume() {
-        if (DEBUG)  Log.d(TAG, "onResume() ");
-
-        super.onResume();
-
-        registerBroadCastReceiver();
-    }
-
-
-    @Override
-    public void onPause() {
-        if (DEBUG)  Log.d(TAG, "onPause() ");
-
-        super.onPause();
-        unregisterBroadCastReceiver();
-    }
-
-
-
-    @Override
-    public void onDetach() {
-        super.onDetach();
-
-        mWallPadAPI = null;
-    }
-
-
-    @Override
-    public void onSaveInstanceState(Bundle outState) {
-        super.onSaveInstanceState(outState);
-    }
-
-
-    public class ControllerArrayAdapter extends ArrayAdapter {
-        private static final String TAG = "ControllerArrayAdapter";
-
-        private int mLayoutId;
-
-        private Context mContext;
-        private int m_nSelectedPos = -1;
-
-        // constructor
-        public ControllerArrayAdapter(Context context, int layoutId, List contollerList) {
-            super(context, layoutId, contollerList);
-            mContext = context;
-            mLayoutId = layoutId;
-        }
-
-
-        @Override
-        public Object getItem(int position) {
-            ControllerVO item = (ControllerVO)super.getItem(position);
-
-            if (DEBUG)  Log.d(TAG, "getItem(" + position + ") : " + item.getName());
-
-            return item.getName();
-        }
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-    // add all Controll to ControllerList
-    private void getController() {
-
-        if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ZERO_ENERGY_HOUSE) == false)
-        {
-            getLightControllerList();
-            addControllerVO(Const.CONTROLLER_TYPE_GAS);
-            //addControllerVO(Const.CONTROLLER_TYPE_ELECTRIC_RANGE1);
-            getElectricRangeList();
-            addControllerVO(Const.CONTROLLER_TYPE_VENTILATION);
-        }
-
-        addControllerVO(Const.CONTROLLER_TYPE_HEATER);
-
-        if (Version.getGatewayUsage()) {
-            addControllerVO(Const.CONTROLLER_TYPE_DOOR_LOCK);
-        }
-
-//      addControllerVO(Const.CONTROLLER_TYPE_DOOR_LOCK_WIRED);
-//      addControllerVO(Const.CONTROLLER_TYPE_DOOR_LOCK_WIRELESS);
-//      addControllerVO(Const.CONTROLLER_TYPE_ELECTRICALLY_CURTAIN);
-//      addControllerVO(Const.CONTROLLER_TYPE_SYSTEM_AIRCON);
-
-        addControllerVO(Const.CONTROLLER_TYPE_LIGHT_BATCH_CONTROLL);
-        addControllerVO(Const.CONTROLLER_TYPE_REALTIME_MEASURING_METER);
-
-        if (ModelType == Version.MODEL_TYPE.IHN_1020GL) {
-            getIEnergyControllerList();
-            getEnergyModuleControllerList();
-            getIdlePowerSavingSwitchControllerList();
-            addControllerVO(Const.CONTROLLER_TYPE_HDC_GATEWAY);
-        }
-        else if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ZERO_ENERGY_HOUSE)) {
-            getIEnergyControllerList();
-            getEnergyModuleControllerList();
-        }
-
-        if (ModelType != Version.MODEL_TYPE.IHN_1020GL) {
-            getDimmingKCC_ControllerList();
-        }
-
-        addControllerVO(Const.CONTROLLER_TYPE_RF_DOOR_CAMERA);
-
-        addControllerVO(Const.CONTROLLER_TYPE_BATH_PHONE);
-        addControllerVO(Const.CONTROLLER_TYPE_KICHEN_TV);
-
-        if (ModelType == Version.MODEL_TYPE.IHN_D101 || ModelType == Version.MODEL_TYPE.IHN_D101_I
-                || ModelType == Version.MODEL_TYPE.IHN_D101K || ModelType == Version.MODEL_TYPE.IHN_D101K_I) {
-            addControllerVO(Const.CONTROLLER_TYPE_SMART_DIST);
-            addControllerVO(Const.CONTROLLER_TYPE_SMART_DIST_LIVEM);
-            addControllerVO(Const.CONTROLLER_TYPE_IGW300);
-            addControllerVO(Const.CONTROLLER_TYPE_SENSOR_AP);
-            addControllerVO(Const.CONTROLLER_TYPE_INNERROOM_DETECT_SENSOR);
-        }
-        else if (ModelType == Version.MODEL_TYPE.IHN_1010GL || ModelType == Version.MODEL_TYPE.IHN_1010GL_I) {
-            addControllerVO(Const.CONTROLLER_TYPE_IGW300);
-        }
-
-        if (DEBUG)  Log.d(TAG, "mControllerList.size() : " + mControllerList.size());
-    }
-
-
-
-    // add LightController to ControllerList
-    private void getLightControllerList() {
-        if (mWallPadAPI != null) {
-
-            int lightCurrentCount = 0;
-            String strType = null;
-
-            List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LIGHT);
-            if ((InfoList != null) && (InfoList.size() > 5)) {
-                if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
-                    int circuitNo = StringUtil.getInt(InfoList.get(1), false);
-                    if ((circuitNo > -1) && (circuitNo <= Const.CONTROLLER_LIGHT_MAX_COUNT + 1))
-                        lightCurrentCount = circuitNo - 1;
-
-                    strType = InfoList.get(5);
-
-                    if (Const.LIGHT_CONTROLLER_TYPE_LIVING_ROOM.equals(strType)) {
-                        lightType = 1;
-                        strType = "조명 - "+Const.LIGHT_CONTROLLER_TYPE_LIVING_ROOM;
-                    }
-                    else if (Const.LIGHT_CONTROLLER_TYPE_ROOMS.equals(strType)) {
-                        lightType = 2;
-                        strType = "조명 - "+Const.LIGHT_CONTROLLER_TYPE_ROOMS;
-                    }
-                    else if (Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_NORMAL.equals(strType)) {
-                        lightType = 3;
-                        strType = "조명 - "+Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_NORMAL;
-                    }
-                    else if (Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT.equals(strType)) {
-                        lightType = 4;
-                        strType = "조명 - "+Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT;
-                    }
-                    else if (Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT_MULTISWITCH.equals(strType)) {
-                        lightType = 4;
-                        strType = "조명 - "+Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT_MULTISWITCH;
-                    }
-                }
-            }
-
-            if (DEBUG)  Log.d(TAG, "getLightControllerList() lightType : " + lightType);
-
-            switch (lightType) {
-                case 1: // 대외 기본형
-                case 3://현산향일체형조명기본형
-                case 4://현산향일체형일괄소등병합형
-                {
-                    String lightControllerName = strType;
-                    int type = Const.CONTROLLER_TYPE_LIGHT_LIVING_ROOM;
-                    ControllerVO listControllerVO1
-                            = new ControllerVO(type
-                            , lightControllerName
-                            , 0
-                            , 0);
-
-                    mControllerList.add(listControllerVO1);
-
-                    if(lightType == 3)
-                    {
-                        String All_lightControllerName = "현산 일괄소등릴레이";
-                        int typeAll_light = Const.CONTROLLER_TYPE_HDC_ALLLIGHT;
-                        ControllerVO listControllerVO2
-                                = new ControllerVO(typeAll_light
-                                , All_lightControllerName
-                                , 0
-                                , 0);
-
-                        mControllerList.add(listControllerVO2);
-                    }
-                }
-                break;
-
-                case 2: // rooms
-                {
-                    int multiSwitchCount = 0;
-
-                    MultiSwitchAPI multiSwitchAPI = mWallPadAPI.Get_MultiSwitchController();
-
-                    if(multiSwitchAPI == null){return ;}
-
-                    int ret = multiSwitchAPI.Refresh((byte)0xFF, false);
-                    if (ret == 0) {
-                        multiSwitchCount = multiSwitchAPI.data.DeviceCnt;
-                    }
-
-                    if (DEBUG)  Log.d(TAG, "getLightControllerList() multiSwitchCount : " + multiSwitchCount);
-
-                    for (int i=0; i<multiSwitchCount; i++) {
-                        String lightControllerName = mActivity.getString(R.string.contoller_light_multi_switch) + " - " + (i+1);
-                        int type = Const.CONTROLLER_TYPE_LIGHT_ROOMS_0 + i;
-                        ControllerVO listControllerVO
-                                = new ControllerVO(type
-                                , lightControllerName
-                                , 0
-                                , 0);
-
-                        mControllerList.add(listControllerVO);
-                    }
-                }
-                break;
-
-                default:
-                    break;
-            }
-        }
-    }
-
-    private void getElectricRangeList()
-    {
-        if (mWallPadAPI != null)
-        {
-            if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ELECTRIC_RANGE) == true)
-            {
-                int electricRangeCount = 0;
-
-                ElectricRange_API electricRange_api = mWallPadAPI.Get_ElectricRange_API();
-
-                if(electricRange_api == null){return ;}
-
-                int ret = electricRange_api.Refresh((byte)0xFF, false);
-                if (ret == 0) {
-                    electricRangeCount = electricRange_api.data.DeviceCnt;
-                }
-
-                if (DEBUG)  Log.d(TAG, "addControllerVO() electricRangeCount : " + electricRangeCount);
-
-                for (int i=0; i<electricRangeCount; i++) {
-                    String lightControllerName = mActivity.getString(R.string.contoller_electric_range) + " - " + (i+1);
-                    int type = Const.CONTROLLER_TYPE_ELECTRIC_RANGE1 + i;
-                    ControllerVO listControllerVO
-                            = new ControllerVO(type
-                            , lightControllerName
-                            , 0
-                            , 0);
-
-                    mControllerList.add(listControllerVO);
-                }
-            }
-        }
-    }
-
-
-
-    private void getIEnergyControllerList()
-    {
-        if (mWallPadAPI != null)
-        {
-            int IEnergyCount = 0;
-            List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ENERGY_DEVICES);
-            if ((InfoList != null) && (InfoList.size() > 3))
-            {
-                if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3)))
-                {
-                    EnergyMeterAPI energyMeterAPI = mWallPadAPI.Get_EnergyMeterController();
-
-                    if(energyMeterAPI == null){return ;}
-
-                    int ret = energyMeterAPI.Refresh((byte) 0xFF, false);
-                    if (ret == 0)
-                    {
-                        IEnergyCount = energyMeterAPI.data.RoomCnt;
-                    }
-                    if (DEBUG) Log.d(TAG, "getIEnergyControllerList() IEnergyCount : " + IEnergyCount);
-
-                    for (int i = 0; i < IEnergyCount; i++)
-                    {
-                        String energyMeterControllerName = InfoList.get(2) + "(에너지미터)" + " - " + (i+1);
-                        int type = Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_1 + i;
-                        ControllerVO listControllerVO = new ControllerVO(type, energyMeterControllerName, 0, 0);
-                        mControllerList.add(listControllerVO);
-                    }
-                }
-            }
-        }
-    }
-
-    private void getEnergyModuleControllerList()
-    {
-        if (mWallPadAPI != null)
-        {
-            int RoomCount = 0;
-
-            List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ENERGY_MODULE);
-            if ((InfoList != null) && (InfoList.size() > 3))
-            {
-                if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3)))
-                {
-
-                    EnergyModuleAPI energyModuleAPI = mWallPadAPI.Get_EnergyModuleController();
-
-                    if(energyModuleAPI == null){return ;}
-
-                    int ret = energyModuleAPI.Refresh((byte) 0xFF, false);
-                    if (ret == 0)
-                    {
-                        RoomCount = energyModuleAPI.data.DeviceCnt;
-                    }
-                    if (DEBUG) Log.d(TAG, "getEnergyModuleControllerList() RoomCount : " + RoomCount);
-
-                    for (int i = 0; i < RoomCount; i++)
-                    {
-                        String ControllerName = mActivity.getString(R.string.setting_energy_energy_module) + " - " + (i + 1);
-                        int type = Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_1 + i;
-                        ControllerVO listControllerVO = new ControllerVO(type, ControllerName, 0, 0);
-                        mControllerList.add(listControllerVO);
-                    }
-                }
-            }
-        }
-    }
-
-    private void getIdlePowerSavingSwitchControllerList()
-    {
-        if (mWallPadAPI != null)
-        {
-            int RoomCount = 0;
-
-            List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_IDLE_POWER_SAVING_SWITCH);
-            if ((InfoList != null) && (InfoList.size() > 3))
-            {
-                if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3)))
-                {
-                    CutOffConcentAPI cutOffConcentAPI = mWallPadAPI.Get_CutOffConcentController();
-
-                    if(cutOffConcentAPI == null){return ;}
-
-                    int ret = cutOffConcentAPI.Refresh((byte) 0xFF, false);
-                    if (ret == 0)
-                    {
-                        RoomCount = cutOffConcentAPI.data.DeviceCnt;
-                    }
-                    if (DEBUG) Log.d(TAG, "getIdlePowerSavingSwitchControllerList() RoomCount : " + RoomCount);
-
-                    for (int i = 0; i < RoomCount; i++)
-                    {
-                        String ControllerName = mActivity.getString(R.string.setting_energy_idle_power_saving_switch) + " - " + (i + 1);
-                        int type = Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_1 + i;
-                        ControllerVO listControllerVO = new ControllerVO(type, ControllerName, 0, 0);
-                        mControllerList.add(listControllerVO);
-                    }
-                }
-            }
-        }
-    }
-
-    private void getDimmingKCC_ControllerList()
-    {
-        if (mWallPadAPI != null)
-        {
-            int RoomCount = 0;
-
-            List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DIMMING_KCC);
-            if ((InfoList != null) && (InfoList.size() > 3))
-            {
-                if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3)))
-                {
-                    LedDimmingKCC_API ledDimmingKCC_API = mWallPadAPI.Get_KCCDimmingController();
-
-                    if(ledDimmingKCC_API == null){return ;}
-
-                    int ret = ledDimmingKCC_API.Refresh((byte) 0, false);
-
-                    if (DEBUG) Log.d(TAG, "getDimmingKCC_ControllerList() RoomCount : " + RoomCount);
-
-                    String ControllerName = mActivity.getString(R.string.contoller_dimming_kcc);
-                    int type = Const.CONTROLLER_TYPE_DIMMING_KCC;
-                    ControllerVO listControllerVO = new ControllerVO(type, ControllerName, 0, 0);
-                    mControllerList.add(listControllerVO);
-                }
-            }
-        }
-    }
-
-
-    // add Controller to ControllerList
-    private void addControllerVO(int type) {
-        ControllerVO controllerVO = null;
-
-        switch (type) {
-            case Const.CONTROLLER_TYPE_GAS:
-            {
-                String controllerName = mActivity.getString(R.string.contoller_gas);
-
-                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_GAS) == true)
-                {
-                    controllerVO = new ControllerVO(type
-                            , controllerName
-                            , 0
-                            , 0);
-                }
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_HEATER:
-            {
-                String controllerName = mActivity.getString(R.string.contoller_heater);
-
-                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_HEATER) == true)
-                {
-                    controllerVO = new ControllerVO(type
-                            , controllerName
-                            , 0
-                            , 0);
-                }
-            }
-            break;
-
-
-            case Const.CONTROLLER_TYPE_DOOR_LOCK:
-            {
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DOOR_LOCK);
-                if ((InfoList != null) && (InfoList.size() > 5)) {
-                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
-
-                        String controllerName = InfoList.get(2) + " - " + InfoList.get(5);
-                        controllerVO = new ControllerVO(type
-                                , controllerName
-                                , 0
-                                , 0);
-                    }
-                }
-            }
-            break;
-
-/*
-            case Const.CONTROLLER_TYPE_DOOR_LOCK_WIRED:
-            {
-                String controllerName = mActivity.getString(R.string.contoller_door_lock_wired);
-
-                // TO DO
-//                if (mWallpadStatusData.GetHeatingCNT() > 0) {
-//                    controllerVO = new ControllerVO(type
-//                                                    , controllerName
-//                                                    , 0
-//                                                    , 0);
-//                }
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_DOOR_LOCK_WIRELESS:
-            {
-                String controllerName = mActivity.getString(R.string.contoller_door_lock_wireless);
-
-                // TO DO
-//                if (mWallpadStatusData.GetHeatingCNT() > 0) {
-//                    controllerVO = new ControllerVO(type
-//                                                    , controllerName
-//                                                    , 0
-//                                                    , 0);
-//                }
-            }
-            break;
-*/
-
-            case Const.CONTROLLER_TYPE_VENTILATION:
-            {
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_VENTILATION);
-                if ((InfoList != null) && (InfoList.size() > 5)) {
-                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
-
-                        String controllerName = InfoList.get(2) + " - " + InfoList.get(5);
-                        controllerVO = new ControllerVO(type
-                                , controllerName
-                                , 0
-                                , 0);
-                    }
-                }
-            }
-            break;
-
-/*
-            case Const.CONTROLLER_TYPE_ELECTRICALLY_CURTAIN:
-            {
-                String controllerName = mActivity.getString(R.string.contoller_electronically_curtain);
-
-                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ELECTRONICALLY_CURTAIN) == true)
-                {
-                    controllerVO = new ControllerVO(type
-                                                    , controllerName
-                                                    , 0
-                                                    , 0);
-                }
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_SYSTEM_AIRCON:
-            {
-                String controllerName = mActivity.getString(R.string.contoller_system_aircon);
-
-                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SYSTEM_AIRCON) == true)
-                {
-                    controllerVO = new ControllerVO(type
-                                                    , controllerName
-                                                    , 0
-                                                    , 0);
-                }
-            }
-            break;
-*/
-
-            case Const.CONTROLLER_TYPE_LIGHT_BATCH_CONTROLL:
-            {
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SMART_SWITCH_LIGHT_AND_BATCH_CONTROL);
-                if ((InfoList != null) && (InfoList.size() > 5)) {
-                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
-
-                        Temp_TYPE_LIGHT_BATCH_CONTROL = InfoList.get(5);
-
-                        String controllerName = InfoList.get(2) + " - " + InfoList.get(5);
-                        controllerVO = new ControllerVO(type
-                                , controllerName
-                                , 0
-                                , 0);
-                    }
-                }
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_REALTIME_MEASURING_METER:
-            {
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_REALTIME_MEASURING_METER);
-                if ((InfoList != null) && (InfoList.size() > 3)) {
-                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
-
-                        String controllerName = InfoList.get(2) + " - " + InfoList.get(1)+"종";
-                        controllerVO = new ControllerVO(type
-                                , controllerName
-                                , 0
-                                , 0);
-                    }
-                }
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_BATH_PHONE:
-            {
-                String controllerName = mActivity.getString(R.string.contoller_bath_phone);
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , 0
-                        , 0);
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_KICHEN_TV:
-            {
-                String controllerName = mActivity.getString(R.string.contoller_kichen_tv);
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , 0
-                        , 0);
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_RF_DOOR_CAMERA:
-            {
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DOOR_CAMERA);
-                if ((InfoList != null) && (InfoList.size() > 3)) {
-                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
-
-                        Temp_TYPE_DOOR_CAMERA_CONTROL = InfoList.get(5);
-                        String controllerName = InfoList.get(2) + " - " + InfoList.get(5);
-
-                        controllerVO = new ControllerVO(type
-                                , controllerName
-                                , 0
-                                , 0);
-
-
-                    }
-                }
-            }
-            break;
-
-
-
-            case Const.CONTROLLER_TYPE_HDC_GATEWAY:
-            {
-                String controllerName = "IGW200D 게이트웨이";
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , 0
-                        , 0);
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_SMART_DIST:
-            {
-                String controllerName = "스마트분전반";
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , 0
-                        , 0);
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_SMART_DIST_LIVEM:
-            {
-                String controllerName = "스마트분전반-거실EM";
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , 0
-                        , 0);
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_IGW300:
-            {
-                String controllerName = "신규게이트웨이(IGW300)";
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , 0
-                        , 0);
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_SENSOR_AP:
-            {
-                String controllerName = "센서AP(미세먼지,CO2)";
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , 0
-                        , 0);
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_INNERROOM_DETECT_SENSOR:
-            {
-                String controllerName = "재실센서";
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , 0
-                        , 0);
-            }
-            break;
-
-        }
-
-        if (controllerVO != null)
-            mControllerList.add(controllerVO);
-    }
-
-
-
-
-    private View.OnClickListener mButtonClick = new View.OnClickListener() {
-        @Override
-        public void onClick(View v) {
-
-            mWpadSound.Play(SND.effect.TOUCH_LATCHED);
-            MainActivity.setFinishTimerReset();
-
-            switch(v.getId())
-            {
-                case R.id.btn_test:
-                {
-                    if (DEBUG)  Log.d(TAG, "onClick() btn_test" );
-
-                    String controllerName = mControllerList.get(mSelectedIdx).getName();
-                    //if (DEBUG)    Toast.makeText(mActivity, controllerName + " test", Toast.LENGTH_SHORT).show();
-
-                    doTestController(mSelectedIdx);
-                }
-                break;
-
-                default:
-                    break;
-            }
-
-        }
-    };
-
-
-    private final int DEFAULT_CONTROLLER_INDEX = 0;
-    // test Controller
-    private void doTestController(int idx) {
-        String result = "";
-        String title = String.valueOf(mNumber++) + ". " ;
-
-        if (DEBUG)  Log.d(TAG, "doTestController() idx : " + idx);
-
-        int type = mControllerList.get(idx).getType();
-
-        if (DEBUG)  Log.d(TAG, "doTestController() type : " + type);
-
-        switch (type) {
-            case Const.CONTROLLER_TYPE_LIGHT_LIVING_ROOM:
-                title += mControllerList.get(idx).getName() + " " + mActivity.getString(R.string.test) + " : ";
-                result = title + resultTestCommonController(type, DEFAULT_CONTROLLER_INDEX);
-                break;
-
-            case Const.CONTROLLER_TYPE_LIGHT_ROOMS_0:
-            case Const.CONTROLLER_TYPE_LIGHT_ROOMS_1:
-            case Const.CONTROLLER_TYPE_LIGHT_ROOMS_2:
-            case Const.CONTROLLER_TYPE_LIGHT_ROOMS_3:
-            case Const.CONTROLLER_TYPE_LIGHT_ROOMS_4:
-            case Const.CONTROLLER_TYPE_LIGHT_ROOMS_5:
-            case Const.CONTROLLER_TYPE_LIGHT_ROOMS_6:
-            case Const.CONTROLLER_TYPE_LIGHT_ROOMS_7:
-                title += mControllerList.get(idx).getName() + " " + mActivity.getString(R.string.test) + " : ";
-                result = title + resultTestCommonController(type, type - Const.CONTROLLER_TYPE_LIGHT_ROOMS_0);
-                break;
-
-            case Const.CONTROLLER_TYPE_GAS:
-                title += mControllerList.get(idx).getName() + " " + mActivity.getString(R.string.test) + " : ";
-                result = title + resultTestCommonController(type, DEFAULT_CONTROLLER_INDEX);
-                break;
-
-            case Const.CONTROLLER_TYPE_ELECTRIC_RANGE1:
-            case Const.CONTROLLER_TYPE_ELECTRIC_RANGE2:
-                title += mControllerList.get(idx).getName() + " " + mActivity.getString(R.string.test) + " : ";
-                result = title + resultTestCommonController(type, type - Const.CONTROLLER_TYPE_ELECTRIC_RANGE1);
-                break;
-
-
-            case Const.CONTROLLER_TYPE_HEATER:
-                title += mControllerList.get(idx).getName() + " " + mActivity.getString(R.string.test) + " : ";
-                result = title + resultTestCommonController(type, DEFAULT_CONTROLLER_INDEX);
-                break;
-
-
-/*
-            case Const.CONTROLLER_TYPE_DOOR_LOCK_WIRED:
-                title += mControllerList.get(idx).getName() + " " + mActivity.getString(R.string.test) + " : ";
-                result = title + resultTestDoorLockWiredController();
-                break;
-
-            case Const.CONTROLLER_TYPE_DOOR_LOCK_WIRELESS:
-                title += mControllerList.get(idx).getName() + " " + mActivity.getString(R.string.test) + " : ";
-                result = title + resultTestDoorLockWirelessController();
-                break;
-*/
-            case Const.CONTROLLER_TYPE_DOOR_LOCK:
-                title += mControllerList.get(idx).getName() + " " + mActivity.getString(R.string.test) + " : ";
-                result = title + resultTestCommonController(type, DEFAULT_CONTROLLER_INDEX);
-                break;
-
-
-            case Const.CONTROLLER_TYPE_VENTILATION:
-                title += mControllerList.get(idx).getName() + " " + mActivity.getString(R.string.test) + " : ";
-                result = title + resultTestCommonController(type, DEFAULT_CONTROLLER_INDEX);
-                break;
-
-/*
-            case Const.CONTROLLER_TYPE_ELECTRICALLY_CURTAIN:
-                //title += mControllerList.get(idx).getName() + " " + mActivity.getString(R.string.test) + " : ";
-                //result = title + resultTestElectricallyCurtainController();
-                break;
-
-            case Const.CONTROLLER_TYPE_SYSTEM_AIRCON:
-                //title += mControllerList.get(idx).getName() + " " + mActivity.getString(R.string.test) + " : ";
-                //result = title + resultTestSystemAirconController();
-                break;
-*/
-
-
-
-            case Const.CONTROLLER_TYPE_LIGHT_BATCH_CONTROLL:
-                title += mControllerList.get(idx).getName() + " " + mActivity.getString(R.string.test) + " : ";
-                result = title + resultTestCommonController(type, DEFAULT_CONTROLLER_INDEX);
-                break;
-
-            case Const.CONTROLLER_TYPE_REALTIME_MEASURING_METER:
-                title += mControllerList.get(idx).getName() + " " + mActivity.getString(R.string.test) + " : ";
-                result = title + resultTestCommonController(type, DEFAULT_CONTROLLER_INDEX);
-                break;
-
-            case Const.CONTROLLER_TYPE_BATH_PHONE:
-            case Const.CONTROLLER_TYPE_KICHEN_TV:
-                title += mControllerList.get(idx).getName() + " " + mActivity.getString(R.string.test) + " : ";
-                result = title + resultRequestDeviceVersion(type);
-                break;
-
-            case Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_1:
-            case Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_2:
-            case Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_3:
-            case Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_4:
-            case Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_5:
-            case Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_6:
-            case Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_7:
-            case Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_8:
-                title += mControllerList.get(idx).getName() + " " + mActivity.getString(R.string.test) + " : ";
-                result = title + resultTestCommonController(type, type - Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_1);
-                break;
-
-            case Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_1:
-            case Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_2:
-            case Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_3:
-            case Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_4:
-            case Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_5:
-            case Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_6:
-            case Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_7:
-            case Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_8:
-                title += mControllerList.get(idx).getName() + " " + mActivity.getString(R.string.test) + " : ";
-                result = title + resultTestCommonController(type, type - Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_1);
-                break;
-
-            case Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_1:
-            case Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_2:
-            case Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_3:
-            case Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_4:
-            case Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_5:
-            case Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_6:
-            case Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_7:
-            case Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_8:
-                title += mControllerList.get(idx).getName() + " " + mActivity.getString(R.string.test) + " : ";
-                result = title + resultTestCommonController(type, type - Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_1);
-                break;
-
-            case Const.CONTROLLER_TYPE_RF_DOOR_CAMERA:
-                title += mControllerList.get(idx).getName() + " " + mActivity.getString(R.string.test) + " : ";
-
-                if(Temp_TYPE_DOOR_CAMERA_CONTROL.equals(Const.DOOR_CAMERA_TYPE_DEFAULT))
-                {
-                    result = title + "해당 기기는 통신 성공률 보기를 지원하지 않습니다.";
-                }
-                else if (Temp_TYPE_DOOR_CAMERA_CONTROL.equals(Const.DOOR_CAMERA_TYPE_RF_DOOR_CAMERA))
-                {
-                    result = title + resultTestCommonController(type, DEFAULT_CONTROLLER_INDEX);
-                }
-                else if (Temp_TYPE_DOOR_CAMERA_CONTROL.equals(Const.DOOR_CAMERA_TYPE_SMART_KEY) ||
-                        Temp_TYPE_DOOR_CAMERA_CONTROL.equals(Const.DOOR_CAMERA_TYPE_SMART_KEY_EXTERNAL) ||
-                        Temp_TYPE_DOOR_CAMERA_CONTROL.equals(Const.DOOR_CAMERA_TYPE_IOT_SMART) ||
-                        Temp_TYPE_DOOR_CAMERA_CONTROL.equals(Const.DOOR_CAMERA_TYPE_HYOSUNG_SMART) ||
-                        Temp_TYPE_DOOR_CAMERA_CONTROL.equals(Const.DOOR_CAMERA_TYPE_DAEWOO_SMART)
-                        )
-                {
-                    result = title + resultTestCommonController(type, DEFAULT_CONTROLLER_INDEX);
-                }
-                else if (Temp_TYPE_DOOR_CAMERA_CONTROL.equals(Const.DOOR_CAMERA_TYPE_UKS))
-                {
-                    result = title + "해당 기기는 통신 성공률 보기를 지원하지 않습니다.";
-                }
-                else if (Temp_TYPE_DOOR_CAMERA_CONTROL.equals(Const.DOOR_CAMERA_TYPE_ETC))
-                {
-                    result = title + "해당 기기는 통신 성공률 보기를 지원하지 않습니다.";
-                }
-
-                break;
-
-            case Const.CONTROLLER_TYPE_HDC_ALLLIGHT:
-            case Const.CONTROLLER_TYPE_HDC_GATEWAY:
-            case Const.CONTROLLER_TYPE_SMART_DIST:
-            case Const.CONTROLLER_TYPE_SMART_DIST_LIVEM:
-            case Const.CONTROLLER_TYPE_IGW300:
-            case Const.CONTROLLER_TYPE_SENSOR_AP:
-            case Const.CONTROLLER_TYPE_INNERROOM_DETECT_SENSOR:
-            case Const.CONTROLLER_TYPE_DIMMING_KCC:
-                title += mControllerList.get(idx).getName() + " " + mActivity.getString(R.string.test) + " : ";
-                result = title + resultTestCommonController(type, DEFAULT_CONTROLLER_INDEX);
-                break;
-
-
-            default:
-                break;
-        }
-
-        mTV_Result.append(result + "\n");
-    }
-
-
-
-
-
-
-
-
-
-
-    // Controller의 누적 Test결과 String을 return
-    private String resultTestCommonController(int type, int idx) {
-        StringBuilder result = new StringBuilder();
-
-        WallPadDevAPI testAPI = null;
-
-        switch (type) {
-            case Const.CONTROLLER_TYPE_LIGHT_LIVING_ROOM:
-                switch (lightType)
-                {
-                    case 1: // 대외 기본형
-                        testAPI = mWallPadAPI.Get_LightController();
-                        break;
-
-                    case 3://현산향일체형조명기본형
-                    case 4://현산향일체형일괄소등병합형
-                        testAPI = mWallPadAPI.Get_IntLightController();
-                        break;
-
-                    default:
-                        break;
-                }
-                break;
-
-            case Const.CONTROLLER_TYPE_LIGHT_ROOMS_0:
-            case Const.CONTROLLER_TYPE_LIGHT_ROOMS_1:
-            case Const.CONTROLLER_TYPE_LIGHT_ROOMS_2:
-            case Const.CONTROLLER_TYPE_LIGHT_ROOMS_3:
-            case Const.CONTROLLER_TYPE_LIGHT_ROOMS_4:
-            case Const.CONTROLLER_TYPE_LIGHT_ROOMS_5:
-            case Const.CONTROLLER_TYPE_LIGHT_ROOMS_6:
-            case Const.CONTROLLER_TYPE_LIGHT_ROOMS_7:
-                testAPI = mWallPadAPI.Get_MultiSwitchController();
-                break;
-
-            case Const.CONTROLLER_TYPE_GAS:
-                testAPI = mWallPadAPI.Get_GasController();
-                break;
-
-            case Const.CONTROLLER_TYPE_ELECTRIC_RANGE1:
-                testAPI = mWallPadAPI.Get_ElectricRange_API();
-                break;
-
-
-            case Const.CONTROLLER_TYPE_HEATER:
-                if(mWallPadAPI.GetHeatingKind() == 1)
-                {
-                    testAPI = mWallPadAPI.Get_HeatingV1Controller();
-                }
-                else if(mWallPadAPI.GetHeatingKind() == 2)
-                {
-                    testAPI = mWallPadAPI.Get_HeatingV2Controller();
-                }
-                else
-                {
-
-                }
-
-
-                break;
-/*
-            case Const.CONTROLLER_TYPE_DOOR_LOCK_WIRED:
-            case Const.CONTROLLER_TYPE_DOOR_LOCK_WIRELESS:
-                break;
-*/
-
-            case Const.CONTROLLER_TYPE_DOOR_LOCK:
-                if(doorType[1] == WallpadDeviceSet.DOORLOCK_TYPE_NORMAL)
-                {
-                    testAPI = mWallPadAPI.Get_DLockController();
-                }
-                else if(doorType[1] == WallpadDeviceSet.DOORLOCK_TYPE_FINGERPRINT)
-                {
-                    testAPI = mWallPadAPI.Get_FP_DLockController();
-                }
-                else
-                {
-                    testAPI = mWallPadAPI.Get_DLockController();
-                }
-                break;
-
-            case Const.CONTROLLER_TYPE_VENTILATION:
-                testAPI = mWallPadAPI.Get_VentiController();
-                break;
-
-/*
-            case Const.CONTROLLER_TYPE_ELECTRICALLY_CURTAIN:
-            case Const.CONTROLLER_TYPE_SYSTEM_AIRCON:
-                break;
-*/
-
-            case Const.CONTROLLER_TYPE_LIGHT_BATCH_CONTROLL:
-                if(Temp_TYPE_LIGHT_BATCH_CONTROL.equals(Const.LIGHT_BATCH_CONTROL_TYPE_COMMON_SMART_SWITCH))
-                {
-                    testAPI = mWallPadAPI.Get_SmartSwitchPolController();
-                }
-                else if (Temp_TYPE_LIGHT_BATCH_CONTROL.equals(Const.LIGHT_BATCH_CONTROL_TYPE_COMMON_BATCH_CONTROLLER))
-                {
-                    testAPI = mWallPadAPI.Get_AllLightController();
-                }
-                else if (Temp_TYPE_LIGHT_BATCH_CONTROL.equals(Const.LIGHT_BATCH_CONTROL_TYPE_HDC_SMART_SWITCH))
-                {
-                    testAPI = mWallPadAPI.Get_SmartSwitchEvtController();
-                }
-                else if (Temp_TYPE_LIGHT_BATCH_CONTROL.equals(Const.LIGHT_BATCH_CONTROL_TYPE_HDC_LCD_SMART_SWITCH))
-                {
-                    testAPI = mWallPadAPI.Get_SmartSwitchPolController();
-                }
-                break;
-
-            case Const.CONTROLLER_TYPE_REALTIME_MEASURING_METER:
-                testAPI = mWallPadAPI.Get_RealTimeMeterController();
-                break;
-
-            case Const.CONTROLLER_TYPE_BATH_PHONE:
-                break;
-
-            case Const.CONTROLLER_TYPE_KICHEN_TV:
-                break;
-
-            case Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_1:
-            case Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_2:
-            case Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_3:
-            case Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_4:
-            case Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_5:
-            case Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_6:
-            case Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_7:
-            case Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_8:
-                testAPI = mWallPadAPI.Get_EnergyMeterController();
-                break;
-
-            case Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_1:
-            case Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_2:
-            case Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_3:
-            case Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_4:
-            case Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_5:
-            case Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_6:
-            case Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_7:
-            case Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_8:
-                testAPI = mWallPadAPI.Get_CutOffConcentController();
-                break;
-
-            case Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_1:
-            case Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_2:
-            case Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_3:
-            case Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_4:
-            case Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_5:
-            case Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_6:
-            case Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_7:
-            case Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_8:
-                testAPI = mWallPadAPI.Get_EnergyModuleController();
-                break;
-
-            case Const.CONTROLLER_TYPE_RF_DOOR_CAMERA:
-
-                if(Temp_TYPE_DOOR_CAMERA_CONTROL.equals(Const.DOOR_CAMERA_TYPE_DEFAULT))
-                {
-
-                }
-                else if (Temp_TYPE_DOOR_CAMERA_CONTROL.equals(Const.DOOR_CAMERA_TYPE_RF_DOOR_CAMERA))
-                {
-                    testAPI = mWallPadAPI.Get_RFDoorCamController();
-                }
-                else if (Temp_TYPE_DOOR_CAMERA_CONTROL.equals(Const.DOOR_CAMERA_TYPE_SMART_KEY) ||
-                        Temp_TYPE_DOOR_CAMERA_CONTROL.equals(Const.DOOR_CAMERA_TYPE_SMART_KEY_EXTERNAL) ||
-                        Temp_TYPE_DOOR_CAMERA_CONTROL.equals(Const.DOOR_CAMERA_TYPE_IOT_SMART) ||
-                        Temp_TYPE_DOOR_CAMERA_CONTROL.equals(Const.DOOR_CAMERA_TYPE_HYOSUNG_SMART) ||
-                        Temp_TYPE_DOOR_CAMERA_CONTROL.equals(Const.DOOR_CAMERA_TYPE_DAEWOO_SMART)
-                        )
-                {
-                    testAPI = mWallPadAPI.Get_SmartKeyRfDoorController();
-                }
-                else if (Temp_TYPE_DOOR_CAMERA_CONTROL.equals(Const.DOOR_CAMERA_TYPE_UKS))
-                {
-
-                }
-                else if (Temp_TYPE_DOOR_CAMERA_CONTROL.equals(Const.DOOR_CAMERA_TYPE_ETC))
-                {
-
-                }
-
-                break;
-
-            case Const.CONTROLLER_TYPE_HDC_ALLLIGHT:
-                testAPI = mWallPadAPI.Get_AllLightHDCController();
-                break;
-
-            case Const.CONTROLLER_TYPE_HDC_GATEWAY:
-                testAPI = mWallPadAPI.Get_IGW200dController();
-                break;
-
-            case Const.CONTROLLER_TYPE_SMART_DIST:
-                testAPI = mWallPadAPI.Get_SdbController();
-                break;
-
-            case Const.CONTROLLER_TYPE_SMART_DIST_LIVEM:
-                testAPI = mWallPadAPI.Get_Sdb_LivingRoomLightAPI();
-                break;
-
-            case Const.CONTROLLER_TYPE_IGW300:
-                testAPI = mWallPadAPI.Get_IGW300Controller();
-                break;
-
-            case Const.CONTROLLER_TYPE_SENSOR_AP:
-                testAPI = mWallPadAPI.Get_SensorAp_API();
-                break;
-
-            case Const.CONTROLLER_TYPE_INNERROOM_DETECT_SENSOR:
-                testAPI = mWallPadAPI.Get_InRoomDetectSensor_API();
-                break;
-
-            case Const.CONTROLLER_TYPE_DIMMING_KCC:
-                testAPI = mWallPadAPI.Get_KCCDimmingController();
-                break;
-
-            default:
-                break;
-        }
-
-
-        if (testAPI != null) {
-            Log.d(TAG, "test -------------- " + idx );
-            testAPI.TRInfo.GetTransactionList(idx);
-
-            String strTotalSuccessRate = "";
-            double nTotalSuccessRate = testAPI.TRInfo.GetSuccessRate(true);
-            if (nTotalSuccessRate > -1.0) {
-                strTotalSuccessRate = String.format("%.2f", nTotalSuccessRate);
-            }
-
-            result.append("\n");
-            result.append("- Total count : " + (testAPI.TRInfo.totalSuccess + testAPI.TRInfo.totalFail)
-                    + "\n   Success : " + testAPI.TRInfo.totalSuccess
-                    + "\n   Fail : " + testAPI.TRInfo.totalFail
-                    + "\n   Success Rate : " + strTotalSuccessRate + "%"
-            );
-
-            String strRecentSuccessRate = "";
-            double nRecentSuccessRate = testAPI.TRInfo.GetSuccessRate(false);
-            if (nRecentSuccessRate > -1.0) {
-                strRecentSuccessRate = String.format("%.2f", nRecentSuccessRate);
-            }
-
-            result.append("\n\n");
-            result.append("- Recent count : " + (testAPI.TRInfo.RecentSuccess + testAPI.TRInfo.RecentFail)
-                    + "\n   Success : " + testAPI.TRInfo.RecentSuccess
-                    + "\n   Fail : " + testAPI.TRInfo.RecentFail
-                    + "\n   Success Rate : " + strRecentSuccessRate + "%"
-            );
-            result.append("\n\n");
-
-            Log.d(TAG, "nRecentSuccessRate -------------- " + nRecentSuccessRate );
-
-/*
-            if (testAPI.TRInfo.recentList != null)
-            {
-                String retStr = "result:";
-                for(int i = 0; i< testAPI.TRInfo.recentList.length; i++)
-                {
-                    retStr+=("["+i+":"+testAPI.TRInfo.recentList[i]+"]");
-                    if (i%10 == 0)
-                    {
-                        result.append(retStr);
-                        retStr = " ";
-                    }
-                }
-                result.append(retStr);
-            }
-*/
-        }
-        else
-        {
-            result.append(" 해당 드라이버 로딩 실패\n");
-        }
-
-        return result.toString();
-    }
-
-
-    // LightLivingRoom Controller의 누적 Test결과 String을 return
-    private String resultTestLightLivingRoomController(int type, int idx) {
-        StringBuilder result = new StringBuilder();
-
-        WallPadDevAPI testAPI = mWallPadAPI.Get_LightController();
-        if(testAPI!=null)
-        {
-            testAPI.TRInfo.GetTransactionList(idx);
-
-            result.append("Total Success : " + testAPI.TRInfo.totalSuccess
-                    + " Fail : " + testAPI.TRInfo.totalFail
-                    + "Success Rate : " + testAPI.TRInfo.GetSuccessRate(true));
-            result.append("\n");
-
-            result.append("Recent Success : " + testAPI.TRInfo.RecentSuccess
-                    + " Fail : " + testAPI.TRInfo.RecentFail
-                    + "Success Rate : " + testAPI.TRInfo.GetSuccessRate(false));
-            result.append("\n");
-
-            if (testAPI.TRInfo.recentList != null)
-            {
-                String retStr = "result:";
-                for(int i = 0; i< testAPI.TRInfo.recentList.length; i++)
-                {
-                    retStr+=("["+i+":"+testAPI.TRInfo.recentList[i]+"]");
-                    if (i%10 == 0)
-                    {
-                        result.append(retStr);
-                        retStr = " ";
-                    }
-                }
-                result.append(retStr);
-            }
-        }
-
-
-
-        return result.toString();
-    }
-
-
-
-
-
-
-
-
-
-    // test RequestVersion
-    private String resultRequestDeviceVersion(int type) {
-        StringBuilder result = new StringBuilder();
-        int deviceID = -1;
-
-        switch (type) {
-            case Const.CONTROLLER_TYPE_BATH_PHONE:
-                deviceID = Const.DEVICE_TYPE_BATH_PHONE;
-                break;
-
-            case Const.CONTROLLER_TYPE_KICHEN_TV:
-                deviceID = Const.DEVICE_TYPE_KITCHEN_TV;
-                break;
-
-            default:
-                break;
-        }
-
-        if (deviceID != -1) {
-            if (sendRequestVersion(deviceID) == true) {
-                result.append("send RequestVersion : OK");
-            }
-            else {
-                result.append("send RequestVersion : Fail");
-            }
-        }
-
-        return result.toString();
-    }
-
-
-    // RequestVersion을 PhonNRemocon에 전송
-    private boolean sendRequestVersion(int deviceID) {
-        boolean ret = false;
-
-        PhonNRemocon PnRCtr = mWallPadAPI.Get_PhonNRemoconController();
-        if (PnRCtr != null) {
-            PnRCtr.RequestVersion((byte)deviceID);
-
-            ret = true;
-        }
-
-        if(DEBUG)   Log.i(TAG, "sendRequestVersion() deviceID : " + deviceID
-                + ", ret : " + ret
-        );
-
-        return ret;
-    }
-
-
-
-    // PhonNRemocon으로부터 수신한 RequestVersion Ack를 result에 설정
-    public void resultDeviceVersionAck(byte[] arrData) {
-        StringBuilder result = new StringBuilder();
-
-        if ((arrData != null) && (arrData.length > 3)) {
-            result.append("received RequestVersion Ack");
-
-            String strVersionResult = String.format("0x%02X, 0x%02X, 0x%02X, 0x%02X"
-                    , arrData[0]
-                    , arrData[1]
-                    , arrData[2]
-                    , arrData[3]
-            );
-
-            result.append("\n" + strVersionResult);
-            result.append("\n\n");
-
-            mTV_Result.append(result);
-        }
-    }
-
-
-
-
-
-/*
-    private final int MESSAGE_BASE = 1000;
-    private final int MESSAGE_DEVICE_VERSION_BROADCAST_EVENT =        MESSAGE_BASE + 0;
-
-
-
-    private Handler mHandler = new Handler()
-    {
-        public void handleMessage(Message msg)
-        {
-            super.handleMessage(msg);
-
-            StringBuilder result = new StringBuilder();
-            switch (msg.what)
-            {
-                case MESSAGE_DEVICE_VERSION_BROADCAST_EVENT:
-                {
-                    resultTestBathPhone();
-
-                    resultTestKichenTV()();
-                }
-                break;
-
-                default:
-                    break;
-            }
-        }
-    };
-*/
-
-
-
-    // unregister BR
-    private void unregisterBroadCastReceiver() {
-        if (mCallEventReceiver != null) {
-            mActivity.unregisterReceiver(mCallEventReceiver);
-        }
-    }
-
-    // register BR
-    private void registerBroadCastReceiver() {
-        // Create a filter with the broadcast intents we are interested in.
-        IntentFilter filter = new IntentFilter();
-        filter.addAction(CallEventReceiver.CALL_EVENT_ACTION);
-        mActivity.registerReceiver(mCallEventReceiver, filter, null, null);
-    }
-
-
-
-
-    public class CallEventReceiver extends BroadcastReceiver {
-        private final String TAG = "CallEventReceiver";
-
-        private final boolean DEBUG = true;
-
-        public static final String CALL_EVENT_ACTION = "CALL_NOTIFICATION"; //"com.artncore.apps.ic_wallpad.CallEventInterface";
-
-
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            // TODO Auto-generated method stub
-            if (DEBUG)  Log.d(TAG, "--onReceive");
-
-            String action = intent.getAction();
-
-            if (CALL_EVENT_ACTION.equals(action)) {
-                processCallNoti(intent);
-            } else {
-                Log.w(TAG, "Registered for but not handling action " + action);
-            }
-        }
-    }
-
-
-    private final String EVENT_CALL_DATA = "MESSAGE";
-
-    public static final int REQUEST_VERSION_ACK     = 5;
-    private final String EVENT_BUNDLE_DATA = "VERSION";
-
-    // PhonNRemocon으로부터 수신한 BR을 처리
-    public void processCallNoti(Intent intent) {
-        if (intent != null) {
-            int callMsg = intent.getIntExtra(EVENT_CALL_DATA, -1);
-
-            if (callMsg != -1) {
-                if (DEBUG) Log.d(TAG, "processCallNoti() callMsg : " + callMsg);
-
-                switch(callMsg) {
-                    case REQUEST_VERSION_ACK:
-                    {
-                        Bundle bundle = intent.getExtras();
-                        if (bundle != null) {
-                            final byte[] arrData = bundle.getByteArray(EVENT_BUNDLE_DATA);
-                            if (arrData != null) {
-                                if (DEBUG) {
-                                    for (int i=0; i<arrData.length; i++)
-                                        Log.d(TAG, "arrData(" + i + ") : " + arrData[i]);
-                                }
-
-                                try {
-                                    Runnable runner =new Runnable() {
-                                        public void run() {
-                                            resultDeviceVersionAck(arrData);
-                                        }
-                                    };
-
-                                    if(runner != null)
-                                        mActivity.runOnUiThread(runner);
-                                } catch (RuntimeException re) {
-                                    LogUtil.errorLogInfo("", TAG, re);
-                                } catch(Exception e){
-                                    //e.printStackTrace();
-                                    LogUtil.errorLogInfo("",TAG, e);
-                                }
-                            }
-                        }
-                    }
-                    break;
-                }
-
-                if (DEBUG)  Log.d(TAG, "processCallNoti()  callMsg : " + callMsg);
-            }
-            else {
-                if (DEBUG)  Log.d(TAG, "bundle == null");
-            }
-        }
-    }
-
-
-
-
-
-
-
-}
+package com.artncore.managersetting.ui.fragments;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import kr.co.icontrols.wallpadsupport.Version;
+import kr.co.icontrols.wallpadsupport.WpadSound;
+import kr.co.icontrols.wallpadsupport.WpadSound.SND;
+import android.app.Activity;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Bundle;
+//import android.support.v4.app.Fragment;
+import androidx.fragment.app.Fragment;
+import androidx.core.view.MotionEventCompat;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.View.OnTouchListener;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemSelectedListener;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.ScrollView;
+import android.widget.Spinner;
+import android.widget.TextView;
+
+
+import com.artncore.WallPadDataMgr.WallpadDeviceSet;
+import com.artncore.managersetting.R;
+import com.artncore.managersetting.dao.MainDatabaseManager;
+import com.artncore.managersetting.domain.Const;
+import com.artncore.managersetting.domain.ControllerVO;
+import com.artncore.managersetting.ui.activities.MainActivity;
+import com.artncore.managersetting.util.StringUtil;
+import com.artncore.wallpadapi.CutOffConcentAPI;
+import com.artncore.wallpadapi.ElectricRange_API;
+import com.artncore.wallpadapi.EnergyMeterAPI;
+import com.artncore.wallpadapi.EnergyModuleAPI;
+import com.artncore.wallpadapi.LedDimmingKCC_API;
+import com.artncore.wallpadapi.MultiSwitchAPI;
+import com.artncore.wallpadapi.PhonNRemocon;
+import com.artncore.wallpadapi.WallPadAPI;
+import com.artncore.wallpadapi.WallPadDevAPI;
+
+/**
+ * A list fragment representing a list of Items. This fragment also supports
+ * tablet devices by allowing list items to be given an 'activated' state upon
+ * selection. This helps indicate which item is currently being viewed in a
+ * {link ItemDetailFragment}.
+ * <p>
+ * Activities containing this fragment MUST implement the {link Callbacks}
+ * interface.
+ */
+public class CheckControllerFragment extends Fragment {
+    private static final String TAG = "CheckControllerFragment";
+
+    private final boolean DEBUG = true;
+    private final boolean DEBUG_TIME = true;
+
+
+
+    private Activity mActivity;
+    private WpadSound mWpadSound;
+    private WallPadAPI mWallPadAPI;
+    private MainDatabaseManager mMainDatabaseManager;
+
+    private CallEventReceiver mCallEventReceiver;
+
+    private List<ControllerVO> mControllerList = new ArrayList<ControllerVO>();
+    private TextView mTV_Result;
+    private int mNumber = 1;
+
+    private int mSelectedIdx = -1;
+
+    private String Temp_TYPE_DOOR_CAMERA_CONTROL;
+    private String Temp_TYPE_LIGHT_BATCH_CONTROL;
+
+    // 0: not used, 1: 대외 기본형, 2: 대외 각실형, 3:현산향일체형조명기본형, 4:현산향일체형조명일괄소등병합형
+    private int lightType = 0;
+
+    private int[] doorType = null;
+
+    //[Model]
+    private int ModelType = Version.getModelType();
+    //private int ModelType = Version.MODEL_TYPE.IHN_1020B_A;
+
+
+    // constructor
+    public CheckControllerFragment() {
+    }
+
+    @Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+
+        mActivity = activity;
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        if (DEBUG)  Log.d(TAG, "onCreate() ");
+
+        super.onCreate(savedInstanceState);
+
+        mWallPadAPI = MainActivity.getWallPadAPI();
+        mMainDatabaseManager = MainActivity.getMainDatabaseManager();
+
+        mWpadSound = MainActivity.getWpadSound();
+        mCallEventReceiver = new CallEventReceiver();
+
+        try
+        {
+            WallpadDeviceSet wds = new WallpadDeviceSet(getContext());
+            doorType = wds.Get_DoorLock_Info();
+            wds.closeDB();
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+
+        getController();
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+                             Bundle savedInstanceState) {
+        View rootView = (View) inflater.inflate(R.layout.check_controller_container,
+                container, false);
+
+        return (View)rootView;
+    }
+
+    @Override
+    public void onViewCreated(View view, Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+
+        if (savedInstanceState != null) {}
+
+        Spinner controllerSpinner = (Spinner)view.findViewById(R.id.controller_spinner);
+        Button btnTest = (Button)view.findViewById(R.id.btn_test);
+        mTV_Result = (TextView)view.findViewById(R.id.tv_result);
+
+        ScrollView mScrollView = (ScrollView) view.findViewById(R.id.check_controller_scrollview);
+        mScrollView.setOnTouchListener(new OnTouchListener() {
+
+            @Override
+            public boolean onTouch(View v, MotionEvent event) {
+                switch (MotionEventCompat.getActionMasked(event)) {
+
+                    case MotionEvent.ACTION_UP:
+                        MainActivity.setFinishTimerReset();
+                        break;
+
+                    default:
+                        break;
+                }
+                return false;
+            }
+        });
+
+//        ArrayAdapter controllerAdapter = new ArrayAdapter(mActivity
+//                                                        , android.R.layout.simple_spinner_item
+//                                                         , mControllerList);
+
+        if (DEBUG)  Log.d(TAG, "mControllerList.size() : " + mControllerList.size());
+
+
+        ArrayAdapter controllerAdapter = new ControllerArrayAdapter(mActivity
+                , android.R.layout.simple_spinner_item
+                , mControllerList);
+
+
+        controllerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+        controllerSpinner.setAdapter(controllerAdapter);
+        controllerSpinner.setPrompt("select controller");
+
+        controllerSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
+            @Override
+            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
+                if (DEBUG)  Log.d(TAG, "onItemSelected() position : " + position);
+
+                MainActivity.setFinishTimerReset();
+                mSelectedIdx = position;
+            }
+
+            @Override
+            public void onNothingSelected(AdapterView<?> parent) {
+            }
+        });
+
+
+
+        btnTest.setOnClickListener(mButtonClick);
+    }
+
+
+
+    @Override
+    public void onResume() {
+        if (DEBUG)  Log.d(TAG, "onResume() ");
+
+        super.onResume();
+
+        registerBroadCastReceiver();
+    }
+
+
+    @Override
+    public void onPause() {
+        if (DEBUG)  Log.d(TAG, "onPause() ");
+
+        super.onPause();
+        unregisterBroadCastReceiver();
+    }
+
+
+
+    @Override
+    public void onDetach() {
+        super.onDetach();
+
+        mWallPadAPI = null;
+    }
+
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+    }
+
+
+    public class ControllerArrayAdapter extends ArrayAdapter {
+        private static final String TAG = "ControllerArrayAdapter";
+
+        private int mLayoutId;
+
+        private Context mContext;
+        private int m_nSelectedPos = -1;
+
+        // constructor
+        public ControllerArrayAdapter(Context context, int layoutId, List contollerList) {
+            super(context, layoutId, contollerList);
+            mContext = context;
+            mLayoutId = layoutId;
+        }
+
+
+        @Override
+        public Object getItem(int position) {
+            ControllerVO item = (ControllerVO)super.getItem(position);
+
+            if (DEBUG)  Log.d(TAG, "getItem(" + position + ") : " + item.getName());
+
+            return item.getName();
+        }
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+    // add all Controll to ControllerList
+    private void getController() {
+
+        if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ZERO_ENERGY_HOUSE) == false)
+        {
+            getLightControllerList();
+            addControllerVO(Const.CONTROLLER_TYPE_GAS);
+            //addControllerVO(Const.CONTROLLER_TYPE_ELECTRIC_RANGE1);
+            getElectricRangeList();
+            addControllerVO(Const.CONTROLLER_TYPE_VENTILATION);
+        }
+
+        addControllerVO(Const.CONTROLLER_TYPE_HEATER);
+
+        if (Version.getGatewayUsage()) {
+            addControllerVO(Const.CONTROLLER_TYPE_DOOR_LOCK);
+        }
+
+//      addControllerVO(Const.CONTROLLER_TYPE_DOOR_LOCK_WIRED);
+//      addControllerVO(Const.CONTROLLER_TYPE_DOOR_LOCK_WIRELESS);
+//      addControllerVO(Const.CONTROLLER_TYPE_ELECTRICALLY_CURTAIN);
+//      addControllerVO(Const.CONTROLLER_TYPE_SYSTEM_AIRCON);
+
+        addControllerVO(Const.CONTROLLER_TYPE_LIGHT_BATCH_CONTROLL);
+        addControllerVO(Const.CONTROLLER_TYPE_REALTIME_MEASURING_METER);
+
+        if (ModelType == Version.MODEL_TYPE.IHN_1020GL) {
+            getIEnergyControllerList();
+            getEnergyModuleControllerList();
+            getIdlePowerSavingSwitchControllerList();
+            addControllerVO(Const.CONTROLLER_TYPE_HDC_GATEWAY);
+        }
+        else if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ZERO_ENERGY_HOUSE)) {
+            getIEnergyControllerList();
+            getEnergyModuleControllerList();
+        }
+
+        if (ModelType != Version.MODEL_TYPE.IHN_1020GL) {
+            getDimmingKCC_ControllerList();
+        }
+
+        addControllerVO(Const.CONTROLLER_TYPE_RF_DOOR_CAMERA);
+
+        addControllerVO(Const.CONTROLLER_TYPE_BATH_PHONE);
+        addControllerVO(Const.CONTROLLER_TYPE_KICHEN_TV);
+
+        if (ModelType == Version.MODEL_TYPE.IHN_D101 || ModelType == Version.MODEL_TYPE.IHN_D101_I
+                || ModelType == Version.MODEL_TYPE.IHN_D101K || ModelType == Version.MODEL_TYPE.IHN_D101K_I) {
+            addControllerVO(Const.CONTROLLER_TYPE_SMART_DIST);
+            addControllerVO(Const.CONTROLLER_TYPE_SMART_DIST_LIVEM);
+            addControllerVO(Const.CONTROLLER_TYPE_IGW300);
+            addControllerVO(Const.CONTROLLER_TYPE_SENSOR_AP);
+            addControllerVO(Const.CONTROLLER_TYPE_INNERROOM_DETECT_SENSOR);
+        }
+        else if (ModelType == Version.MODEL_TYPE.IHN_1010GL || ModelType == Version.MODEL_TYPE.IHN_1010GL_I) {
+            addControllerVO(Const.CONTROLLER_TYPE_IGW300);
+        }
+
+        if (DEBUG)  Log.d(TAG, "mControllerList.size() : " + mControllerList.size());
+    }
+
+
+
+    // add LightController to ControllerList
+    private void getLightControllerList() {
+        if (mWallPadAPI != null) {
+
+            int lightCurrentCount = 0;
+            String strType = null;
+
+            List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LIGHT);
+            if ((InfoList != null) && (InfoList.size() > 5)) {
+                if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+                    int circuitNo = StringUtil.getInt(InfoList.get(1), false);
+                    if ((circuitNo > -1) && (circuitNo <= Const.CONTROLLER_LIGHT_MAX_COUNT + 1))
+                        lightCurrentCount = circuitNo - 1;
+
+                    strType = InfoList.get(5);
+
+                    if (Const.LIGHT_CONTROLLER_TYPE_LIVING_ROOM.equals(strType)) {
+                        lightType = 1;
+                        strType = "조명 - "+Const.LIGHT_CONTROLLER_TYPE_LIVING_ROOM;
+                    }
+                    else if (Const.LIGHT_CONTROLLER_TYPE_ROOMS.equals(strType)) {
+                        lightType = 2;
+                        strType = "조명 - "+Const.LIGHT_CONTROLLER_TYPE_ROOMS;
+                    }
+                    else if (Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_NORMAL.equals(strType)) {
+                        lightType = 3;
+                        strType = "조명 - "+Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_NORMAL;
+                    }
+                    else if (Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT.equals(strType)) {
+                        lightType = 4;
+                        strType = "조명 - "+Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT;
+                    }
+                }
+            }
+
+            if (DEBUG)  Log.d(TAG, "getLightControllerList() lightType : " + lightType);
+
+            switch (lightType) {
+                case 1: // 대외 기본형
+                case 3://현산향일체형조명기본형
+                case 4://현산향일체형일괄소등병합형
+                {
+                    String lightControllerName = strType;
+                    int type = Const.CONTROLLER_TYPE_LIGHT_LIVING_ROOM;
+                    ControllerVO listControllerVO1
+                            = new ControllerVO(type
+                            , lightControllerName
+                            , 0
+                            , 0);
+
+                    mControllerList.add(listControllerVO1);
+
+                    if(lightType == 3)
+                    {
+                        String All_lightControllerName = "현산 일괄소등릴레이";
+                        int typeAll_light = Const.CONTROLLER_TYPE_HDC_ALLLIGHT;
+                        ControllerVO listControllerVO2
+                                = new ControllerVO(typeAll_light
+                                , All_lightControllerName
+                                , 0
+                                , 0);
+
+                        mControllerList.add(listControllerVO2);
+                    }
+                }
+                break;
+
+                case 2: // rooms
+                {
+                    int multiSwitchCount = 0;
+
+                    MultiSwitchAPI multiSwitchAPI = mWallPadAPI.Get_MultiSwitchController();
+
+                    if(multiSwitchAPI == null){return ;}
+
+                    int ret = multiSwitchAPI.Refresh((byte)0xFF, false);
+                    if (ret == 0) {
+                        multiSwitchCount = multiSwitchAPI.data.DeviceCnt;
+                    }
+
+                    if (DEBUG)  Log.d(TAG, "getLightControllerList() multiSwitchCount : " + multiSwitchCount);
+
+                    for (int i=0; i<multiSwitchCount; i++) {
+                        String lightControllerName = mActivity.getString(R.string.contoller_light_multi_switch) + " - " + (i+1);
+                        int type = Const.CONTROLLER_TYPE_LIGHT_ROOMS_0 + i;
+                        ControllerVO listControllerVO
+                                = new ControllerVO(type
+                                , lightControllerName
+                                , 0
+                                , 0);
+
+                        mControllerList.add(listControllerVO);
+                    }
+                }
+                break;
+
+                default:
+                    break;
+            }
+        }
+    }
+
+    private void getElectricRangeList()
+    {
+        if (mWallPadAPI != null)
+        {
+            if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ELECTRIC_RANGE) == true)
+            {
+                int electricRangeCount = 0;
+
+                ElectricRange_API electricRange_api = mWallPadAPI.Get_ElectricRange_API();
+
+                if(electricRange_api == null){return ;}
+
+                int ret = electricRange_api.Refresh((byte)0xFF, false);
+                if (ret == 0) {
+                    electricRangeCount = electricRange_api.data.DeviceCnt;
+                }
+
+                if (DEBUG)  Log.d(TAG, "addControllerVO() electricRangeCount : " + electricRangeCount);
+
+                for (int i=0; i<electricRangeCount; i++) {
+                    String lightControllerName = mActivity.getString(R.string.contoller_electric_range) + " - " + (i+1);
+                    int type = Const.CONTROLLER_TYPE_ELECTRIC_RANGE1 + i;
+                    ControllerVO listControllerVO
+                            = new ControllerVO(type
+                            , lightControllerName
+                            , 0
+                            , 0);
+
+                    mControllerList.add(listControllerVO);
+                }
+            }
+        }
+    }
+
+
+
+    private void getIEnergyControllerList()
+    {
+        if (mWallPadAPI != null)
+        {
+            int IEnergyCount = 0;
+            List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ENERGY_DEVICES);
+            if ((InfoList != null) && (InfoList.size() > 3))
+            {
+                if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3)))
+                {
+                    EnergyMeterAPI energyMeterAPI = mWallPadAPI.Get_EnergyMeterController();
+
+                    if(energyMeterAPI == null){return ;}
+
+                    int ret = energyMeterAPI.Refresh((byte) 0xFF, false);
+                    if (ret == 0)
+                    {
+                        IEnergyCount = energyMeterAPI.data.RoomCnt;
+                    }
+                    if (DEBUG) Log.d(TAG, "getIEnergyControllerList() IEnergyCount : " + IEnergyCount);
+
+                    for (int i = 0; i < IEnergyCount; i++)
+                    {
+                        String energyMeterControllerName = InfoList.get(2) + "(에너지미터)" + " - " + (i+1);
+                        int type = Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_1 + i;
+                        ControllerVO listControllerVO = new ControllerVO(type, energyMeterControllerName, 0, 0);
+                        mControllerList.add(listControllerVO);
+                    }
+                }
+            }
+        }
+    }
+
+    private void getEnergyModuleControllerList()
+    {
+        if (mWallPadAPI != null)
+        {
+            int RoomCount = 0;
+
+            List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ENERGY_MODULE);
+            if ((InfoList != null) && (InfoList.size() > 3))
+            {
+                if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3)))
+                {
+
+                    EnergyModuleAPI energyModuleAPI = mWallPadAPI.Get_EnergyModuleController();
+
+                    if(energyModuleAPI == null){return ;}
+
+                    int ret = energyModuleAPI.Refresh((byte) 0xFF, false);
+                    if (ret == 0)
+                    {
+                        RoomCount = energyModuleAPI.data.DeviceCnt;
+                    }
+                    if (DEBUG) Log.d(TAG, "getEnergyModuleControllerList() RoomCount : " + RoomCount);
+
+                    for (int i = 0; i < RoomCount; i++)
+                    {
+                        String ControllerName = mActivity.getString(R.string.setting_energy_energy_module) + " - " + (i + 1);
+                        int type = Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_1 + i;
+                        ControllerVO listControllerVO = new ControllerVO(type, ControllerName, 0, 0);
+                        mControllerList.add(listControllerVO);
+                    }
+                }
+            }
+        }
+    }
+
+    private void getIdlePowerSavingSwitchControllerList()
+    {
+        if (mWallPadAPI != null)
+        {
+            int RoomCount = 0;
+
+            List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_IDLE_POWER_SAVING_SWITCH);
+            if ((InfoList != null) && (InfoList.size() > 3))
+            {
+                if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3)))
+                {
+                    CutOffConcentAPI cutOffConcentAPI = mWallPadAPI.Get_CutOffConcentController();
+
+                    if(cutOffConcentAPI == null){return ;}
+
+                    int ret = cutOffConcentAPI.Refresh((byte) 0xFF, false);
+                    if (ret == 0)
+                    {
+                        RoomCount = cutOffConcentAPI.data.DeviceCnt;
+                    }
+                    if (DEBUG) Log.d(TAG, "getIdlePowerSavingSwitchControllerList() RoomCount : " + RoomCount);
+
+                    for (int i = 0; i < RoomCount; i++)
+                    {
+                        String ControllerName = mActivity.getString(R.string.setting_energy_idle_power_saving_switch) + " - " + (i + 1);
+                        int type = Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_1 + i;
+                        ControllerVO listControllerVO = new ControllerVO(type, ControllerName, 0, 0);
+                        mControllerList.add(listControllerVO);
+                    }
+                }
+            }
+        }
+    }
+
+    private void getDimmingKCC_ControllerList()
+    {
+        if (mWallPadAPI != null)
+        {
+            int RoomCount = 0;
+
+            List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DIMMING_KCC);
+            if ((InfoList != null) && (InfoList.size() > 3))
+            {
+                if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3)))
+                {
+                    LedDimmingKCC_API ledDimmingKCC_API = mWallPadAPI.Get_KCCDimmingController();
+
+                    if(ledDimmingKCC_API == null){return ;}
+
+                    int ret = ledDimmingKCC_API.Refresh((byte) 0, false);
+
+                    if (DEBUG) Log.d(TAG, "getDimmingKCC_ControllerList() RoomCount : " + RoomCount);
+
+                    String ControllerName = mActivity.getString(R.string.contoller_dimming_kcc);
+                    int type = Const.CONTROLLER_TYPE_DIMMING_KCC;
+                    ControllerVO listControllerVO = new ControllerVO(type, ControllerName, 0, 0);
+                    mControllerList.add(listControllerVO);
+                }
+            }
+        }
+    }
+
+
+    // add Controller to ControllerList
+    private void addControllerVO(int type) {
+        ControllerVO controllerVO = null;
+
+        switch (type) {
+            case Const.CONTROLLER_TYPE_GAS:
+            {
+                String controllerName = mActivity.getString(R.string.contoller_gas);
+
+                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_GAS) == true)
+                {
+                    controllerVO = new ControllerVO(type
+                            , controllerName
+                            , 0
+                            , 0);
+                }
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_HEATER:
+            {
+                String controllerName = mActivity.getString(R.string.contoller_heater);
+
+                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_HEATER) == true)
+                {
+                    controllerVO = new ControllerVO(type
+                            , controllerName
+                            , 0
+                            , 0);
+                }
+            }
+            break;
+
+
+            case Const.CONTROLLER_TYPE_DOOR_LOCK:
+            {
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DOOR_LOCK);
+                if ((InfoList != null) && (InfoList.size() > 5)) {
+                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+
+                        String controllerName = InfoList.get(2) + " - " + InfoList.get(5);
+                        controllerVO = new ControllerVO(type
+                                , controllerName
+                                , 0
+                                , 0);
+                    }
+                }
+            }
+            break;
+
+/*
+            case Const.CONTROLLER_TYPE_DOOR_LOCK_WIRED:
+            {
+                String controllerName = mActivity.getString(R.string.contoller_door_lock_wired);
+
+                // TO DO
+//                if (mWallpadStatusData.GetHeatingCNT() > 0) {
+//                    controllerVO = new ControllerVO(type
+//                                                    , controllerName
+//                                                    , 0
+//                                                    , 0);
+//                }
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_DOOR_LOCK_WIRELESS:
+            {
+                String controllerName = mActivity.getString(R.string.contoller_door_lock_wireless);
+
+                // TO DO
+//                if (mWallpadStatusData.GetHeatingCNT() > 0) {
+//                    controllerVO = new ControllerVO(type
+//                                                    , controllerName
+//                                                    , 0
+//                                                    , 0);
+//                }
+            }
+            break;
+*/
+
+            case Const.CONTROLLER_TYPE_VENTILATION:
+            {
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_VENTILATION);
+                if ((InfoList != null) && (InfoList.size() > 5)) {
+                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+
+                        String controllerName = InfoList.get(2) + " - " + InfoList.get(5);
+                        controllerVO = new ControllerVO(type
+                                , controllerName
+                                , 0
+                                , 0);
+                    }
+                }
+            }
+            break;
+
+/*
+            case Const.CONTROLLER_TYPE_ELECTRICALLY_CURTAIN:
+            {
+                String controllerName = mActivity.getString(R.string.contoller_electronically_curtain);
+
+                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ELECTRONICALLY_CURTAIN) == true)
+                {
+                    controllerVO = new ControllerVO(type
+                                                    , controllerName
+                                                    , 0
+                                                    , 0);
+                }
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_SYSTEM_AIRCON:
+            {
+                String controllerName = mActivity.getString(R.string.contoller_system_aircon);
+
+                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SYSTEM_AIRCON) == true)
+                {
+                    controllerVO = new ControllerVO(type
+                                                    , controllerName
+                                                    , 0
+                                                    , 0);
+                }
+            }
+            break;
+*/
+
+            case Const.CONTROLLER_TYPE_LIGHT_BATCH_CONTROLL:
+            {
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SMART_SWITCH_LIGHT_AND_BATCH_CONTROL);
+                if ((InfoList != null) && (InfoList.size() > 5)) {
+                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+
+                        Temp_TYPE_LIGHT_BATCH_CONTROL = InfoList.get(5);
+
+                        String controllerName = InfoList.get(2) + " - " + InfoList.get(5);
+                        controllerVO = new ControllerVO(type
+                                , controllerName
+                                , 0
+                                , 0);
+                    }
+                }
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_REALTIME_MEASURING_METER:
+            {
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_REALTIME_MEASURING_METER);
+                if ((InfoList != null) && (InfoList.size() > 3)) {
+                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+
+                        String controllerName = InfoList.get(2) + " - " + InfoList.get(1)+"종";
+                        controllerVO = new ControllerVO(type
+                                , controllerName
+                                , 0
+                                , 0);
+                    }
+                }
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_BATH_PHONE:
+            {
+                String controllerName = mActivity.getString(R.string.contoller_bath_phone);
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , 0
+                        , 0);
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_KICHEN_TV:
+            {
+                String controllerName = mActivity.getString(R.string.contoller_kichen_tv);
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , 0
+                        , 0);
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_RF_DOOR_CAMERA:
+            {
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DOOR_CAMERA);
+                if ((InfoList != null) && (InfoList.size() > 3)) {
+                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+
+                        Temp_TYPE_DOOR_CAMERA_CONTROL = InfoList.get(5);
+                        String controllerName = InfoList.get(2) + " - " + InfoList.get(5);
+
+                        controllerVO = new ControllerVO(type
+                                , controllerName
+                                , 0
+                                , 0);
+
+
+                    }
+                }
+            }
+            break;
+
+
+
+            case Const.CONTROLLER_TYPE_HDC_GATEWAY:
+            {
+                String controllerName = "IGW200D 게이트웨이";
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , 0
+                        , 0);
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_SMART_DIST:
+            {
+                String controllerName = "스마트분전반";
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , 0
+                        , 0);
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_SMART_DIST_LIVEM:
+            {
+                String controllerName = "스마트분전반-거실EM";
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , 0
+                        , 0);
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_IGW300:
+            {
+                String controllerName = "신규게이트웨이(IGW300)";
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , 0
+                        , 0);
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_SENSOR_AP:
+            {
+                String controllerName = "센서AP(미세먼지,CO2)";
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , 0
+                        , 0);
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_INNERROOM_DETECT_SENSOR:
+            {
+                String controllerName = "재실센서";
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , 0
+                        , 0);
+            }
+            break;
+
+        }
+
+        if (controllerVO != null)
+            mControllerList.add(controllerVO);
+    }
+
+
+
+
+    private View.OnClickListener mButtonClick = new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+
+            mWpadSound.Play(SND.effect.TOUCH_LATCHED);
+            MainActivity.setFinishTimerReset();
+
+            switch(v.getId())
+            {
+                case R.id.btn_test:
+                {
+                    if (DEBUG)  Log.d(TAG, "onClick() btn_test" );
+
+                    String controllerName = mControllerList.get(mSelectedIdx).getName();
+                    //if (DEBUG)    Toast.makeText(mActivity, controllerName + " test", Toast.LENGTH_SHORT).show();
+
+                    doTestController(mSelectedIdx);
+                }
+                break;
+
+                default:
+                    break;
+            }
+
+        }
+    };
+
+
+    private final int DEFAULT_CONTROLLER_INDEX = 0;
+    // test Controller
+    private void doTestController(int idx) {
+        String result = "";
+        String title = String.valueOf(mNumber++) + ". " ;
+
+        if (DEBUG)  Log.d(TAG, "doTestController() idx : " + idx);
+
+        int type = mControllerList.get(idx).getType();
+
+        if (DEBUG)  Log.d(TAG, "doTestController() type : " + type);
+
+        switch (type) {
+            case Const.CONTROLLER_TYPE_LIGHT_LIVING_ROOM:
+                title += mControllerList.get(idx).getName() + " " + mActivity.getString(R.string.test) + " : ";
+                result = title + resultTestCommonController(type, DEFAULT_CONTROLLER_INDEX);
+                break;
+
+            case Const.CONTROLLER_TYPE_LIGHT_ROOMS_0:
+            case Const.CONTROLLER_TYPE_LIGHT_ROOMS_1:
+            case Const.CONTROLLER_TYPE_LIGHT_ROOMS_2:
+            case Const.CONTROLLER_TYPE_LIGHT_ROOMS_3:
+            case Const.CONTROLLER_TYPE_LIGHT_ROOMS_4:
+            case Const.CONTROLLER_TYPE_LIGHT_ROOMS_5:
+            case Const.CONTROLLER_TYPE_LIGHT_ROOMS_6:
+            case Const.CONTROLLER_TYPE_LIGHT_ROOMS_7:
+                title += mControllerList.get(idx).getName() + " " + mActivity.getString(R.string.test) + " : ";
+                result = title + resultTestCommonController(type, type - Const.CONTROLLER_TYPE_LIGHT_ROOMS_0);
+                break;
+
+            case Const.CONTROLLER_TYPE_GAS:
+                title += mControllerList.get(idx).getName() + " " + mActivity.getString(R.string.test) + " : ";
+                result = title + resultTestCommonController(type, DEFAULT_CONTROLLER_INDEX);
+                break;
+
+            case Const.CONTROLLER_TYPE_ELECTRIC_RANGE1:
+            case Const.CONTROLLER_TYPE_ELECTRIC_RANGE2:
+                title += mControllerList.get(idx).getName() + " " + mActivity.getString(R.string.test) + " : ";
+                result = title + resultTestCommonController(type, type - Const.CONTROLLER_TYPE_ELECTRIC_RANGE1);
+                break;
+
+
+            case Const.CONTROLLER_TYPE_HEATER:
+                title += mControllerList.get(idx).getName() + " " + mActivity.getString(R.string.test) + " : ";
+                result = title + resultTestCommonController(type, DEFAULT_CONTROLLER_INDEX);
+                break;
+
+
+/*
+            case Const.CONTROLLER_TYPE_DOOR_LOCK_WIRED:
+                title += mControllerList.get(idx).getName() + " " + mActivity.getString(R.string.test) + " : ";
+                result = title + resultTestDoorLockWiredController();
+                break;
+
+            case Const.CONTROLLER_TYPE_DOOR_LOCK_WIRELESS:
+                title += mControllerList.get(idx).getName() + " " + mActivity.getString(R.string.test) + " : ";
+                result = title + resultTestDoorLockWirelessController();
+                break;
+*/
+            case Const.CONTROLLER_TYPE_DOOR_LOCK:
+                title += mControllerList.get(idx).getName() + " " + mActivity.getString(R.string.test) + " : ";
+                result = title + resultTestCommonController(type, DEFAULT_CONTROLLER_INDEX);
+                break;
+
+
+            case Const.CONTROLLER_TYPE_VENTILATION:
+                title += mControllerList.get(idx).getName() + " " + mActivity.getString(R.string.test) + " : ";
+                result = title + resultTestCommonController(type, DEFAULT_CONTROLLER_INDEX);
+                break;
+
+/*
+            case Const.CONTROLLER_TYPE_ELECTRICALLY_CURTAIN:
+                //title += mControllerList.get(idx).getName() + " " + mActivity.getString(R.string.test) + " : ";
+                //result = title + resultTestElectricallyCurtainController();
+                break;
+
+            case Const.CONTROLLER_TYPE_SYSTEM_AIRCON:
+                //title += mControllerList.get(idx).getName() + " " + mActivity.getString(R.string.test) + " : ";
+                //result = title + resultTestSystemAirconController();
+                break;
+*/
+
+
+
+            case Const.CONTROLLER_TYPE_LIGHT_BATCH_CONTROLL:
+                title += mControllerList.get(idx).getName() + " " + mActivity.getString(R.string.test) + " : ";
+                result = title + resultTestCommonController(type, DEFAULT_CONTROLLER_INDEX);
+                break;
+
+            case Const.CONTROLLER_TYPE_REALTIME_MEASURING_METER:
+                title += mControllerList.get(idx).getName() + " " + mActivity.getString(R.string.test) + " : ";
+                result = title + resultTestCommonController(type, DEFAULT_CONTROLLER_INDEX);
+                break;
+
+            case Const.CONTROLLER_TYPE_BATH_PHONE:
+            case Const.CONTROLLER_TYPE_KICHEN_TV:
+                title += mControllerList.get(idx).getName() + " " + mActivity.getString(R.string.test) + " : ";
+                result = title + resultRequestDeviceVersion(type);
+                break;
+
+            case Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_1:
+            case Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_2:
+            case Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_3:
+            case Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_4:
+            case Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_5:
+            case Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_6:
+            case Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_7:
+            case Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_8:
+                title += mControllerList.get(idx).getName() + " " + mActivity.getString(R.string.test) + " : ";
+                result = title + resultTestCommonController(type, type - Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_1);
+                break;
+
+            case Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_1:
+            case Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_2:
+            case Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_3:
+            case Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_4:
+            case Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_5:
+            case Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_6:
+            case Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_7:
+            case Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_8:
+                title += mControllerList.get(idx).getName() + " " + mActivity.getString(R.string.test) + " : ";
+                result = title + resultTestCommonController(type, type - Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_1);
+                break;
+
+            case Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_1:
+            case Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_2:
+            case Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_3:
+            case Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_4:
+            case Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_5:
+            case Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_6:
+            case Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_7:
+            case Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_8:
+                title += mControllerList.get(idx).getName() + " " + mActivity.getString(R.string.test) + " : ";
+                result = title + resultTestCommonController(type, type - Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_1);
+                break;
+
+            case Const.CONTROLLER_TYPE_RF_DOOR_CAMERA:
+                title += mControllerList.get(idx).getName() + " " + mActivity.getString(R.string.test) + " : ";
+
+                if(Temp_TYPE_DOOR_CAMERA_CONTROL.equals(Const.DOOR_CAMERA_TYPE_DEFAULT))
+                {
+                    result = title + "해당 기기는 통신 성공률 보기를 지원하지 않습니다.";
+                }
+                else if (Temp_TYPE_DOOR_CAMERA_CONTROL.equals(Const.DOOR_CAMERA_TYPE_RF_DOOR_CAMERA))
+                {
+                    result = title + resultTestCommonController(type, DEFAULT_CONTROLLER_INDEX);
+                }
+                else if (Temp_TYPE_DOOR_CAMERA_CONTROL.equals(Const.DOOR_CAMERA_TYPE_SMART_KEY) ||
+                        Temp_TYPE_DOOR_CAMERA_CONTROL.equals(Const.DOOR_CAMERA_TYPE_IOT_SMART) ||
+                        Temp_TYPE_DOOR_CAMERA_CONTROL.equals(Const.DOOR_CAMERA_TYPE_HYOSUNG_SMART) ||
+                        Temp_TYPE_DOOR_CAMERA_CONTROL.equals(Const.DOOR_CAMERA_TYPE_DAEWOO_SMART)
+                        )
+                {
+                    result = title + resultTestCommonController(type, DEFAULT_CONTROLLER_INDEX);
+                }
+                else if (Temp_TYPE_DOOR_CAMERA_CONTROL.equals(Const.DOOR_CAMERA_TYPE_UKS))
+                {
+                    result = title + "해당 기기는 통신 성공률 보기를 지원하지 않습니다.";
+                }
+                else if (Temp_TYPE_DOOR_CAMERA_CONTROL.equals(Const.DOOR_CAMERA_TYPE_ETC))
+                {
+                    result = title + "해당 기기는 통신 성공률 보기를 지원하지 않습니다.";
+                }
+
+                break;
+
+            case Const.CONTROLLER_TYPE_HDC_ALLLIGHT:
+            case Const.CONTROLLER_TYPE_HDC_GATEWAY:
+            case Const.CONTROLLER_TYPE_SMART_DIST:
+            case Const.CONTROLLER_TYPE_SMART_DIST_LIVEM:
+            case Const.CONTROLLER_TYPE_IGW300:
+            case Const.CONTROLLER_TYPE_SENSOR_AP:
+            case Const.CONTROLLER_TYPE_INNERROOM_DETECT_SENSOR:
+            case Const.CONTROLLER_TYPE_DIMMING_KCC:
+                title += mControllerList.get(idx).getName() + " " + mActivity.getString(R.string.test) + " : ";
+                result = title + resultTestCommonController(type, DEFAULT_CONTROLLER_INDEX);
+                break;
+
+
+            default:
+                break;
+        }
+
+        mTV_Result.append(result + "\n");
+    }
+
+
+
+
+
+
+
+
+
+
+    // Controller의 누적 Test결과 String을 return
+    private String resultTestCommonController(int type, int idx) {
+        StringBuilder result = new StringBuilder();
+
+        WallPadDevAPI testAPI = null;
+
+        switch (type) {
+            case Const.CONTROLLER_TYPE_LIGHT_LIVING_ROOM:
+                switch (lightType)
+                {
+                    case 1: // 대외 기본형
+                        testAPI = mWallPadAPI.Get_LightController();
+                        break;
+
+                    case 3://현산향일체형조명기본형
+                    case 4://현산향일체형일괄소등병합형
+                        testAPI = mWallPadAPI.Get_IntLightController();
+                        break;
+
+                    default:
+                        break;
+                }
+                break;
+
+            case Const.CONTROLLER_TYPE_LIGHT_ROOMS_0:
+            case Const.CONTROLLER_TYPE_LIGHT_ROOMS_1:
+            case Const.CONTROLLER_TYPE_LIGHT_ROOMS_2:
+            case Const.CONTROLLER_TYPE_LIGHT_ROOMS_3:
+            case Const.CONTROLLER_TYPE_LIGHT_ROOMS_4:
+            case Const.CONTROLLER_TYPE_LIGHT_ROOMS_5:
+            case Const.CONTROLLER_TYPE_LIGHT_ROOMS_6:
+            case Const.CONTROLLER_TYPE_LIGHT_ROOMS_7:
+                testAPI = mWallPadAPI.Get_MultiSwitchController();
+                break;
+
+            case Const.CONTROLLER_TYPE_GAS:
+                testAPI = mWallPadAPI.Get_GasController();
+                break;
+
+            case Const.CONTROLLER_TYPE_ELECTRIC_RANGE1:
+                testAPI = mWallPadAPI.Get_ElectricRange_API();
+                break;
+
+
+            case Const.CONTROLLER_TYPE_HEATER:
+                if(mWallPadAPI.GetHeatingKind() == 1)
+                {
+                    testAPI = mWallPadAPI.Get_HeatingV1Controller();
+                }
+                else if(mWallPadAPI.GetHeatingKind() == 2)
+                {
+                    testAPI = mWallPadAPI.Get_HeatingV2Controller();
+                }
+                else
+                {
+
+                }
+
+
+                break;
+/*
+            case Const.CONTROLLER_TYPE_DOOR_LOCK_WIRED:
+            case Const.CONTROLLER_TYPE_DOOR_LOCK_WIRELESS:
+                break;
+*/
+
+            case Const.CONTROLLER_TYPE_DOOR_LOCK:
+                if(doorType[1] == WallpadDeviceSet.DOORLOCK_TYPE_NORMAL)
+                {
+                    testAPI = mWallPadAPI.Get_DLockController();
+                }
+                else if(doorType[1] == WallpadDeviceSet.DOORLOCK_TYPE_FINGERPRINT)
+                {
+                    testAPI = mWallPadAPI.Get_FP_DLockController();
+                }
+                else
+                {
+                    testAPI = mWallPadAPI.Get_DLockController();
+                }
+                break;
+
+            case Const.CONTROLLER_TYPE_VENTILATION:
+                testAPI = mWallPadAPI.Get_VentiController();
+                break;
+
+/*
+            case Const.CONTROLLER_TYPE_ELECTRICALLY_CURTAIN:
+            case Const.CONTROLLER_TYPE_SYSTEM_AIRCON:
+                break;
+*/
+
+            case Const.CONTROLLER_TYPE_LIGHT_BATCH_CONTROLL:
+                if(Temp_TYPE_LIGHT_BATCH_CONTROL.equals(Const.LIGHT_BATCH_CONTROL_TYPE_COMMON_SMART_SWITCH))
+                {
+                    testAPI = mWallPadAPI.Get_SmartSwitchPolController();
+                }
+                else if (Temp_TYPE_LIGHT_BATCH_CONTROL.equals(Const.LIGHT_BATCH_CONTROL_TYPE_COMMON_BATCH_CONTROLLER))
+                {
+                    testAPI = mWallPadAPI.Get_AllLightController();
+                }
+                else if (Temp_TYPE_LIGHT_BATCH_CONTROL.equals(Const.LIGHT_BATCH_CONTROL_TYPE_HDC_SMART_SWITCH))
+                {
+                    testAPI = mWallPadAPI.Get_SmartSwitchEvtController();
+                }
+                else if (Temp_TYPE_LIGHT_BATCH_CONTROL.equals(Const.LIGHT_BATCH_CONTROL_TYPE_HDC_LCD_SMART_SWITCH))
+                {
+                    testAPI = mWallPadAPI.Get_SmartSwitchPolController();
+                }
+                break;
+
+            case Const.CONTROLLER_TYPE_REALTIME_MEASURING_METER:
+                testAPI = mWallPadAPI.Get_RealTimeMeterController();
+                break;
+
+            case Const.CONTROLLER_TYPE_BATH_PHONE:
+                break;
+
+            case Const.CONTROLLER_TYPE_KICHEN_TV:
+                break;
+
+            case Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_1:
+            case Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_2:
+            case Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_3:
+            case Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_4:
+            case Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_5:
+            case Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_6:
+            case Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_7:
+            case Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_8:
+                testAPI = mWallPadAPI.Get_EnergyMeterController();
+                break;
+
+            case Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_1:
+            case Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_2:
+            case Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_3:
+            case Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_4:
+            case Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_5:
+            case Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_6:
+            case Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_7:
+            case Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_8:
+                testAPI = mWallPadAPI.Get_CutOffConcentController();
+                break;
+
+            case Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_1:
+            case Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_2:
+            case Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_3:
+            case Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_4:
+            case Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_5:
+            case Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_6:
+            case Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_7:
+            case Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_8:
+                testAPI = mWallPadAPI.Get_EnergyModuleController();
+                break;
+
+            case Const.CONTROLLER_TYPE_RF_DOOR_CAMERA:
+
+                if(Temp_TYPE_DOOR_CAMERA_CONTROL.equals(Const.DOOR_CAMERA_TYPE_DEFAULT))
+                {
+
+                }
+                else if (Temp_TYPE_DOOR_CAMERA_CONTROL.equals(Const.DOOR_CAMERA_TYPE_RF_DOOR_CAMERA))
+                {
+                    testAPI = mWallPadAPI.Get_RFDoorCamController();
+                }
+                else if (Temp_TYPE_DOOR_CAMERA_CONTROL.equals(Const.DOOR_CAMERA_TYPE_SMART_KEY) ||
+                        Temp_TYPE_DOOR_CAMERA_CONTROL.equals(Const.DOOR_CAMERA_TYPE_IOT_SMART) ||
+                        Temp_TYPE_DOOR_CAMERA_CONTROL.equals(Const.DOOR_CAMERA_TYPE_HYOSUNG_SMART) ||
+                        Temp_TYPE_DOOR_CAMERA_CONTROL.equals(Const.DOOR_CAMERA_TYPE_DAEWOO_SMART)
+                        )
+                {
+                    testAPI = mWallPadAPI.Get_SmartKeyRfDoorController();
+                }
+                else if (Temp_TYPE_DOOR_CAMERA_CONTROL.equals(Const.DOOR_CAMERA_TYPE_UKS))
+                {
+
+                }
+                else if (Temp_TYPE_DOOR_CAMERA_CONTROL.equals(Const.DOOR_CAMERA_TYPE_ETC))
+                {
+
+                }
+
+                break;
+
+            case Const.CONTROLLER_TYPE_HDC_ALLLIGHT:
+                testAPI = mWallPadAPI.Get_AllLightHDCController();
+                break;
+
+            case Const.CONTROLLER_TYPE_HDC_GATEWAY:
+                testAPI = mWallPadAPI.Get_IGW200dController();
+                break;
+
+            case Const.CONTROLLER_TYPE_SMART_DIST:
+                testAPI = mWallPadAPI.Get_SdbController();
+                break;
+
+            case Const.CONTROLLER_TYPE_SMART_DIST_LIVEM:
+                testAPI = mWallPadAPI.Get_Sdb_LivingRoomLightAPI();
+                break;
+
+            case Const.CONTROLLER_TYPE_IGW300:
+                testAPI = mWallPadAPI.Get_IGW300Controller();
+                break;
+
+            case Const.CONTROLLER_TYPE_SENSOR_AP:
+                testAPI = mWallPadAPI.Get_SensorAp_API();
+                break;
+
+            case Const.CONTROLLER_TYPE_INNERROOM_DETECT_SENSOR:
+                testAPI = mWallPadAPI.Get_InRoomDetectSensor_API();
+                break;
+
+            case Const.CONTROLLER_TYPE_DIMMING_KCC:
+                testAPI = mWallPadAPI.Get_KCCDimmingController();
+                break;
+
+            default:
+                break;
+        }
+
+
+        if (testAPI != null) {
+            Log.d(TAG, "test -------------- " + idx );
+            testAPI.TRInfo.GetTransactionList(idx);
+
+            String strTotalSuccessRate = "";
+            double nTotalSuccessRate = testAPI.TRInfo.GetSuccessRate(true);
+            if (nTotalSuccessRate > -1.0) {
+                strTotalSuccessRate = String.format("%.2f", nTotalSuccessRate);
+            }
+
+            result.append("\n");
+            result.append("- Total count : " + (testAPI.TRInfo.totalSuccess + testAPI.TRInfo.totalFail)
+                    + "\n   Success : " + testAPI.TRInfo.totalSuccess
+                    + "\n   Fail : " + testAPI.TRInfo.totalFail
+                    + "\n   Success Rate : " + strTotalSuccessRate + "%"
+            );
+
+            String strRecentSuccessRate = "";
+            double nRecentSuccessRate = testAPI.TRInfo.GetSuccessRate(false);
+            if (nRecentSuccessRate > -1.0) {
+                strRecentSuccessRate = String.format("%.2f", nRecentSuccessRate);
+            }
+
+            result.append("\n\n");
+            result.append("- Recent count : " + (testAPI.TRInfo.RecentSuccess + testAPI.TRInfo.RecentFail)
+                    + "\n   Success : " + testAPI.TRInfo.RecentSuccess
+                    + "\n   Fail : " + testAPI.TRInfo.RecentFail
+                    + "\n   Success Rate : " + strRecentSuccessRate + "%"
+            );
+            result.append("\n\n");
+
+            Log.d(TAG, "nRecentSuccessRate -------------- " + nRecentSuccessRate );
+
+/*
+            if (testAPI.TRInfo.recentList != null)
+            {
+                String retStr = "result:";
+                for(int i = 0; i< testAPI.TRInfo.recentList.length; i++)
+                {
+                    retStr+=("["+i+":"+testAPI.TRInfo.recentList[i]+"]");
+                    if (i%10 == 0)
+                    {
+                        result.append(retStr);
+                        retStr = " ";
+                    }
+                }
+                result.append(retStr);
+            }
+*/
+        }
+        else
+        {
+            result.append(" 해당 드라이버 로딩 실패\n");
+        }
+
+        return result.toString();
+    }
+
+
+    // LightLivingRoom Controller의 누적 Test결과 String을 return
+    private String resultTestLightLivingRoomController(int type, int idx) {
+        StringBuilder result = new StringBuilder();
+
+        WallPadDevAPI testAPI = mWallPadAPI.Get_LightController();
+
+        testAPI.TRInfo.GetTransactionList(idx);
+
+        result.append("Total Success : " + testAPI.TRInfo.totalSuccess
+                + " Fail : " + testAPI.TRInfo.totalFail
+                + "Success Rate : " + testAPI.TRInfo.GetSuccessRate(true));
+        result.append("\n");
+
+        result.append("Recent Success : " + testAPI.TRInfo.RecentSuccess
+                + " Fail : " + testAPI.TRInfo.RecentFail
+                + "Success Rate : " + testAPI.TRInfo.GetSuccessRate(false));
+        result.append("\n");
+
+        if (testAPI.TRInfo.recentList != null)
+        {
+            String retStr = "result:";
+            for(int i = 0; i< testAPI.TRInfo.recentList.length; i++)
+            {
+                retStr+=("["+i+":"+testAPI.TRInfo.recentList[i]+"]");
+                if (i%10 == 0)
+                {
+                    result.append(retStr);
+                    retStr = " ";
+                }
+            }
+            result.append(retStr);
+        }
+
+        return result.toString();
+    }
+
+
+
+
+
+
+
+
+
+    // test RequestVersion
+    private String resultRequestDeviceVersion(int type) {
+        StringBuilder result = new StringBuilder();
+        int deviceID = -1;
+
+        switch (type) {
+            case Const.CONTROLLER_TYPE_BATH_PHONE:
+                deviceID = Const.DEVICE_TYPE_BATH_PHONE;
+                break;
+
+            case Const.CONTROLLER_TYPE_KICHEN_TV:
+                deviceID = Const.DEVICE_TYPE_KITCHEN_TV;
+                break;
+
+            default:
+                break;
+        }
+
+        if (deviceID != -1) {
+            if (sendRequestVersion(deviceID) == true) {
+                result.append("send RequestVersion : OK");
+            }
+            else {
+                result.append("send RequestVersion : Fail");
+            }
+        }
+
+        return result.toString();
+    }
+
+
+    // RequestVersion을 PhonNRemocon에 전송
+    private boolean sendRequestVersion(int deviceID) {
+        boolean ret = false;
+
+        PhonNRemocon PnRCtr = mWallPadAPI.Get_PhonNRemoconController();
+        if (PnRCtr != null) {
+            PnRCtr.RequestVersion((byte)deviceID);
+
+            ret = true;
+        }
+
+        if(DEBUG)   Log.i(TAG, "sendRequestVersion() deviceID : " + deviceID
+                + ", ret : " + ret
+        );
+
+        return ret;
+    }
+
+
+
+    // PhonNRemocon으로부터 수신한 RequestVersion Ack를 result에 설정
+    public void resultDeviceVersionAck(byte[] arrData) {
+        StringBuilder result = new StringBuilder();
+
+        if ((arrData != null) && (arrData.length > 3)) {
+            result.append("received RequestVersion Ack");
+
+            String strVersionResult = String.format("0x%02X, 0x%02X, 0x%02X, 0x%02X"
+                    , arrData[0]
+                    , arrData[1]
+                    , arrData[2]
+                    , arrData[3]
+            );
+
+            result.append("\n" + strVersionResult);
+            result.append("\n\n");
+
+            mTV_Result.append(result);
+        }
+    }
+
+
+
+
+
+/*
+    private final int MESSAGE_BASE = 1000;
+    private final int MESSAGE_DEVICE_VERSION_BROADCAST_EVENT =        MESSAGE_BASE + 0;
+
+
+
+    private Handler mHandler = new Handler()
+    {
+        public void handleMessage(Message msg)
+        {
+            super.handleMessage(msg);
+
+            StringBuilder result = new StringBuilder();
+            switch (msg.what)
+            {
+                case MESSAGE_DEVICE_VERSION_BROADCAST_EVENT:
+                {
+                    resultTestBathPhone();
+
+                    resultTestKichenTV()();
+                }
+                break;
+
+                default:
+                    break;
+            }
+        }
+    };
+*/
+
+
+
+    // unregister BR
+    private void unregisterBroadCastReceiver() {
+        if (mCallEventReceiver != null) {
+            mActivity.unregisterReceiver(mCallEventReceiver);
+        }
+    }
+
+    // register BR
+    private void registerBroadCastReceiver() {
+        // Create a filter with the broadcast intents we are interested in.
+        IntentFilter filter = new IntentFilter();
+        filter.addAction(CallEventReceiver.CALL_EVENT_ACTION);
+        mActivity.registerReceiver(mCallEventReceiver, filter, null, null);
+    }
+
+
+
+
+    public class CallEventReceiver extends BroadcastReceiver {
+        private final String TAG = "CallEventReceiver";
+
+        private final boolean DEBUG = true;
+
+        public static final String CALL_EVENT_ACTION = "CALL_NOTIFICATION"; //"com.artncore.apps.ic_wallpad.CallEventInterface";
+
+
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            // TODO Auto-generated method stub
+            if (DEBUG)  Log.d(TAG, "--onReceive");
+
+            String action = intent.getAction();
+
+            if (CALL_EVENT_ACTION.equals(action)) {
+                processCallNoti(intent);
+            } else {
+                Log.w(TAG, "Registered for but not handling action " + action);
+            }
+        }
+    }
+
+
+    private final String EVENT_CALL_DATA = "MESSAGE";
+
+    public static final int REQUEST_VERSION_ACK     = 5;
+    private final String EVENT_BUNDLE_DATA = "VERSION";
+
+    // PhonNRemocon으로부터 수신한 BR을 처리
+    public void processCallNoti(Intent intent) {
+        if (intent != null) {
+            int callMsg = intent.getIntExtra(EVENT_CALL_DATA, -1);
+
+            if (callMsg != -1) {
+                if (DEBUG) Log.d(TAG, "processCallNoti() callMsg : " + callMsg);
+
+                switch(callMsg) {
+                    case REQUEST_VERSION_ACK:
+                    {
+                        Bundle bundle = intent.getExtras();
+                        if (bundle != null) {
+                            final byte[] arrData = bundle.getByteArray(EVENT_BUNDLE_DATA);
+                            if (arrData != null) {
+                                if (DEBUG) {
+                                    for (int i=0; i<arrData.length; i++)
+                                        Log.d(TAG, "arrData(" + i + ") : " + arrData[i]);
+                                }
+
+                                try {
+                                    Runnable runner =new Runnable() {
+                                        public void run() {
+                                            resultDeviceVersionAck(arrData);
+                                        }
+                                    };
+
+                                    if(runner != null)
+                                        mActivity.runOnUiThread(runner);
+                                } catch(Exception e){
+                                    e.printStackTrace();
+                                }
+                            }
+                        }
+                    }
+                    break;
+                }
+
+                if (DEBUG)  Log.d(TAG, "processCallNoti()  callMsg : " + callMsg);
+            }
+            else {
+                if (DEBUG)  Log.d(TAG, "bundle == null");
+            }
+        }
+    }
+
+
+
+
+
+
+
+}

+ 1136 - 1166
ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/CheckEtcFragment.java

@@ -1,1166 +1,1136 @@
-package com.artncore.managersetting.ui.fragments;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.List;
-
-import kr.co.icontrols.wallpadsupport.WpadSound;
-import kr.co.icontrols.wallpadsupport.WpadSound.SND;
-import android.app.Activity;
-import android.app.Dialog;
-import android.content.ContentResolver;
-import android.content.DialogInterface;
-import android.os.Bundle;
-import android.os.Handler;
-import android.provider.Settings;
-import android.provider.Settings.SettingNotFoundException;
-//import android.support.v4.app.Fragment;
-import androidx.fragment.app.Fragment;
-import androidx.core.view.MotionEventCompat;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.WindowManager;
-import android.view.View.OnTouchListener;
-import android.widget.AdapterView;
-import android.widget.AdapterView.OnItemSelectedListener;
-import android.widget.ArrayAdapter;
-import android.widget.Button;
-import android.widget.ScrollView;
-import android.widget.Spinner;
-import android.widget.TextView;
-
-
-import com.artncore.WallPadDataMgr.WallpadDeviceSet;
-import com.artncore.deviceinterface.WallPadInterface;
-import com.artncore.managersetting.R;
-import com.artncore.managersetting.domain.Const;
-import com.artncore.managersetting.ui.AudioRecordController;
-import com.artncore.managersetting.ui.CameraTestDialog;
-import com.artncore.managersetting.ui.RecordTestDialog;
-import com.artncore.managersetting.ui.activities.MainActivity;
-import com.artncore.managersetting.util.StorageUtil;
-import com.artncore.managersetting.util.StringUtil;
-import com.artncore.wallpadapi.WallPadAPI;
-import com.util.LogUtil;
-
-/**
- * A list fragment representing a list of Items. This fragment also supports
- * tablet devices by allowing list items to be given an 'activated' state upon
- * selection. This helps indicate which item is currently being viewed in a
- * {link ItemDetailFragment}.
- * <p>
- * Ativities containing this fragment MUST implement the {link Callbacks}
- * interface.
- */
-public class CheckEtcFragment extends Fragment implements DialogInterface.OnDismissListener {
-    private static final String TAG = "CheckEtcFragment";
-
-    private final boolean DEBUG = true;
-
-    public final int ETC_TYPE_BASE = Const.COMMON_TYPE_BASE;
-    public final int ETC_TYPE_USB_TEST =                 ETC_TYPE_BASE + 0;
-    public final int ETC_TYPE_WALLPAD_CAMERA_TEST =      ETC_TYPE_BASE + 1;
-    public final int ETC_TYPE_DOOR_CAMERA_TEST =         ETC_TYPE_BASE + 2;
-    public final int ETC_TYPE_NAND_TEST =                ETC_TYPE_BASE + 3;
-    public final int ETC_TYPE_HW_LED_BUTTON_TEST =       ETC_TYPE_BASE + 4;
-    public final int ETC_TYPE_MIC_SPEAKER_TEST =         ETC_TYPE_BASE + 5;
-    public final int ETC_TYPE_BACKLIGHT_TEST =           ETC_TYPE_BASE + 6;
-    public final int ETC_TYPE_SMART_DOOR_CAMERA_RECORDING_TEST = ETC_TYPE_BASE + 7;
-
-
-    private Activity mActivity;
-    private WpadSound mWpadSound;
-    private WallPadAPI mWallPadAPI;
-    private List<String> mEtcList = new ArrayList<String>();
-    private Button mBtnTest;
-    private TextView mTV_Result;
-    private int mNumber = 1;
-
-    private int mSelectedIdx = -1;
-
-    private AudioRecordController mAudioRecordController = null;
-
-    List<String> filesList = new ArrayList<String>();
-
-    // constructor
-    public CheckEtcFragment() {
-    }
-
-    @Override
-    public void onAttach(Activity activity) {
-        super.onAttach(activity);
-
-        mActivity = activity;
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        if (DEBUG)  Log.d(TAG, "onCreate() ");
-
-        super.onCreate(savedInstanceState);
-
-        mWallPadAPI = MainActivity.getWallPadAPI();
-        mWpadSound = MainActivity.getWpadSound();
-
-        mEtcList.add(mActivity.getString(R.string.check_etc_usb_test));
-        mEtcList.add(mActivity.getString(R.string.check_etc_wallpad_camera_test));
-        mEtcList.add(mActivity.getString(R.string.check_etc_door_camera_test));
-        mEtcList.add(mActivity.getString(R.string.check_etc_nand_test));
-        mEtcList.add(mActivity.getString(R.string.check_etc_hw_led_button_test));
-        mEtcList.add(mActivity.getString(R.string.check_etc_mic_speaker_test));
-        mEtcList.add(mActivity.getString(R.string.check_etc_backlight_test));
-
-        WallpadDeviceSet mWallpadDeviceSet = new WallpadDeviceSet(getContext());
-        int[] anFrontCameraType = mWallpadDeviceSet.Get_RFDoorCAM_Info();   // 현관카메라 종류
-        if (anFrontCameraType != null) {
-            doorCamType = anFrontCameraType[1];
-            Log.d(TAG, "[onCreate] doorCamType [" + doorCamType + "]");
-            if (doorCamType == WallpadDeviceSet.DOORTYPE_IOT_SMART)
-                mEtcList.add(mActivity.getString(R.string.check_etc_smart_door_camera_recording_test));
-        }
-        mWallpadDeviceSet.closeDB();
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-        View rootView = (View) inflater.inflate(R.layout.check_controller_container,
-                container, false);
-
-/*
-rootView.setFocusableInTouchMode(true);
-rootView.requestFocus();
-rootView.setOnKeyListener( new OnKeyListener() {
-    @Override
-    public boolean onKey( View v, int keyCode, KeyEvent event ) {
-        if (DEBUG) Log.d(TAG, "onKey() keyCode: "+keyCode+" event.getAction(): "+event.getAction());
-
-        switch (keyCode) {
-            case Const.EVT_RING:
-            case Const.BTN_DOOR:
-            case Const.BTN_EMR:
-            case Const.BTN_CALL:
-            case Const.BTN_OPEN:
-                return true;
-        }
-
-        return false;
-    }
-});
-*/
-
-        return (View)rootView;
-    }
-
-    @Override
-    public void onViewCreated(View view, Bundle savedInstanceState) {
-        super.onViewCreated(view, savedInstanceState);
-
-        if (savedInstanceState != null) {}
-
-        Spinner controllerSpinner = (Spinner)view.findViewById(R.id.controller_spinner);
-        mBtnTest = (Button)view.findViewById(R.id.btn_test);
-        mTV_Result = (TextView)view.findViewById(R.id.tv_result);
-
-        ScrollView mScrollView = (ScrollView) view.findViewById(R.id.check_controller_scrollview);
-        mScrollView.setOnTouchListener(new OnTouchListener() {
-
-            @Override
-            public boolean onTouch(View v, MotionEvent event) {
-                switch (MotionEventCompat.getActionMasked(event)) {
-
-                    case MotionEvent.ACTION_UP:
-                        MainActivity.setFinishTimerReset();
-                        break;
-
-                    default:
-                        break;
-                }
-                return false;
-            }
-        });
-
-        ArrayAdapter controllerAdapter = new ArrayAdapter(mActivity
-                , android.R.layout.simple_spinner_item
-                , mEtcList);
-
-//            ArrayAdapter counterAdapter = ArrayAdapter.createFromResource(this,
-//                    R.array.day_of_week_types, android.R.layout.simple_spinner_item);
-
-        controllerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
-        controllerSpinner.setAdapter(controllerAdapter);
-        controllerSpinner.setPrompt("select controller");
-
-        controllerSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
-            @Override
-            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
-                if (DEBUG)  Log.d(TAG, "onItemSelected() position : " + position);
-
-                MainActivity.setFinishTimerReset();
-                mSelectedIdx = position;
-            }
-
-            @Override
-            public void onNothingSelected(AdapterView<?> parent) {
-            }
-        });
-
-
-
-        mBtnTest.setOnClickListener(mButtonClick);
-    }
-
-
-
-    @Override
-    public void onPause() {
-        stopAudioRecording();
-        closeDialog();
-
-        super.onPause();
-    }
-
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-    }
-
-
-    @Override
-    public void onDetach() {
-        super.onDetach();
-
-        mWallPadAPI = null;
-    }
-
-
-    @Override
-    public void onSaveInstanceState(Bundle outState) {
-        super.onSaveInstanceState(outState);
-    }
-
-
-
-    private View.OnClickListener mButtonClick = new View.OnClickListener() {
-        @Override
-        public void onClick(View v) {
-            v.setEnabled(false);
-
-            mWpadSound.Play(SND.effect.TOUCH_LATCHED);
-            MainActivity.setFinishTimerReset();
-
-            switch(v.getId())
-            {
-                case R.id.btn_test:
-                {
-                    if (DEBUG)  Log.d(TAG, "onClick() btn_test" );
-
-                    String controllerName = mEtcList.get(mSelectedIdx);
-                    //if (DEBUG)    Toast.makeText(mActivity, controllerName + " test", Toast.LENGTH_SHORT).show();
-
-                    doTestEtc(mSelectedIdx);
-                }
-                break;
-
-                default:
-                    break;
-            }
-
-        }
-    };
-
-
-    // do test
-    private void doTestEtc(int idx) {
-        StringBuilder result = new StringBuilder();
-        String title = String.valueOf(mNumber++) + ". " ;
-
-        int type = ETC_TYPE_BASE + idx;
-        switch (type) {
-            case ETC_TYPE_DOOR_CAMERA_TEST:
-                title += mEtcList.get(idx) + " " /*+ mActivity.getString(R.string.test)*/;
-                result.append(title + testDoorCamera());
-                result.append("\n");
-                break;
-
-            case ETC_TYPE_WALLPAD_CAMERA_TEST:
-                title += mEtcList.get(idx) + " " /*+ mActivity.getString(R.string.test)*/;
-                result.append(title + testWallpadCamera());
-                result.append("\n");
-                break;
-
-            case ETC_TYPE_USB_TEST:
-                title += mEtcList.get(idx) + " " /*+ mActivity.getString(R.string.test)*/;
-                result.append(title + testUSB());
-                result.append("\n");
-
-                mBtnTest.setEnabled(true);
-                break;
-
-            case ETC_TYPE_NAND_TEST:
-                title += mEtcList.get(idx) + " " /*+ mActivity.getString(R.string.test)*/;
-                result.append(title + testNand());
-                result.append("\n");
-
-                mBtnTest.setEnabled(true);
-                break;
-
-            case ETC_TYPE_HW_LED_BUTTON_TEST:
-                title += mEtcList.get(idx) + " " /*+ mActivity.getString(R.string.test)*/;
-                result.append(title + testHWLedButton());
-                result.append("\n");
-
-                mBtnTest.setEnabled(true);
-                break;
-
-            case ETC_TYPE_MIC_SPEAKER_TEST:
-                title += mEtcList.get(idx) + " " /*+ mActivity.getString(R.string.test)*/;
-                result.append(title + testMicInSpeakerOut());
-                result.append("\n");
-
-                mBtnTest.setEnabled(true);
-                break;
-
-            case ETC_TYPE_BACKLIGHT_TEST:
-                title += mEtcList.get(idx) + " " /*+ mActivity.getString(R.string.test)*/;
-                result.append(title + testBacklight());
-                result.append("\n");
-
-                mBtnTest.setEnabled(true);
-                break;
-
-            case ETC_TYPE_SMART_DOOR_CAMERA_RECORDING_TEST:
-                title += mEtcList.get(idx) + " " /*+ mActivity.getString(R.string.test)*/;
-                result.append(title + testSmartDoorCamRecording());
-                result.append("\n");
-
-                mBtnTest.setEnabled(true);
-                break;
-
-            default:
-                break;
-        }
-
-        mTV_Result.append(result + "\n");
-    }
-
-
-
-    private Dialog mDialog;
-    // close Dialog
-    public void closeDialog() {
-        if (mDialog != null) {
-            mDialog.dismiss();
-            mDialog = null;
-
-            mBtnTest.setEnabled(true);
-        }
-    }
-
-
-    @Override
-    public void onDismiss(DialogInterface dialog) {
-        if (DEBUG)  Log.d(TAG, "onDismiss()" );
-
-        closeDialog();
-    }
-
-    public static int doorCamType = -1;
-
-    // test DoorCamera
-    private String testDoorCamera() {
-        StringBuilder result = new StringBuilder();
-
-        mDialog = new CameraTestDialog(mActivity, Const.CAMERA_TYPE_DOOR, null);
-        if (mDialog != null) {
-            mDialog.setOnDismissListener(this);
-            mDialog.show();
-        }
-
-        return result.toString();
-    }
-
-
-    // test WallpadCamera
-    private String testWallpadCamera() {
-        StringBuilder result = new StringBuilder();
-
-        mDialog = new CameraTestDialog(mActivity, Const.CAMERA_TYPE_WALLPAD, null);
-        if (mDialog != null) {
-            mDialog.setOnDismissListener(this);
-            mDialog.show();
-        }
-
-        return result.toString();
-    }
-
-
-
-
-
-
-    // return UsedUSBStorageSize
-    public String getUsedUSBStorageSize() {
-        String result = "\nUsed Size : ";
-
-        if (StorageUtil.isStorageMounted(USB_STORAGE_0_PATH)) {
-            result += StringUtil.formatSize(StringUtil.FORMAT_BYTE
-                    , StorageUtil.getTotalUSBStorageSize(USB_STORAGE_0_PATH) - StorageUtil.getAvailableUSBStorageSize(USB_STORAGE_0_PATH));
-        }
-
-        return result.toString();
-    }
-
-
-    private String USB_STORAGE_0_PATH = "/storage/usb0";
-    private final int USB_TEST_READ_FILE_ID = R.raw.read_write_test;
-    private final String USB_TEST_READ_WRITE_FILE = "read_write_test.bin";
-    private final String USB_TEST_WRITE_PATH = USB_STORAGE_0_PATH + "/wallpadtest/";
-    private final String USB_TEST_WRITE_FILE_PATH = USB_TEST_WRITE_PATH + USB_TEST_READ_WRITE_FILE;
-    private final int BUFFER_SIZE = 4096;
-    // test USB
-    private String testUSB() {
-        StringBuilder result = new StringBuilder();
-        result.append(" - USB의 파일중 확장자 zip, 그림파일 검색하여 리스트 출력 ");
-        result.append("\n결과: ");
-        try
-        {
-            filesList.clear();
-
-            File dirUsb;
-            String Uname = "";
-            File f1 = new File("/storage");
-            if(f1.isDirectory())
-            {
-                //Log.i(TAG, "EXIST : /storage");
-                File[] f1List = f1.listFiles();
-                if(f1List!=null)
-                {
-                    for(int i = 0; i < f1List.length; i++)
-                    {
-                        if(f1List[i]!=null)
-                        {
-                            String name = f1List[i].getName();
-                            //Log.i(TAG, "f1List["+i+"] = " + name);
-
-                            if(name.contains("udiskh"))
-                            {
-                                Uname = name;
-                                //Log.i(TAG, "Uname = " + Uname);
-                            }
-                        }
-
-                    }
-                }
-
-            }
-            String UsbDir = "/storage/" + Uname;
-            Log.d(TAG, "UsbDir = " + UsbDir);
-
-            dirUsb = new File(UsbDir);
-
-            printfiles(dirUsb);
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-        } catch(Exception e) {
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
-        }
-
-        if (filesList.size() != 0)
-        {
-            result.append("총 " + filesList.size() + "파일 검색 완료");
-            for (int i = 0; i < filesList.size(); i++)
-            {
-                result.append("\n    "+(i+1)+"): ");
-                result.append(filesList.get(i));
-            }
-        }
-        else
-        {
-            result.append("파일이 없습니다.");
-        }
-
-        return result.toString();
-    }
-
-    public void printfiles(File file)
-    {
-        File[] list = file.listFiles();
-
-        //Log.d(TAG, "The full PATH to the sdcard location is:" +file.getPath());
-        if(list == null)
-        {
-            Log.d(TAG, "No File in "+ file.getPath());
-            return;
-        }
-        for (int i = 0; i < list.length; i++)
-        {
-
-            File temp_file = new File(file.getAbsolutePath(),list[i].getName());
-            if (temp_file.isDirectory() && temp_file.listFiles() != null)
-            {
-                //Log.d(TAG, "PATH folder" +temp_file.getAbsolutePath());
-                //I am inside The Directory... Searching:) So i am calling printfiles(File file) function to print the files in the directory
-                printfiles(temp_file);
-            }
-            else
-            {
-                String filename = temp_file.getName();
-                boolean isAccept = false;
-
-                if(filename.toLowerCase().endsWith(".jpg") == true)
-                {
-                    isAccept = true;
-                }
-                else if(filename.toLowerCase().endsWith(".jpeg") == true)
-                {
-                    isAccept = true;
-                }
-                else if(filename.toLowerCase().endsWith(".png") == true)
-                {
-                    isAccept = true;
-                }
-                else if(filename.toLowerCase().endsWith(".bmp") == true)
-                {
-                    isAccept = true;
-                }
-                else if(filename.toLowerCase().endsWith(".zip") == true)
-                {
-                    isAccept = true;
-                }
-                else
-                {
-                    isAccept = false;
-                }
-
-                if(isAccept == true)
-                {
-                    filesList.add(temp_file.getAbsolutePath());
-                }
-            }
-        }
-    }
-
-    // file read, write test를 수행하고, 그 결과 String을 return
-    private String readWriteFile(int readResID, String readFilePath, String writeFolderPath, String writeFilePath) {
-        StringBuilder result = new StringBuilder();
-        //InputStream readFileStream = mActivity.getResources().openRawResource(readResID);
-
-        //BufferedReader bufferedReader = null;
-        InputStream bufferedReader = null;
-        FileOutputStream fileOutputStream = null;
-
-
-        result.append("\ncreate folder -" + writeFolderPath + " : ");
-        if (StorageUtil.createDirectory(writeFolderPath)) {
-            result.append("OK");
-
-            try {
-                File writeFile = new File(writeFilePath);
-                if (writeFile.exists()) {
-                    FileDelete(writeFile);
-                }
-                result.append("\ndelete exist file : OK");
-            } catch (RuntimeException re) {
-                Log.e(TAG, re.toString());
-            } catch (Exception ex) {
-                result.append("\ndelete exist file : IOException - " + ex.toString());
-            }
-
-
-            result.append("\ninput file open - " + readFilePath + " : ");
-            try {
-                //bufferedReader = new BufferedReader(new InputStreamReader(mActivity.getResources().openRawResource(readResID)));
-                bufferedReader = mActivity.getResources().openRawResource(readResID);
-
-                result.append("OK");
-            } catch (RuntimeException re) {
-                Log.e(TAG, re.toString());
-            } catch (Exception ex) {
-                result.append("Exception : " + ex.toString());
-                //fileInputStream = null;
-            }
-
-
-            result.append("\noutput file open - " + writeFilePath + " : ");
-            try {
-                fileOutputStream = new FileOutputStream(new File(writeFilePath));
-
-                result.append("OK");
-            } catch (FileNotFoundException ex) {
-                result.append("FileNotFoundException - " + ex.toString());
-                //fileOutputStream = null;
-            }
-
-
-            result.append("\nfile read/write : ");
-            if ((bufferedReader != null) && (fileOutputStream != null)) {
-                try {
-                    byte[] buffer = new byte[BUFFER_SIZE];
-                    int writeSize = 0;
-                    int totalwriteSize = 0;
-                    int writeCnt = 0;
-
-//                  while (bufferedReader.ready())
-                    {
-                        while((writeSize=bufferedReader.read(buffer)) != -1) {
-                            fileOutputStream.write(buffer, 0, writeSize);
-
-                            totalwriteSize += writeSize;
-/*
-                            try {
-                                Thread.sleep(10);
-                            } catch (Exception e) {
-                                String FailMSG = "Read Thread wait catch exception "+e.toString();
-                                if (DEBUG) Log.d(TAG, FailMSG);
-                            }
-*/
-                        }
-                    }
-
-                    Log.d(TAG, "outputStream.write Total : " + writeCnt + " , " + totalwriteSize);
-
-                    result.append(" - total read/write byte : " + StringUtil.formatSize(StringUtil.FORMAT_BYTE, totalwriteSize));
-
-                } catch (IOException ex) {
-                    result.append("IOException - " + ex.toString());
-                }
-
-
-                result.append("\nread file close : ");
-                try {
-                    bufferedReader.close();
-
-                    result.append("OK");
-                } catch (IOException ex) {
-                    result.append("IOException - " + ex.toString());
-                }
-
-
-                result.append("\nwrite file close : ");
-                try {
-                    fileOutputStream.close();
-                    result.append("OK");
-                } catch (IOException ex) {
-                    result.append("IOException - " + ex.toString());
-                }
-            }
-        }
-        else {
-            result.append("failed");
-        }
-
-        return result.toString();
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    // return UsedNandStorageSize
-    public String getUsedNandStorageSize() {
-        String result = "\nUsed Size : ";
-
-        result += StringUtil.formatSize(StringUtil.FORMAT_BYTE
-                , StorageUtil.getTotalInternalStorageSize() - StorageUtil.getAvailableInternalStorageSize());
-
-        return result;
-    }
-
-
-    private final String NAND_STORAGE_PATH = Const.CONTENTS_ROOT;
-    private final int NAND_TEST_READ_FILE_ID = R.raw.read_write_test;
-    private final String NAND_TEST_READ_WRITE_FILE = "read_write_test.bin";
-    private final String NAND_TEST_WRITE_PATH = NAND_STORAGE_PATH + "/wallpadtest/";
-    private final String NAND_TEST_WRITE_FILE_PATH = NAND_TEST_WRITE_PATH + NAND_TEST_READ_WRITE_FILE;
-    // test Nand
-    private String testNand() {
-        StringBuilder result = new StringBuilder();
-
-        result.append(getUsedNandStorageSize());
-
-        result.append(readWriteFile(NAND_TEST_READ_FILE_ID
-                , NAND_TEST_READ_WRITE_FILE
-                , NAND_TEST_WRITE_PATH
-                , NAND_TEST_WRITE_FILE_PATH));
-
-        result.append(getUsedNandStorageSize());
-
-
-        result.append("\ndelete write file : ");
-        try {
-            File writeFile = new File(NAND_TEST_WRITE_FILE_PATH);
-            if (writeFile.exists())
-            {
-                FileDelete(writeFile);
-            }
-
-
-            result.append("OK");
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
-        } catch (Exception ex) {
-            result.append("IOException - " + ex.toString());
-        }
-
-
-        result.append(getUsedNandStorageSize());
-
-        return result.toString();
-    }
-
-
-    // sleep Thread
-    private void sleepMS(int ms) {
-        try {
-            Thread.sleep(ms);
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
-        } catch (Exception e) {
-            String FailMSG = "Read Thread wait catch exception "+e.toString();
-            if (DEBUG) Log.d(TAG, FailMSG);
-        }
-    }
-
-
-    // test HWLedButton
-    private String testHWLedButton() {
-        StringBuilder result = new StringBuilder();
-        int ret = -1;
-
-        WallPadInterface wallPadInterface = MainActivity.getWallPadInterface();
-
-        // emergencyLEDControll
-        result.append("\nemergencyLEDControll - On : ");
-        ret = wallPadInterface.emergencyLEDControll(true);
-        if (ret < 0) {
-            result.append("fail - ret " + ret);
-        }
-        else {
-            result.append("OK");
-        }
-
-        sleepMS(100);
-
-        result.append("\nemergencyLEDControll - Off : ");
-        ret = wallPadInterface.emergencyLEDControll(false);
-        if (ret < 0) {
-            result.append("fail - ret " + ret);
-        }
-        else {
-            result.append("OK");
-        }
-
-        sleepMS(100);
-
-
-        // callLEDControll
-        result.append("\ncallLEDControll - On : ");
-        ret = wallPadInterface.callLEDControll(true);
-        if (ret < 0) {
-            result.append("fail - ret " + ret);
-        }
-        else {
-            result.append("OK");
-        }
-
-        sleepMS(100);
-
-        result.append("\ncallLEDControll - Off : ");
-        ret = wallPadInterface.callLEDControll(false);
-        if (ret < 0) {
-            result.append("fail - ret " + ret);
-        }
-        else {
-            result.append("OK");
-        }
-
-        sleepMS(100);
-
-
-        // openLEDControll
-        result.append("\nopenLEDControll - On : ");
-        ret = wallPadInterface.openLEDControll(true);
-        if (ret < 0) {
-            result.append("fail - ret " + ret);
-        }
-        else {
-            result.append("OK");
-        }
-
-        sleepMS(100);
-
-        result.append("\nopenLEDControll - Off : ");
-        ret = wallPadInterface.openLEDControll(false);
-        if (ret < 0) {
-            result.append("fail - ret " + ret);
-        }
-        else {
-            result.append("OK");
-        }
-
-        sleepMS(100);
-
-
-        // frontHomeLEDControll
-        result.append("\nfrontHomeLEDControll - On : ");
-        ret = wallPadInterface.frontHomeLEDControll(true);
-        if (ret < 0) {
-            result.append("fail - ret " + ret);
-        }
-        else {
-            result.append("OK");
-        }
-
-        sleepMS(100);
-
-        result.append("\nfrontHomeLEDControll - Off : ");
-        ret = wallPadInterface.frontHomeLEDControll(false);
-        if (ret < 0) {
-            result.append("fail - ret " + ret);
-        }
-        else {
-            result.append("OK");
-        }
-
-        sleepMS(100);
-
-
-        // frontEMRLEDControll
-        result.append("\nfrontEMRLEDControll - On : ");
-        ret = wallPadInterface.frontEMRLEDControll(true);
-        if (ret < 0) {
-            result.append("fail - ret " + ret);
-        }
-        else {
-            result.append("OK");
-        }
-
-        sleepMS(100);
-
-        result.append("\nfrontEMRLEDControll - Off : ");
-        ret = wallPadInterface.frontEMRLEDControll(false);
-        if (ret < 0) {
-            result.append("fail - ret " + ret);
-        }
-        else {
-            result.append("OK");
-        }
-
-
-        wallPadInterface = null;
-        return result.toString();
-    }
-
-
-
-
-
-
-
-
-
-    private static final int AUDIO_RECORDING_INTERVAL = 10 * 1000;
-
-    private boolean bRunningAudioRecording = false;
-
-    // stop AudioRecording
-    private void stopAudioRecording() {
-        String result = "\naudio record stop : \n";
-
-        if (mAudioRecordController != null) {
-            mAudioRecordController.stop();
-            mAudioRecordController = null;
-
-            mTV_Result.append(result);
-        }
-    }
-
-
-    private final Runnable mAudioRecordingTimeoutChecker = new Runnable() {
-        @Override
-        public void run() {
-            if (bRunningAudioRecording) {
-                stopAudioRecording();
-            }
-        }
-    };
-
-    // start AudioRecordingTimeoutChecker
-    public void startAudioRecordingTimeoutChecker() {
-        mHandler.removeCallbacks(mAudioRecordingTimeoutChecker);
-        mHandler.postDelayed(mAudioRecordingTimeoutChecker, AUDIO_RECORDING_INTERVAL);
-
-        bRunningAudioRecording = true;
-    }
-
-    // sttop AudioRecordingTimeoutChecker
-    public void stopAudioRecordingTimeoutChecker() {
-        mHandler.removeCallbacks(mAudioRecordingTimeoutChecker);
-
-        bRunningAudioRecording = false;
-    }
-
-
-
-
-    private final String AUDIO_RECORDING_ROOT_PATH = Const.CONTENTS_ROOT;
-    private final String AUDIO_RECORDING_DIR_PATH = AUDIO_RECORDING_ROOT_PATH + "/wallpadtest/";
-    private final String AUDIO_RECORDING_FILE = "audio_record.pcm";
-    private final String AUDIO_RECORDING_FILE_PATH = AUDIO_RECORDING_DIR_PATH + AUDIO_RECORDING_FILE;
-
-    // test MicIn SpeakerOut
-    private String testMicInSpeakerOut() {
-        StringBuilder result = new StringBuilder();
-
-        if (mAudioRecordController == null) {
-            mAudioRecordController = new AudioRecordController(mActivity
-                    , AUDIO_RECORDING_DIR_PATH
-                    , AUDIO_RECORDING_FILE
-            );
-
-            result.append("\naudio record start : ");
-            mAudioRecordController.recordAndPlayStart();
-
-            startAudioRecordingTimeoutChecker();
-        }
-        else {
-            result.append("\nalready audio record test progressing: ");
-        }
-
-        return result.toString();
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-
-    private final String SCREEN_AUTO_BRIGHTNESS_ADJ = "screen_auto_brightness_adj";
-
-    private int mCurBrightLevel = 0;
-    private int mMaxBrightLevel = 255;
-
-    private static final int SEEK_BAR_RANGE = 10;
-
-    private final int mScreenBrightnessMinimum = 0;
-    private final int mScreenBrightnessMaximum = 255;
-
-    private final boolean mAutomaticAvailable = false;
-    private boolean mAutomaticMode;
-
-    private int mOldBrightness;
-    private int mOldAutomatic;
-
-    private int mCurBrightness = -1;
-
-    // return BrightnessMode
-    private int getBrightnessMode(int defaultValue) {
-        int brightnessMode = defaultValue;
-        try {
-            brightnessMode = Settings.System.getInt(mActivity.getContentResolver(),
-                    Settings.System.SCREEN_BRIGHTNESS_MODE);
-        } catch (SettingNotFoundException snfe) {
-            snfe.printStackTrace();
-        }
-        return brightnessMode;
-    }
-
-    // return brightness
-    private int getBrightness() {
-
-        int mode = getBrightnessMode(0);
-        float brightness = 0;
-        if (mode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC) {
-            brightness = Settings.System.getFloat(mActivity.getContentResolver(),
-                    SCREEN_AUTO_BRIGHTNESS_ADJ, 0);
-            brightness = (brightness+1)/2;
-        } else {
-            if (mCurBrightness < 0) {
-                brightness = Settings.System.getInt(mActivity.getContentResolver(),
-                        Settings.System.SCREEN_BRIGHTNESS, 100);
-            } else {
-                brightness = mCurBrightness;
-            }
-
-            if (DEBUG)  {
-                Log.d(TAG, "getBrightness() SCREEN_BRIGHTNESS - brightness : " + brightness);
-            }
-
-            brightness = (brightness - mScreenBrightnessMinimum)
-                    / (mScreenBrightnessMaximum - mScreenBrightnessMinimum);
-        }
-        brightness = brightness*SEEK_BAR_RANGE;
-
-        if (brightness > (int)brightness)
-            brightness += 1.0;
-
-        if (DEBUG)  {
-            Log.d(TAG, "getBrightness() brightness : " + brightness);
-        }
-
-        return (int)brightness;
-    }
-
-
-    // set brightness
-    private void setBrightness(int brightness, boolean write) {
-
-        StringBuilder result = new StringBuilder();
-        result.append("\nsetBrightness : ");
-
-        if (DEBUG)  Log.d(TAG, "setBrightness() brightness : " + brightness);
-
-        mCurBrightLevel = brightness;
-
-        if (mAutomaticMode) {
-
-        } else {
-            int range = (mScreenBrightnessMaximum - mScreenBrightnessMinimum);
-            brightness = (brightness * range)/SEEK_BAR_RANGE + mScreenBrightnessMinimum;
-
-            if (DEBUG)  Log.d(TAG, "setBrightness() SCREEN_BRIGHTNESS - brightness : " + brightness);
-
-            if (write) {
-                mCurBrightness = -1;
-                final ContentResolver resolver = mActivity.getContentResolver();
-                Settings.System.putInt(resolver,
-                        Settings.System.SCREEN_BRIGHTNESS, brightness);
-
-
-                WindowManager.LayoutParams lp = ((Activity)mActivity).getWindow().getAttributes();
-                lp.screenBrightness = (float) brightness / mScreenBrightnessMaximum;
-                // lp.flags |= WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
-                ((Activity)mActivity).getWindow().setAttributes(lp);
-
-            } else {
-                mCurBrightness = brightness;
-            }
-
-            result.append(brightness + " : OK");
-            mTV_Result.append(result);
-        }
-    }
-
-
-
-    private static final int BACKLIGHT_CHANGE_INTERVAL = 1 * 1000;
-
-    private boolean bRunningBacklightChange = false;
-
-    private final Handler mHandler = new Handler();
-
-    private final Runnable mBacklightChangeTimeoutChecker = new Runnable() {
-        @Override
-        public void run() {
-            if (bRunningBacklightChange) {
-                if (mCurBrightLevel++ < mMaxBrightLevel) {
-                    setBrightness(mCurBrightLevel, true);
-
-                    mHandler.postDelayed(mBacklightChangeTimeoutChecker, BACKLIGHT_CHANGE_INTERVAL);
-                }
-                else {
-                    bRunningBacklightChange = false;
-                    mTV_Result.append("\r\n");
-                    mTV_Result.append("\r\n");
-                }
-            }
-        }
-    };
-
-    // start BacklightChangeTimeoutChecker
-    public void startBacklightChangeTimeoutChecker()  {
-        mHandler.removeCallbacks(mBacklightChangeTimeoutChecker);
-        mHandler.postDelayed(mBacklightChangeTimeoutChecker, BACKLIGHT_CHANGE_INTERVAL);
-
-        bRunningBacklightChange = true;
-    }
-
-    // stop BacklightChangeTimeoutChecker
-    public void stopBacklightChangeTimeoutChecker() {
-        mHandler.removeCallbacks(mBacklightChangeTimeoutChecker);
-
-        bRunningBacklightChange = false;
-    }
-
-
-
-
-
-
-
-    // test Backlight
-    private String testBacklight() {
-        StringBuilder result = new StringBuilder();
-
-        if (bRunningBacklightChange == false) {
-            mMaxBrightLevel = SEEK_BAR_RANGE;
-            mCurBrightLevel = getBrightness();
-            mCurBrightLevel = 0;
-
-            startBacklightChangeTimeoutChecker();
-        }
-        else {
-            result.append("\nalready backlight test progressing: ");
-        }
-
-        return result.toString();
-    }
-
-
-
-    // test Smart Door Camera Recording
-    private String testSmartDoorCamRecording() {
-        StringBuilder result = new StringBuilder();
-
-        mDialog = new RecordTestDialog(mActivity);
-        if (mDialog != null) {
-            mDialog.setOnDismissListener(this);
-            mDialog.show();
-        }
-
-        return result.toString();
-    }
-
-    private synchronized void FileDelete(File file)
-    {
-        if(file!=null && file.exists()) {
-            file.delete();
-        }
-    }
-}
+package com.artncore.managersetting.ui.fragments;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+import kr.co.icontrols.wallpadsupport.WpadSound;
+import kr.co.icontrols.wallpadsupport.WpadSound.SND;
+import android.app.Activity;
+import android.app.Dialog;
+import android.content.ContentResolver;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.os.Handler;
+import android.provider.Settings;
+import android.provider.Settings.SettingNotFoundException;
+//import android.support.v4.app.Fragment;
+import androidx.fragment.app.Fragment;
+import androidx.core.view.MotionEventCompat;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+import android.view.View.OnTouchListener;
+import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemSelectedListener;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.ScrollView;
+import android.widget.Spinner;
+import android.widget.TextView;
+
+
+import com.artncore.WallPadDataMgr.WallpadDeviceSet;
+import com.artncore.deviceinterface.WallPadInterface;
+import com.artncore.managersetting.R;
+import com.artncore.managersetting.domain.Const;
+import com.artncore.managersetting.ui.AudioRecordController;
+import com.artncore.managersetting.ui.CameraTestDialog;
+import com.artncore.managersetting.ui.RecordTestDialog;
+import com.artncore.managersetting.ui.activities.MainActivity;
+import com.artncore.managersetting.util.StorageUtil;
+import com.artncore.managersetting.util.StringUtil;
+import com.artncore.wallpadapi.WallPadAPI;
+
+/**
+ * A list fragment representing a list of Items. This fragment also supports
+ * tablet devices by allowing list items to be given an 'activated' state upon
+ * selection. This helps indicate which item is currently being viewed in a
+ * {link ItemDetailFragment}.
+ * <p>
+ * Ativities containing this fragment MUST implement the {link Callbacks}
+ * interface.
+ */
+public class CheckEtcFragment extends Fragment implements DialogInterface.OnDismissListener {
+    private static final String TAG = "CheckEtcFragment";
+
+    private final boolean DEBUG = true;
+
+    public final int ETC_TYPE_BASE = Const.COMMON_TYPE_BASE;
+    public final int ETC_TYPE_USB_TEST =                 ETC_TYPE_BASE + 0;
+    public final int ETC_TYPE_WALLPAD_CAMERA_TEST =      ETC_TYPE_BASE + 1;
+    public final int ETC_TYPE_DOOR_CAMERA_TEST =         ETC_TYPE_BASE + 2;
+    public final int ETC_TYPE_NAND_TEST =                ETC_TYPE_BASE + 3;
+    public final int ETC_TYPE_HW_LED_BUTTON_TEST =       ETC_TYPE_BASE + 4;
+    public final int ETC_TYPE_MIC_SPEAKER_TEST =         ETC_TYPE_BASE + 5;
+    public final int ETC_TYPE_BACKLIGHT_TEST =           ETC_TYPE_BASE + 6;
+    public final int ETC_TYPE_SMART_DOOR_CAMERA_RECORDING_TEST = ETC_TYPE_BASE + 7;
+
+
+    private Activity mActivity;
+    private WpadSound mWpadSound;
+    private WallPadAPI mWallPadAPI;
+    private List<String> mEtcList = new ArrayList<String>();
+    private Button mBtnTest;
+    private TextView mTV_Result;
+    private int mNumber = 1;
+
+    private int mSelectedIdx = -1;
+
+    private AudioRecordController mAudioRecordController = null;
+
+    List<String> filesList = new ArrayList<String>();
+
+    // constructor
+    public CheckEtcFragment() {
+    }
+
+    @Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+
+        mActivity = activity;
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        if (DEBUG)  Log.d(TAG, "onCreate() ");
+
+        super.onCreate(savedInstanceState);
+
+        mWallPadAPI = MainActivity.getWallPadAPI();
+        mWpadSound = MainActivity.getWpadSound();
+
+        mEtcList.add(mActivity.getString(R.string.check_etc_usb_test));
+        mEtcList.add(mActivity.getString(R.string.check_etc_wallpad_camera_test));
+        mEtcList.add(mActivity.getString(R.string.check_etc_door_camera_test));
+        mEtcList.add(mActivity.getString(R.string.check_etc_nand_test));
+        mEtcList.add(mActivity.getString(R.string.check_etc_hw_led_button_test));
+        mEtcList.add(mActivity.getString(R.string.check_etc_mic_speaker_test));
+        mEtcList.add(mActivity.getString(R.string.check_etc_backlight_test));
+
+        WallpadDeviceSet mWallpadDeviceSet = new WallpadDeviceSet(getContext());
+        int[] anFrontCameraType = mWallpadDeviceSet.Get_RFDoorCAM_Info();   // 현관카메라 종류
+        if (anFrontCameraType != null) {
+            doorCamType = anFrontCameraType[1];
+            Log.d(TAG, "[onCreate] doorCamType [" + doorCamType + "]");
+            if (doorCamType == WallpadDeviceSet.DOORTYPE_IOT_SMART)
+                mEtcList.add(mActivity.getString(R.string.check_etc_smart_door_camera_recording_test));
+        }
+        mWallpadDeviceSet.closeDB();
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+                             Bundle savedInstanceState) {
+        View rootView = (View) inflater.inflate(R.layout.check_controller_container,
+                container, false);
+
+/*
+rootView.setFocusableInTouchMode(true);
+rootView.requestFocus();
+rootView.setOnKeyListener( new OnKeyListener() {
+    @Override
+    public boolean onKey( View v, int keyCode, KeyEvent event ) {
+        if (DEBUG) Log.d(TAG, "onKey() keyCode: "+keyCode+" event.getAction(): "+event.getAction());
+
+        switch (keyCode) {
+            case Const.EVT_RING:
+            case Const.BTN_DOOR:
+            case Const.BTN_EMR:
+            case Const.BTN_CALL:
+            case Const.BTN_OPEN:
+                return true;
+        }
+
+        return false;
+    }
+});
+*/
+
+        return (View)rootView;
+    }
+
+    @Override
+    public void onViewCreated(View view, Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+
+        if (savedInstanceState != null) {}
+
+        Spinner controllerSpinner = (Spinner)view.findViewById(R.id.controller_spinner);
+        mBtnTest = (Button)view.findViewById(R.id.btn_test);
+        mTV_Result = (TextView)view.findViewById(R.id.tv_result);
+
+        ScrollView mScrollView = (ScrollView) view.findViewById(R.id.check_controller_scrollview);
+        mScrollView.setOnTouchListener(new OnTouchListener() {
+
+            @Override
+            public boolean onTouch(View v, MotionEvent event) {
+                switch (MotionEventCompat.getActionMasked(event)) {
+
+                    case MotionEvent.ACTION_UP:
+                        MainActivity.setFinishTimerReset();
+                        break;
+
+                    default:
+                        break;
+                }
+                return false;
+            }
+        });
+
+        ArrayAdapter controllerAdapter = new ArrayAdapter(mActivity
+                , android.R.layout.simple_spinner_item
+                , mEtcList);
+
+//            ArrayAdapter counterAdapter = ArrayAdapter.createFromResource(this,
+//                    R.array.day_of_week_types, android.R.layout.simple_spinner_item);
+
+        controllerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+        controllerSpinner.setAdapter(controllerAdapter);
+        controllerSpinner.setPrompt("select controller");
+
+        controllerSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
+            @Override
+            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
+                if (DEBUG)  Log.d(TAG, "onItemSelected() position : " + position);
+
+                MainActivity.setFinishTimerReset();
+                mSelectedIdx = position;
+            }
+
+            @Override
+            public void onNothingSelected(AdapterView<?> parent) {
+            }
+        });
+
+
+
+        mBtnTest.setOnClickListener(mButtonClick);
+    }
+
+
+
+    @Override
+    public void onPause() {
+        stopAudioRecording();
+        closeDialog();
+
+        super.onPause();
+    }
+
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+    }
+
+
+    @Override
+    public void onDetach() {
+        super.onDetach();
+
+        mWallPadAPI = null;
+    }
+
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+    }
+
+
+
+    private View.OnClickListener mButtonClick = new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+            v.setEnabled(false);
+
+            mWpadSound.Play(SND.effect.TOUCH_LATCHED);
+            MainActivity.setFinishTimerReset();
+
+            switch(v.getId())
+            {
+                case R.id.btn_test:
+                {
+                    if (DEBUG)  Log.d(TAG, "onClick() btn_test" );
+
+                    String controllerName = mEtcList.get(mSelectedIdx);
+                    //if (DEBUG)    Toast.makeText(mActivity, controllerName + " test", Toast.LENGTH_SHORT).show();
+
+                    doTestEtc(mSelectedIdx);
+                }
+                break;
+
+                default:
+                    break;
+            }
+
+        }
+    };
+
+
+    // do test
+    private void doTestEtc(int idx) {
+        StringBuilder result = new StringBuilder();
+        String title = String.valueOf(mNumber++) + ". " ;
+
+        int type = ETC_TYPE_BASE + idx;
+        switch (type) {
+            case ETC_TYPE_DOOR_CAMERA_TEST:
+                title += mEtcList.get(idx) + " " /*+ mActivity.getString(R.string.test)*/;
+                result.append(title + testDoorCamera());
+                result.append("\n");
+                break;
+
+            case ETC_TYPE_WALLPAD_CAMERA_TEST:
+                title += mEtcList.get(idx) + " " /*+ mActivity.getString(R.string.test)*/;
+                result.append(title + testWallpadCamera());
+                result.append("\n");
+                break;
+
+            case ETC_TYPE_USB_TEST:
+                title += mEtcList.get(idx) + " " /*+ mActivity.getString(R.string.test)*/;
+                result.append(title + testUSB());
+                result.append("\n");
+
+                mBtnTest.setEnabled(true);
+                break;
+
+            case ETC_TYPE_NAND_TEST:
+                title += mEtcList.get(idx) + " " /*+ mActivity.getString(R.string.test)*/;
+                result.append(title + testNand());
+                result.append("\n");
+
+                mBtnTest.setEnabled(true);
+                break;
+
+            case ETC_TYPE_HW_LED_BUTTON_TEST:
+                title += mEtcList.get(idx) + " " /*+ mActivity.getString(R.string.test)*/;
+                result.append(title + testHWLedButton());
+                result.append("\n");
+
+                mBtnTest.setEnabled(true);
+                break;
+
+            case ETC_TYPE_MIC_SPEAKER_TEST:
+                title += mEtcList.get(idx) + " " /*+ mActivity.getString(R.string.test)*/;
+                result.append(title + testMicInSpeakerOut());
+                result.append("\n");
+
+                mBtnTest.setEnabled(true);
+                break;
+
+            case ETC_TYPE_BACKLIGHT_TEST:
+                title += mEtcList.get(idx) + " " /*+ mActivity.getString(R.string.test)*/;
+                result.append(title + testBacklight());
+                result.append("\n");
+
+                mBtnTest.setEnabled(true);
+                break;
+
+            case ETC_TYPE_SMART_DOOR_CAMERA_RECORDING_TEST:
+                title += mEtcList.get(idx) + " " /*+ mActivity.getString(R.string.test)*/;
+                result.append(title + testSmartDoorCamRecording());
+                result.append("\n");
+
+                mBtnTest.setEnabled(true);
+                break;
+
+            default:
+                break;
+        }
+
+        mTV_Result.append(result + "\n");
+    }
+
+
+
+    private Dialog mDialog;
+    // close Dialog
+    public void closeDialog() {
+        if (mDialog != null) {
+            mDialog.dismiss();
+            mDialog = null;
+
+            mBtnTest.setEnabled(true);
+        }
+    }
+
+
+    @Override
+    public void onDismiss(DialogInterface dialog) {
+        if (DEBUG)  Log.d(TAG, "onDismiss()" );
+
+        closeDialog();
+    }
+
+    public static int doorCamType = -1;
+
+    // test DoorCamera
+    private String testDoorCamera() {
+        StringBuilder result = new StringBuilder();
+
+        mDialog = new CameraTestDialog(mActivity, Const.CAMERA_TYPE_DOOR, null);
+        if (mDialog != null) {
+            mDialog.setOnDismissListener(this);
+            mDialog.show();
+        }
+
+        return result.toString();
+    }
+
+
+    // test WallpadCamera
+    private String testWallpadCamera() {
+        StringBuilder result = new StringBuilder();
+
+        mDialog = new CameraTestDialog(mActivity, Const.CAMERA_TYPE_WALLPAD, null);
+        if (mDialog != null) {
+            mDialog.setOnDismissListener(this);
+            mDialog.show();
+        }
+
+        return result.toString();
+    }
+
+
+
+
+
+
+    // return UsedUSBStorageSize
+    public String getUsedUSBStorageSize() {
+        String result = "\nUsed Size : ";
+
+        if (StorageUtil.isStorageMounted(USB_STORAGE_0_PATH)) {
+            result += StringUtil.formatSize(StringUtil.FORMAT_BYTE
+                    , StorageUtil.getTotalUSBStorageSize(USB_STORAGE_0_PATH) - StorageUtil.getAvailableUSBStorageSize(USB_STORAGE_0_PATH));
+        }
+
+        return result.toString();
+    }
+
+
+    private String USB_STORAGE_0_PATH = "/storage/usb0";
+    private final int USB_TEST_READ_FILE_ID = R.raw.read_write_test;
+    private final String USB_TEST_READ_WRITE_FILE = "read_write_test.bin";
+    private final String USB_TEST_WRITE_PATH = USB_STORAGE_0_PATH + "/wallpadtest/";
+    private final String USB_TEST_WRITE_FILE_PATH = USB_TEST_WRITE_PATH + USB_TEST_READ_WRITE_FILE;
+    private final int BUFFER_SIZE = 4096;
+    // test USB
+    private String testUSB() {
+        StringBuilder result = new StringBuilder();
+        result.append(" - USB의 파일중 확장자 zip, 그림파일 검색하여 리스트 출력 ");
+        result.append("\n결과: ");
+        try
+        {
+            filesList.clear();
+
+            File dirUsb;
+            String Uname = "";
+            File f1 = new File("/storage");
+            if(f1.isDirectory())
+            {
+                //Log.i(TAG, "EXIST : /storage");
+                File[] f1List = f1.listFiles();
+                for(int i = 0; i < f1List.length; i++)
+                {
+                    String name = f1List[i].getName();
+                    //Log.i(TAG, "f1List["+i+"] = " + name);
+
+                    if(name.contains("udiskh"))
+                    {
+                        Uname = name;
+                        //Log.i(TAG, "Uname = " + Uname);
+                    }
+                }
+            }
+            String UsbDir = "/storage/" + Uname;
+            Log.d(TAG, "UsbDir = " + UsbDir);
+
+            dirUsb = new File(UsbDir);
+
+            printfiles(dirUsb);
+        } catch(Exception e) {
+            e.printStackTrace();
+        }
+
+        if (filesList.size() != 0)
+        {
+            result.append("총 " + filesList.size() + "파일 검색 완료");
+            for (int i = 0; i < filesList.size(); i++)
+            {
+                result.append("\n    "+(i+1)+"): ");
+                result.append(filesList.get(i));
+            }
+        }
+        else
+        {
+            result.append("파일이 없습니다.");
+        }
+
+        return result.toString();
+    }
+
+    public void printfiles(File file)
+    {
+        File[] list = file.listFiles();
+
+        //Log.d(TAG, "The full PATH to the sdcard location is:" +file.getPath());
+        if(list == null)
+        {
+            Log.d(TAG, "No File in "+ file.getPath());
+            return;
+        }
+        for (int i = 0; i < list.length; i++)
+        {
+
+            File temp_file = new File(file.getAbsolutePath(),list[i].getName());
+            if (temp_file.isDirectory() && temp_file.listFiles() != null)
+            {
+                //Log.d(TAG, "PATH folder" +temp_file.getAbsolutePath());
+                //I am inside The Directory... Searching:) So i am calling printfiles(File file) function to print the files in the directory
+                printfiles(temp_file);
+            }
+            else
+            {
+                String filename = temp_file.getName();
+                boolean isAccept = false;
+
+                if(filename.toLowerCase().endsWith(".jpg") == true)
+                {
+                    isAccept = true;
+                }
+                else if(filename.toLowerCase().endsWith(".jpeg") == true)
+                {
+                    isAccept = true;
+                }
+                else if(filename.toLowerCase().endsWith(".png") == true)
+                {
+                    isAccept = true;
+                }
+                else if(filename.toLowerCase().endsWith(".bmp") == true)
+                {
+                    isAccept = true;
+                }
+                else if(filename.toLowerCase().endsWith(".zip") == true)
+                {
+                    isAccept = true;
+                }
+                else
+                {
+                    isAccept = false;
+                }
+
+                if(isAccept == true)
+                {
+                    filesList.add(temp_file.getAbsolutePath());
+                }
+            }
+        }
+    }
+
+    // file read, write test를 수행하고, 그 결과 String을 return
+    private String readWriteFile(int readResID, String readFilePath, String writeFolderPath, String writeFilePath) {
+        StringBuilder result = new StringBuilder();
+        //InputStream readFileStream = mActivity.getResources().openRawResource(readResID);
+
+        //BufferedReader bufferedReader = null;
+        InputStream bufferedReader = null;
+        FileOutputStream fileOutputStream = null;
+
+
+        result.append("\ncreate folder -" + writeFolderPath + " : ");
+        if (StorageUtil.createDirectory(writeFolderPath)) {
+            result.append("OK");
+
+            try {
+                File writeFile = new File(writeFilePath);
+                if (writeFile.exists())
+                    writeFile.delete();
+
+                result.append("\ndelete exist file : OK");
+            } catch (Exception ex) {
+                result.append("\ndelete exist file : IOException - " + ex.toString());
+            }
+
+
+            result.append("\ninput file open - " + readFilePath + " : ");
+            try {
+                //bufferedReader = new BufferedReader(new InputStreamReader(mActivity.getResources().openRawResource(readResID)));
+                bufferedReader = mActivity.getResources().openRawResource(readResID);
+
+                result.append("OK");
+            } catch (Exception ex) {
+                result.append("Exception : " + ex.toString());
+                //fileInputStream = null;
+            }
+
+
+            result.append("\noutput file open - " + writeFilePath + " : ");
+            try {
+                fileOutputStream = new FileOutputStream(new File(writeFilePath));
+
+                result.append("OK");
+            } catch (FileNotFoundException ex) {
+                result.append("FileNotFoundException - " + ex.toString());
+                //fileOutputStream = null;
+            }
+
+
+            result.append("\nfile read/write : ");
+            if ((bufferedReader != null) && (fileOutputStream != null)) {
+                try {
+                    byte[] buffer = new byte[BUFFER_SIZE];
+                    int writeSize = 0;
+                    int totalwriteSize = 0;
+                    int writeCnt = 0;
+
+//                  while (bufferedReader.ready())
+                    {
+                        while((writeSize=bufferedReader.read(buffer)) != -1) {
+                            fileOutputStream.write(buffer, 0, writeSize);
+
+                            totalwriteSize += writeSize;
+/*
+                            try {
+                                Thread.sleep(10);
+                            } catch (Exception e) {
+                                String FailMSG = "Read Thread wait catch exception "+e.toString();
+                                if (DEBUG) Log.d(TAG, FailMSG);
+                            }
+*/
+                        }
+                    }
+
+                    Log.d(TAG, "outputStream.write Total : " + writeCnt + " , " + totalwriteSize);
+
+                    result.append(" - total read/write byte : " + StringUtil.formatSize(StringUtil.FORMAT_BYTE, totalwriteSize));
+
+                } catch (IOException ex) {
+                    result.append("IOException - " + ex.toString());
+                }
+
+
+                result.append("\nread file close : ");
+                try {
+                    bufferedReader.close();
+
+                    result.append("OK");
+                } catch (IOException ex) {
+                    result.append("IOException - " + ex.toString());
+                }
+
+
+                result.append("\nwrite file close : ");
+                try {
+                    fileOutputStream.close();
+                    result.append("OK");
+                } catch (IOException ex) {
+                    result.append("IOException - " + ex.toString());
+                }
+            }
+        }
+        else {
+            result.append("failed");
+        }
+
+        return result.toString();
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    // return UsedNandStorageSize
+    public String getUsedNandStorageSize() {
+        String result = "\nUsed Size : ";
+
+        result += StringUtil.formatSize(StringUtil.FORMAT_BYTE
+                , StorageUtil.getTotalInternalStorageSize() - StorageUtil.getAvailableInternalStorageSize());
+
+        return result;
+    }
+
+
+    private final String NAND_STORAGE_PATH = Const.CONTENTS_ROOT;
+    private final int NAND_TEST_READ_FILE_ID = R.raw.read_write_test;
+    private final String NAND_TEST_READ_WRITE_FILE = "read_write_test.bin";
+    private final String NAND_TEST_WRITE_PATH = NAND_STORAGE_PATH + "/wallpadtest/";
+    private final String NAND_TEST_WRITE_FILE_PATH = NAND_TEST_WRITE_PATH + NAND_TEST_READ_WRITE_FILE;
+    // test Nand
+    private String testNand() {
+        StringBuilder result = new StringBuilder();
+
+        result.append(getUsedNandStorageSize());
+
+        result.append(readWriteFile(NAND_TEST_READ_FILE_ID
+                , NAND_TEST_READ_WRITE_FILE
+                , NAND_TEST_WRITE_PATH
+                , NAND_TEST_WRITE_FILE_PATH));
+
+        result.append(getUsedNandStorageSize());
+
+
+        result.append("\ndelete write file : ");
+        try {
+            File writeFile = new File(NAND_TEST_WRITE_FILE_PATH);
+            if (writeFile.exists())
+                writeFile.delete();
+
+            result.append("OK");
+        } catch (Exception ex) {
+            result.append("IOException - " + ex.toString());
+        }
+
+
+        result.append(getUsedNandStorageSize());
+
+        return result.toString();
+    }
+
+
+    // sleep Thread
+    private void sleepMS(int ms) {
+        try {
+            Thread.sleep(ms);
+        } catch (Exception e) {
+            String FailMSG = "Read Thread wait catch exception "+e.toString();
+            if (DEBUG) Log.d(TAG, FailMSG);
+        }
+    }
+
+
+    // test HWLedButton
+    private String testHWLedButton() {
+        StringBuilder result = new StringBuilder();
+        int ret = -1;
+
+        WallPadInterface wallPadInterface = MainActivity.getWallPadInterface();
+
+        // emergencyLEDControll
+        result.append("\nemergencyLEDControll - On : ");
+        ret = wallPadInterface.emergencyLEDControll(true);
+        if (ret < 0) {
+            result.append("fail - ret " + ret);
+        }
+        else {
+            result.append("OK");
+        }
+
+        sleepMS(100);
+
+        result.append("\nemergencyLEDControll - Off : ");
+        ret = wallPadInterface.emergencyLEDControll(false);
+        if (ret < 0) {
+            result.append("fail - ret " + ret);
+        }
+        else {
+            result.append("OK");
+        }
+
+        sleepMS(100);
+
+
+        // callLEDControll
+        result.append("\ncallLEDControll - On : ");
+        ret = wallPadInterface.callLEDControll(true);
+        if (ret < 0) {
+            result.append("fail - ret " + ret);
+        }
+        else {
+            result.append("OK");
+        }
+
+        sleepMS(100);
+
+        result.append("\ncallLEDControll - Off : ");
+        ret = wallPadInterface.callLEDControll(false);
+        if (ret < 0) {
+            result.append("fail - ret " + ret);
+        }
+        else {
+            result.append("OK");
+        }
+
+        sleepMS(100);
+
+
+        // openLEDControll
+        result.append("\nopenLEDControll - On : ");
+        ret = wallPadInterface.openLEDControll(true);
+        if (ret < 0) {
+            result.append("fail - ret " + ret);
+        }
+        else {
+            result.append("OK");
+        }
+
+        sleepMS(100);
+
+        result.append("\nopenLEDControll - Off : ");
+        ret = wallPadInterface.openLEDControll(false);
+        if (ret < 0) {
+            result.append("fail - ret " + ret);
+        }
+        else {
+            result.append("OK");
+        }
+
+        sleepMS(100);
+
+
+        // frontHomeLEDControll
+        result.append("\nfrontHomeLEDControll - On : ");
+        ret = wallPadInterface.frontHomeLEDControll(true);
+        if (ret < 0) {
+            result.append("fail - ret " + ret);
+        }
+        else {
+            result.append("OK");
+        }
+
+        sleepMS(100);
+
+        result.append("\nfrontHomeLEDControll - Off : ");
+        ret = wallPadInterface.frontHomeLEDControll(false);
+        if (ret < 0) {
+            result.append("fail - ret " + ret);
+        }
+        else {
+            result.append("OK");
+        }
+
+        sleepMS(100);
+
+
+        // frontEMRLEDControll
+        result.append("\nfrontEMRLEDControll - On : ");
+        ret = wallPadInterface.frontEMRLEDControll(true);
+        if (ret < 0) {
+            result.append("fail - ret " + ret);
+        }
+        else {
+            result.append("OK");
+        }
+
+        sleepMS(100);
+
+        result.append("\nfrontEMRLEDControll - Off : ");
+        ret = wallPadInterface.frontEMRLEDControll(false);
+        if (ret < 0) {
+            result.append("fail - ret " + ret);
+        }
+        else {
+            result.append("OK");
+        }
+
+
+        wallPadInterface = null;
+        return result.toString();
+    }
+
+
+
+
+
+
+
+
+
+    private static final int AUDIO_RECORDING_INTERVAL = 10 * 1000;
+
+    private boolean bRunningAudioRecording = false;
+
+    // stop AudioRecording
+    private void stopAudioRecording() {
+        String result = "\naudio record stop : \n";
+
+        if (mAudioRecordController != null) {
+            mAudioRecordController.stop();
+            mAudioRecordController = null;
+
+            mTV_Result.append(result);
+        }
+    }
+
+
+    private final Runnable mAudioRecordingTimeoutChecker = new Runnable() {
+        @Override
+        public void run() {
+            if (bRunningAudioRecording) {
+                stopAudioRecording();
+            }
+        }
+    };
+
+    // start AudioRecordingTimeoutChecker
+    public void startAudioRecordingTimeoutChecker() {
+        mHandler.removeCallbacks(mAudioRecordingTimeoutChecker);
+        mHandler.postDelayed(mAudioRecordingTimeoutChecker, AUDIO_RECORDING_INTERVAL);
+
+        bRunningAudioRecording = true;
+    }
+
+    // sttop AudioRecordingTimeoutChecker
+    public void stopAudioRecordingTimeoutChecker() {
+        mHandler.removeCallbacks(mAudioRecordingTimeoutChecker);
+
+        bRunningAudioRecording = false;
+    }
+
+
+
+
+    private final String AUDIO_RECORDING_ROOT_PATH = Const.CONTENTS_ROOT;
+    private final String AUDIO_RECORDING_DIR_PATH = AUDIO_RECORDING_ROOT_PATH + "/wallpadtest/";
+    private final String AUDIO_RECORDING_FILE = "audio_record.pcm";
+    private final String AUDIO_RECORDING_FILE_PATH = AUDIO_RECORDING_DIR_PATH + AUDIO_RECORDING_FILE;
+
+    // test MicIn SpeakerOut
+    private String testMicInSpeakerOut() {
+        StringBuilder result = new StringBuilder();
+
+        if (mAudioRecordController == null) {
+            mAudioRecordController = new AudioRecordController(mActivity
+                    , AUDIO_RECORDING_DIR_PATH
+                    , AUDIO_RECORDING_FILE
+            );
+
+            result.append("\naudio record start : ");
+            mAudioRecordController.recordAndPlayStart();
+
+            startAudioRecordingTimeoutChecker();
+        }
+        else {
+            result.append("\nalready audio record test progressing: ");
+        }
+
+        return result.toString();
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+    private final String SCREEN_AUTO_BRIGHTNESS_ADJ = "screen_auto_brightness_adj";
+
+    private int mCurBrightLevel = 0;
+    private int mMaxBrightLevel = 255;
+
+    private static final int SEEK_BAR_RANGE = 10;
+
+    private final int mScreenBrightnessMinimum = 0;
+    private final int mScreenBrightnessMaximum = 255;
+
+    private final boolean mAutomaticAvailable = false;
+    private boolean mAutomaticMode;
+
+    private int mOldBrightness;
+    private int mOldAutomatic;
+
+    private int mCurBrightness = -1;
+
+    // return BrightnessMode
+    private int getBrightnessMode(int defaultValue) {
+        int brightnessMode = defaultValue;
+        try {
+            brightnessMode = Settings.System.getInt(mActivity.getContentResolver(),
+                    Settings.System.SCREEN_BRIGHTNESS_MODE);
+        } catch (SettingNotFoundException snfe) {
+            snfe.printStackTrace();
+        }
+        return brightnessMode;
+    }
+
+    // return brightness
+    private int getBrightness() {
+
+        int mode = getBrightnessMode(0);
+        float brightness = 0;
+        if (mode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC) {
+            brightness = Settings.System.getFloat(mActivity.getContentResolver(),
+                    SCREEN_AUTO_BRIGHTNESS_ADJ, 0);
+            brightness = (brightness+1)/2;
+        } else {
+            if (mCurBrightness < 0) {
+                brightness = Settings.System.getInt(mActivity.getContentResolver(),
+                        Settings.System.SCREEN_BRIGHTNESS, 100);
+            } else {
+                brightness = mCurBrightness;
+            }
+
+            if (DEBUG)  {
+                Log.d(TAG, "getBrightness() SCREEN_BRIGHTNESS - brightness : " + brightness);
+            }
+
+            brightness = (brightness - mScreenBrightnessMinimum)
+                    / (mScreenBrightnessMaximum - mScreenBrightnessMinimum);
+        }
+        brightness = brightness*SEEK_BAR_RANGE;
+
+        if (brightness > (int)brightness)
+            brightness += 1.0;
+
+        if (DEBUG)  {
+            Log.d(TAG, "getBrightness() brightness : " + brightness);
+        }
+
+        return (int)brightness;
+    }
+
+
+    // set brightness
+    private void setBrightness(int brightness, boolean write) {
+
+        StringBuilder result = new StringBuilder();
+        result.append("\nsetBrightness : ");
+
+        if (DEBUG)  Log.d(TAG, "setBrightness() brightness : " + brightness);
+
+        mCurBrightLevel = brightness;
+
+        if (mAutomaticMode) {
+
+        } else {
+            int range = (mScreenBrightnessMaximum - mScreenBrightnessMinimum);
+            brightness = (brightness * range)/SEEK_BAR_RANGE + mScreenBrightnessMinimum;
+
+            if (DEBUG)  Log.d(TAG, "setBrightness() SCREEN_BRIGHTNESS - brightness : " + brightness);
+
+            if (write) {
+                mCurBrightness = -1;
+                final ContentResolver resolver = mActivity.getContentResolver();
+                Settings.System.putInt(resolver,
+                        Settings.System.SCREEN_BRIGHTNESS, brightness);
+
+
+                WindowManager.LayoutParams lp = ((Activity)mActivity).getWindow().getAttributes();
+                lp.screenBrightness = (float) brightness / mScreenBrightnessMaximum;
+                // lp.flags |= WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
+                ((Activity)mActivity).getWindow().setAttributes(lp);
+
+            } else {
+                mCurBrightness = brightness;
+            }
+
+            result.append(brightness + " : OK");
+            mTV_Result.append(result);
+        }
+    }
+
+
+
+    private static final int BACKLIGHT_CHANGE_INTERVAL = 1 * 1000;
+
+    private boolean bRunningBacklightChange = false;
+
+    private final Handler mHandler = new Handler();
+
+    private final Runnable mBacklightChangeTimeoutChecker = new Runnable() {
+        @Override
+        public void run() {
+            if (bRunningBacklightChange) {
+                if (mCurBrightLevel++ < mMaxBrightLevel) {
+                    setBrightness(mCurBrightLevel, true);
+
+                    mHandler.postDelayed(mBacklightChangeTimeoutChecker, BACKLIGHT_CHANGE_INTERVAL);
+                }
+                else {
+                    bRunningBacklightChange = false;
+                    mTV_Result.append("\r\n");
+                    mTV_Result.append("\r\n");
+                }
+            }
+        }
+    };
+
+    // start BacklightChangeTimeoutChecker
+    public void startBacklightChangeTimeoutChecker()  {
+        mHandler.removeCallbacks(mBacklightChangeTimeoutChecker);
+        mHandler.postDelayed(mBacklightChangeTimeoutChecker, BACKLIGHT_CHANGE_INTERVAL);
+
+        bRunningBacklightChange = true;
+    }
+
+    // stop BacklightChangeTimeoutChecker
+    public void stopBacklightChangeTimeoutChecker() {
+        mHandler.removeCallbacks(mBacklightChangeTimeoutChecker);
+
+        bRunningBacklightChange = false;
+    }
+
+
+
+
+
+
+
+    // test Backlight
+    private String testBacklight() {
+        StringBuilder result = new StringBuilder();
+
+        if (bRunningBacklightChange == false) {
+            mMaxBrightLevel = SEEK_BAR_RANGE;
+            mCurBrightLevel = getBrightness();
+            mCurBrightLevel = 0;
+
+            startBacklightChangeTimeoutChecker();
+        }
+        else {
+            result.append("\nalready backlight test progressing: ");
+        }
+
+        return result.toString();
+    }
+
+
+
+    // test Smart Door Camera Recording
+    private String testSmartDoorCamRecording() {
+        StringBuilder result = new StringBuilder();
+
+        mDialog = new RecordTestDialog(mActivity);
+        if (mDialog != null) {
+            mDialog.setOnDismissListener(this);
+            mDialog.show();
+        }
+
+        return result.toString();
+    }
+}

+ 1013 - 1017
ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/CheckNetworkFragment.java

@@ -1,1017 +1,1013 @@
-package com.artncore.managersetting.ui.fragments;
-
-import android.app.Activity;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.os.AsyncTask;
-import android.os.Bundle;
-//import android.support.v4.app.Fragment;
-import androidx.fragment.app.Fragment;
-import androidx.core.view.MotionEventCompat;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.View.OnTouchListener;
-import android.view.ViewGroup;
-import android.widget.AdapterView;
-import android.widget.AdapterView.OnItemSelectedListener;
-import android.widget.ArrayAdapter;
-import android.widget.Button;
-import android.widget.ScrollView;
-import android.widget.Spinner;
-import android.widget.TextView;
-
-import com.artncore.WallPadDataMgr.WallpadDeviceSet;
-import com.artncore.WallPadDataMgr.WallpadStatusData;
-import com.artncore.WallPadDataMgr.WallpadStatusData.PhoneAddr;
-import com.artncore.WallPadDataMgr.wallpaddbmgr;
-import com.artncore.WallPadDataMgr.wallpaddbmgr.AddressSet;
-import com.artncore.managersetting.R;
-import com.artncore.managersetting.dao.MainDatabaseManager;
-import com.artncore.managersetting.dao.MainDatabaseManager.GuardInfo;
-import com.artncore.managersetting.domain.Const;
-import com.artncore.managersetting.ui.activities.MainActivity;
-import com.artncore.managersetting.util.DialogUtil;
-import com.artncore.managersetting.util.NetworkUtil;
-import com.artncore.managersetting.util.StringUtil;
-import com.artncore.wallpadapi.WallPadAPI;
-import com.artncore.wallpadimap.RetProci;
-import com.util.LogUtil;
-
-import java.io.IOException;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.List;
-
-import kr.co.icontrols.managersetting.imap.iMAP_ctrl_config_read;
-import kr.co.icontrols.managersetting.imap.iMAP_hn_config_read;
-import kr.co.icontrols.wallpadsupport.Version;
-import kr.co.icontrols.wallpadsupport.WpadSound;
-import kr.co.icontrols.wallpadsupport.WpadSound.SND;
-
-/**
- * A list fragment representing a list of Items. This fragment also supports
- * tablet devices by allowing list items to be given an 'activated' state upon
- * selection. This helps indicate which item is currently being viewed in a
- * {link ItemDetailFragment}.
- * <p>
- * Activities containing this fragment MUST implement the {link Callbacks}
- * interface.
- */
-public class CheckNetworkFragment extends Fragment {
-    private static final String TAG = "CheckNetworkFragment";
-
-    private final boolean DEBUG = true;
-
-    private void DebugLogOutput(String s) { if(DEBUG) Log.d(TAG, s); }
-
-
-    public final int NETWORK_TYPE_BASE =         Const.COMMON_TYPE_BASE;
-    public final int NETWORK_TYPE_APTS_SERVER =     NETWORK_TYPE_BASE + 0;
-    public final int NETWORK_TYPE_LOBBY =           NETWORK_TYPE_BASE + 1;
-    public final int NETWORK_TYPE_GUARD =           NETWORK_TYPE_BASE + 2;
-    public final int NETWORK_TYPE_GATEWAY =         NETWORK_TYPE_BASE + 3;
-    public final int NETWORK_TYPE_CCTV =            NETWORK_TYPE_BASE + 4;
-    public final int NETWORK_TYPE_NVR_SERVER =      NETWORK_TYPE_BASE + 5;
-
-
-    private Activity mActivity;
-    private WpadSound mWpadSound;
-    private WallPadAPI mWallPadAPI;
-    private MainDatabaseManager mMainDatabaseManager;
-
-    private List<PhoneAddr> mNetworkList = new ArrayList<PhoneAddr>();
-    private TextView mTV_Result;
-    private int mNumber = 1;
-
-    private int mSelectedIdx = -1;
-
-    iMAP_hn_config_read imap_hn_config_read;
-    iMAP_ctrl_config_read imap_ctrl_config_read;
-
-    private int ModelType = Version.getModelType();
-    //private int ModelType = Version.MODEL_TYPE.IHN_1020GL;
-
-    // constructor
-    public CheckNetworkFragment() {
-    }
-
-    @Override
-    public void onAttach(Activity activity) {
-        super.onAttach(activity);
-
-        mActivity = activity;
-        mMainDatabaseManager = MainActivity.getMainDatabaseManager();
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        if (DEBUG)  Log.d(TAG, "onCreate() ");
-
-        super.onCreate(savedInstanceState);
-
-        mWallPadAPI = MainActivity.getWallPadAPI();
-        mWpadSound = MainActivity.getWpadSound();
-
-/*
-        mNetworkList.add(mActivity.getString(R.string.check_network_apts_server));
-        mNetworkList.add(mActivity.getString(R.string.check_network_lobby));
-        mNetworkList.add(mActivity.getString(R.string.check_network_guard));
-        mNetworkList.add(mActivity.getString(R.string.check_network_gateway));
-        mNetworkList.add(mActivity.getString(R.string.check_network_cctv));
-        mNetworkList.add(mActivity.getString(R.string.check_network_nvr_server));
-*/
-
-        getAptsServerInfo();
-        getManagePCInfo();
-        getLobbyInfo();
-        getGuardInfo();
-        getGatewayInfo();
-        getCCTVInfo();
-        getRemoteCallInfo();
-        getFTPServerInfo();
-        getNeiInfo();
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-
-        if (ModelType == Version.MODEL_TYPE.IHN_1020SA_A) {
-            View rootView = (View) inflater.inflate(R.layout.check_network_container_for_lh, container, false);
-            return (View)rootView;
-        }
-        else {
-            WallpadDeviceSet devSet = new WallpadDeviceSet(mActivity.getApplicationContext());
-            String[] DBinfo = devSet.GetSettingData("게이트웨이");
-            devSet.closeDB();
-
-            if (DBinfo != null) {
-                if (DBinfo[1].indexOf("사용함") > 0) {
-                    View rootView = (View) inflater.inflate(R.layout.check_network_container_for_lh, container, false);
-                    return (View)rootView;
-                }
-                else {
-                    View rootView = (View) inflater.inflate(R.layout.check_network_container, container, false);
-                    return (View)rootView;
-                }
-            }
-            else {
-                View rootView = (View) inflater.inflate(R.layout.check_network_container, container, false);
-                return (View)rootView;
-            }
-        }
-    }
-
-    @Override
-    public void onViewCreated(View view, Bundle savedInstanceState) {
-        super.onViewCreated(view, savedInstanceState);
-
-        if (savedInstanceState != null) {}
-
-        Spinner controllerSpinner = (Spinner)view.findViewById(R.id.controller_spinner);
-        Button btnTest = (Button)view.findViewById(R.id.btn_test);
-        Button btnAddTestIP = (Button)view.findViewById(R.id.btn_add_test_ip);
-        mTV_Result = (TextView)view.findViewById(R.id.tv_result);
-
-        ArrayAdapter controllerAdapter = new ControllerArrayAdapter(mActivity
-                , android.R.layout.simple_spinner_item
-                , mNetworkList);
-
-//            ArrayAdapter counterAdapter = ArrayAdapter.createFromResource(this,
-//                    R.array.day_of_week_types, android.R.layout.simple_spinner_item);
-        ScrollView mScrollView = (ScrollView) view.findViewById(R.id.check_network_scrollview);
-        mScrollView.setOnTouchListener(new OnTouchListener() {
-
-            @Override
-            public boolean onTouch(View v, MotionEvent event) {
-                switch (MotionEventCompat.getActionMasked(event)) {
-
-                    case MotionEvent.ACTION_UP:
-                        MainActivity.setFinishTimerReset();
-                        break;
-
-                    default:
-                        break;
-                }
-                return false;
-            }
-        });
-
-        controllerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
-        controllerSpinner.setAdapter(controllerAdapter);
-        controllerSpinner.setPrompt("select controller");
-
-        controllerSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
-            @Override
-            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
-                if (DEBUG)  Log.d(TAG, "onItemSelected() position : " + position);
-
-                MainActivity.setFinishTimerReset();
-                mSelectedIdx = position;
-            }
-
-            @Override
-            public void onNothingSelected(AdapterView<?> parent) {
-            }
-        });
-
-        if (ModelType == Version.MODEL_TYPE.IHN_1020SA_A) {
-            Button btnLH_HN = (Button)view.findViewById(R.id.btn_igate_hn_config_read);
-            Button btnLH_Ctrl = (Button)view.findViewById(R.id.btn_igate_ctrl_config_read);
-
-            btnLH_HN.setOnClickListener(mButtonClick);
-            btnLH_Ctrl.setOnClickListener(mButtonClick);
-
-            imap_hn_config_read = new iMAP_hn_config_read(mActivity);
-            imap_ctrl_config_read = new iMAP_ctrl_config_read(mActivity);
-        }
-        else {
-            WallpadDeviceSet devSet = new WallpadDeviceSet(mActivity);
-            String[] DBinfo = devSet.GetSettingData("게이트웨이");
-            devSet.closeDB();
-
-            if (DBinfo != null) {
-                if (DBinfo[1].indexOf("사용함") > 0) {
-                    Button btnLH_HN = (Button)view.findViewById(R.id.btn_igate_hn_config_read);
-                    Button btnLH_Ctrl = (Button)view.findViewById(R.id.btn_igate_ctrl_config_read);
-
-                    btnLH_HN.setOnClickListener(mButtonClick);
-                    btnLH_Ctrl.setOnClickListener(mButtonClick);
-
-                    imap_hn_config_read = new iMAP_hn_config_read(mActivity);
-                    imap_ctrl_config_read = new iMAP_ctrl_config_read(mActivity);
-                }
-            }
-        }
-
-
-
-        btnTest.setOnClickListener(mButtonClick);
-        btnAddTestIP.setOnClickListener(mButtonClick);
-    }
-
-
-    public class ControllerArrayAdapter extends ArrayAdapter {
-        private static final String TAG = "ControllerArrayAdapter";
-
-        private int mLayoutId;
-
-        private Context mContext;
-        private int m_nSelectedPos = -1;
-
-        // constructor
-        public ControllerArrayAdapter(Context context, int layoutId, List contollerList) {
-            super(context, layoutId, contollerList);
-            mContext = context;
-            mLayoutId = layoutId;
-        }
-
-
-        @Override
-        public Object getItem(int position) {
-            PhoneAddr item = (PhoneAddr)super.getItem(position);
-
-            return item.Name + " ( " + item.IP + " ) ";
-        }
-
-/*
-        @Override
-        public View getView(int position, View convertView, ViewGroup parent) {
-            View view = convertView;
-
-            if (view == null) {
-                // if (DEBUG)  Log.d(TAG, "--getView v == null");
-
-                LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(
-                                            Context.LAYOUT_INFLATER_SERVICE);
-                view = inflater.inflate(mLayoutId, null);
-            }
-            MenuItem item = (MenuItem)getItem(position);
-
-            if (item != null) {
-                String menuTitle = item.content;
-                TextView tvMenuTitle = (TextView)view.findViewById(R.id.menu_title);
-                tvMenuTitle.setText(menuTitle);
-                if (DEBUG)  Log.d(TAG, "menuTitle : " + menuTitle);
-
-                if (DEBUG)  Log.d(TAG, "m_nSelectedPos : " + m_nSelectedPos + ", position : " + position);
-            }
-
-            return view;
-        }
-*/
-    }
-
-
-
-
-
-
-
-
-    @Override
-    public void onDetach() {
-        super.onDetach();
-
-        mWallPadAPI = null;
-    }
-
-
-    @Override
-    public void onSaveInstanceState(Bundle outState) {
-        super.onSaveInstanceState(outState);
-    }
-
-
-    private void getAptsServerInfo() {
-        mNetworkList.add(NetworkUtil.getAptsServerAddr(mActivity));
-    }
-
-
-    private void getManagePCInfo() {
-        mNetworkList.add(NetworkUtil.getManagePCAddr(mActivity));
-    }
-
-
-    // add LobbyInfo to NetworkList
-    private void getLobbyInfo() {
-        String strIP = null;
-
-        wallpaddbmgr dbmgr = new wallpaddbmgr(mActivity);
-        AddressSet addc =  dbmgr.getAddressMGR();
-        dbmgr.closeDB();
-
-        String strDong = addc.Dong;
-
-        int baseDongIP = NetworkUtil.getDongBaseNumber(mActivity);
-        int nDongIP = StringUtil.getInt(strDong, false);
-
-        if ((baseDongIP > -1) && (nDongIP > -1)) {
-            nDongIP = nDongIP - baseDongIP;
-            String myIP =  NetworkUtil.getMyIP(mActivity);
-            String[] arrString = StringUtil.split(myIP, ".");
-            if (arrString!=null && arrString.length > 3) {
-
-                strIP = arrString[0] + "."
-                        + nDongIP + "."
-                        + Const.DEFAULT_LOBBY_IP_THIRD+ "."
-                        + Const.DEFAULT_LOBBY_IP_FORTH;
-
-                WallpadStatusData.PhoneAddr lobbyAddr = new WallpadStatusData.PhoneAddr();
-                lobbyAddr.Name = strDong + mActivity.getString(R.string.dong)
-                        + " " + mActivity.getString(R.string.check_network_lobby)
-                ;
-                lobbyAddr.IP = strIP;
-
-                mNetworkList.add(lobbyAddr);
-            }
-        }
-    }
-
-
-    // add GuardInfo to NetworkList
-    private void getGuardInfo() {
-        List<GuardInfo> guardInfoList = mMainDatabaseManager.getGuardList();
-
-        if (DEBUG)  Log.d(TAG, "getGuardInfo() guardInfoList.size() : " + guardInfoList.size());
-
-        for (int i=0; i<guardInfoList.size(); i++) {
-            GuardInfo guardInfo = guardInfoList.get(i);
-
-            String strGuardName = guardInfo.getName();
-            String strDong = guardInfo.getDong();
-            String strHo = guardInfo.getHo();
-            String strIP = guardInfo.getIP();
-
-            String strDongHo = strDong + mActivity.getString(R.string.dong)
-                    + " "
-                    + strHo + mActivity.getString(R.string.ho)
-                    + " "
-                    + strGuardName;
-
-            WallpadStatusData.PhoneAddr guardAddr = new WallpadStatusData.PhoneAddr();
-            guardAddr.Name = strDongHo;
-            guardAddr.IP = strIP;
-
-            mNetworkList.add(guardAddr);
-        }
-    }
-
-    // add GatewayInfo to NetworkList
-    private void getGatewayInfo() {
-        mNetworkList.add(NetworkUtil.getGatewayAddr(mActivity));
-    }
-
-
-    // parse CCTVInfo
-    public List<String> parseCCTVInfo(String cctvInfo) {
-        List<String> result = null;
-
-        Log.d(TAG, "parseCCTVInfo() cctvInfo : " + cctvInfo);
-
-        if (cctvInfo == null)
-            return null;
-
-        try {
-            String[] arrCCTVInfo = StringUtil.split(cctvInfo, "*");
-            if (arrCCTVInfo != null) {
-                result = new ArrayList();
-
-                for (int i=0; i<arrCCTVInfo.length; i++) {
-                    String[] arrSubInfo = StringUtil.split(arrCCTVInfo[i], ":");
-                    if (arrSubInfo != null) {
-                        for (int j=0; j<arrSubInfo.length; j++) {
-                            result.add(arrSubInfo[j]);
-                        }
-                    }
-                }
-            }
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
-        } catch (Exception e) {
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("",TAG, e);
-        }
-
-
-        if (DEBUG) {
-            if (result != null) {
-                Log.d(TAG, "parseCCTVInfo() result.size() : " + result.size());
-
-                for (int i=0; i<result.size(); i++) {
-                    Log.d(TAG, "result(" + i + ") : " + result.get(i));
-                }
-            }
-        }
-
-
-        return result;
-    }
-
-
-    // get CCTV IP
-    private String getCCTVIP(List<String> cctvInfo) {
-        String result = null;
-
-        if (cctvInfo != null) {
-            for (int i=0; i<cctvInfo.size(); i++) {
-                if (cctvInfo.get(i).equals("IP") && (cctvInfo.size() > (i + 1))) {
-                    result = cctvInfo.get(i + 1);
-                    break;
-                }
-            }
-        }
-
-        return result;
-    }
-
-
-    // get CCTV Where
-    private String getCCTVWhere(List<String> cctvInfo) {
-        String result = null;
-
-        if (cctvInfo != null) {
-            for (int i=0; i<cctvInfo.size(); i++) {
-                if (cctvInfo.get(i).equals("Where") && (cctvInfo.size() > (i + 1))) {
-                    result = cctvInfo.get(i + 1);
-                    break;
-                }
-            }
-        }
-
-        return result;
-    }
-
-
-    // add CCTVInfo to NetworkList
-    private void getCCTVInfo() {
-        List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_CCTV);
-        if (InfoList != null) {
-            for (int i=2; i<InfoList.size(); i++) {
-//                Log.d(TAG, "[getCCTVInfo] InfoList.get(" + i + ") = " + InfoList.get(i));
-                if (InfoList.get(i).equals("버튼") && (InfoList.size() > (i + 1))) {
-                    List<String> cctvInfo = parseCCTVInfo(InfoList.get(i + 1));
-                    String strName = getCCTVWhere(cctvInfo);
-                    String strIP = getCCTVIP(cctvInfo);
-
-                    if (strIP != null) {
-                        WallpadStatusData.PhoneAddr cctvAddr = new WallpadStatusData.PhoneAddr();
-                        cctvAddr.Name = "CCTV " + strName;
-                        cctvAddr.IP = strIP;
-
-                        mNetworkList.add(cctvAddr);
-                    }
-                }
-            }
-        }
-    }
-
-    private String getRemoteCallIP(String info) {
-        String result = null;
-
-        if (info != null) {
-            int idx = info.indexOf(":");
-            result = info.substring(0, idx);
-            Log.d(TAG, "[getRemoteCallIP] result [" + result + "]");
-        }
-
-        return result;
-    }
-
-    // add RemoteCall to NetworkList
-    private void getRemoteCallInfo() {
-        List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_REMOTE_CALL);
-        if (InfoList != null) {
-            if (InfoList.size() == 6) {
-                for (int i = 2; i < InfoList.size(); i++) {
-//                Log.d(TAG, "[getRemoteCallInfo] InfoList.get(" + i + ") = " + InfoList.get(i));
-                    if (i == (InfoList.size() - 1)) {
-                        String strIP = getRemoteCallIP(InfoList.get(i));
-                        if (strIP != null) {
-                            WallpadStatusData.PhoneAddr remoteCallAddr = new WallpadStatusData.PhoneAddr();
-                            remoteCallAddr.Name = "방문객원격통화";
-                            remoteCallAddr.IP = strIP;
-                            mNetworkList.add(remoteCallAddr);
-                        }
-                    }
-                }
-            } else {
-                Log.w(TAG, "[getRemoteCallInfo] Invalid InfoList.size!! [" + InfoList.size() + "]");
-            }
-        }
-    }
-
-    // add FTPServerInfo to NetworkList
-    private void getFTPServerInfo() {
-        mNetworkList.add(NetworkUtil.getFTPServerAddr(mActivity));
-    }
-
-
-    // add NeiInfo to NetworkList
-    private void getNeiInfo() {
-        List<PhoneAddr> neiAddrList= NetworkUtil.getNeiAddrList(mActivity);
-
-        if (DEBUG)  Log.d(TAG, "getNeiInfo() neiAddrList.size() : " + neiAddrList.size());
-
-        for (int i=0; i<neiAddrList.size(); i++) {
-            PhoneAddr neiAddr = neiAddrList.get(i);
-            if (DEBUG)  Log.d(TAG, "lobbyAddr.Name : " + neiAddr.Name
-                    + ", IP : " + neiAddr.IP
-            );
-
-            //if (neiAddr.IP.length() > Const.IP_MIN_LENGTH)
-            mNetworkList.add(neiAddr);
-        }
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-    private View.OnClickListener mButtonClick = new View.OnClickListener() {
-        @Override
-        public void onClick(View v) {
-
-            mWpadSound.Play(SND.effect.TOUCH_LATCHED);
-            MainActivity.setFinishTimerReset();
-
-            switch(v.getId())
-            {
-                case R.id.btn_test:
-                {
-                    if (DEBUG)  Log.d(TAG, "onClick() btn_test" );
-
-                    //String controllerName = mNetworkList.get(mSelectedIdx).Name;
-                    //if (DEBUG)    Toast.makeText(mActivity, controllerName + " test", Toast.LENGTH_SHORT).show();
-
-                    doTestNetwork(mSelectedIdx);
-                }
-                break;
-
-                case R.id.btn_add_test_ip:
-                {
-                    if (DEBUG)  Log.d(TAG, "onClick() btn_add_test_ip" );
-
-                    openAddIPDialog();
-                }
-                break;
-
-                case R.id.btn_igate_ctrl_config_read:
-                {
-                    if (DEBUG)  Log.d(TAG, "onClick() btn_igate_ctrl_config_read" );
-                    mTV_Result.append((mNumber++)+". 게이트웨이 제어포트 정보 조회 결과: \r\n");
-                    getCtrlConfigInfo();
-
-                }
-                break;
-
-                case R.id.btn_igate_hn_config_read:
-                {
-                    if (DEBUG)  Log.d(TAG, "onClick() btn_igate_hn_config_read" );
-
-                    mTV_Result.append((mNumber++)+". 게이트웨이 HN 정보 조회 결과: \r\n");
-                    getHNConfigInfo();
-                }
-                break;
-
-                default:
-                    break;
-            }
-
-        }
-    };
-
-
-    private void getCtrlConfigInfo()
-    {
-        imap_ctrl_config_read.DoWork();
-        imap_ctrl_config_read.SetRetCtr(new RetProci()
-        {
-
-            @Override
-            public void ProcSuccess()
-            {
-                String Result = "";
-
-                DebugLogOutput("ProcSuccess");
-                int ItemCount = imap_ctrl_config_read.SetItem("ctrl_param");
-                if (ItemCount == 0)
-                {
-                    return;
-                }
-                Result += "     1. 제어포트 통신 속도 :";
-                Result += imap_ctrl_config_read.GetAttributeVal(0, "ctrl_baudrate");
-                Result += "\r\n";
-
-                Result += "     2. 제어포트 Open 여부 :";
-                Result += imap_ctrl_config_read.GetAttributeVal(0, "ctrl_open");
-                Result += "\r\n";
-
-                Result += "     3. 제어포트 Framing Error 체크 여부 :";
-                Result += imap_ctrl_config_read.GetAttributeVal(0, "ctrl_framecheck");
-                Result += "\r\n";
-
-                Result += "     4. 기타 예비용 메시지 :";
-                Result += imap_ctrl_config_read.GetAttributeVal(0, "ctrl_message");
-                Result += "\r\n\r\n";
-
-                if(Result != null)
-                {
-                    mTV_Result.append(Result);
-                }
-            }
-
-            @Override
-            public void ProcError()
-            {
-                DebugLogOutput("ProcError");
-                mTV_Result.append("통신 실패. 잠시 후 다시 시도해주세요.\r\n");
-            }
-
-            @Override
-            public void ProcDoing()
-            {
-                // TODO Auto-generated method stub
-
-            }
-        });
-    }
-
-    private void getHNConfigInfo()
-    {
-        imap_hn_config_read.DoWork();
-        imap_hn_config_read.SetRetCtr(new RetProci()
-        {
-
-            @Override
-            public void ProcSuccess()
-            {
-                String Result = "";
-
-                DebugLogOutput("ProcSuccess");
-                int ItemCount = imap_hn_config_read.SetItem("eth_param");
-                if (ItemCount == 0)
-                {
-                    return;
-                }
-                Result += "     1. IP자동설정 기능 사용 여부 :";
-                Result += imap_hn_config_read.GetAttributeVal(0, "eth_mode");
-                Result += "\r\n";
-
-                Result += "     2. G/W HN망 IP 주소 :";
-                Result += imap_hn_config_read.GetAttributeVal(0, "eth_ip");
-                Result += "\r\n";
-
-                Result += "     3. G/W HN망 MAC 주소 :";
-                Result += imap_hn_config_read.GetAttributeVal(0, "eth_mac");
-                Result += "\r\n";
-
-                Result += "     4. G/W HN망 Gateway 주소 :";
-                Result += imap_hn_config_read.GetAttributeVal(0, "eth_gw");
-                Result += "\r\n";
-
-                Result += "     5. G/W HN망 Subnet Mask 주소 :";
-                Result += imap_hn_config_read.GetAttributeVal(0, "eth_sm");
-                Result += "\r\n";
-
-                //****************************************************//
-                ItemCount = 0;
-                ItemCount = imap_hn_config_read.SetItem("noti_param");
-                if (ItemCount == 0)
-                {
-                    return;
-                }
-
-                Result += "     6. notice 메시지를 G/W에서 전송할지 여부 :";
-                Result += imap_hn_config_read.GetAttributeVal(0, "noti_send");
-                Result += "\r\n";
-
-                Result += "     7. notice 메시지 전송 등급 :";
-                Result += imap_hn_config_read.GetAttributeVal(0, "noti_level");
-                Result += "\r\n";
-
-                Result += "     8. notice 메시지 수신 주소 :";
-                Result += imap_hn_config_read.GetAttributeVal(0, "noti_ip");
-                Result += "\r\n";
-
-                Result += "     9. notice 메시지 수신 포트 :";
-                Result += imap_hn_config_read.GetAttributeVal(0, "noti_port");
-                Result += "\r\n\r\n";
-
-                if(Result != null)
-                {
-                    mTV_Result.append(Result);
-                }
-            }
-
-            @Override
-            public void ProcError()
-            {
-                DebugLogOutput("ProcError");
-                mTV_Result.append("통신 실패. 잠시 후 다시 시도해주세요.\r\n");
-            }
-
-            @Override
-            public void ProcDoing()
-            {
-                // TODO Auto-generated method stub
-
-            }
-        });
-    }
-
-    // idx에 해당하는 network를 test
-    private void doTestNetwork(int idx) {
-        String testIP = mNetworkList.get(idx).IP;
-
-        if (!checkTestCondition(testIP)) {
-
-            String popupTitle = getString(R.string.admin_check_submenu_check_network);
-            String popupMessage = getString(R.string.check_network_error_ip);
-
-            DialogUtil dialog = new DialogUtil(mActivity);;
-            dialog.openNoticeDialog(popupTitle, popupMessage);
-
-            return;
-        }
-
-        String title = String.valueOf(mNumber++) + ". " ;
-
-        title += mNetworkList.get(idx).Name
-                + " " + "(" + testIP + ") " + mActivity.getString(R.string.test) + " : ";
-        doPingTest(title, testIP);
-//        result = title + doPingTest(testIP);
-
-//        result = mTV_Result.getText() + result + "\n";
-//        mTV_Result.setText(result);
-    }
-
-
-    // IP가 유효한지를 return
-    private boolean checkTestCondition(String testIP) {
-        boolean ret = false;
-
-        if (DEBUG)  Log.d(TAG, "checkTestCondition() testIP.length() : " + testIP.length());
-
-        boolean UseIP_Expantion = mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DANJI_CONFIG);
-        if(UseIP_Expantion == false)
-        {
-            if ((testIP != null) && (testIP.length() > Const.IP_MIN_LENGTH))
-                ret = true;
-        }
-        else
-        {
-            if ((testIP != null) && (testIP.length() >= Const.IP_MIN_LENGTH))
-                ret = true;
-        }
-        return ret;
-    }
-
-
-
-    // testIP로 ping test를 수행
-    private void doPingTest(String title, String testIP) {
-        new PingTestTask().execute(title, testIP);
-    }
-
-
-
-    private final int PING_TIMEOUT = 3000;
-    private class PingTestTask extends AsyncTask<Object, Void, String[]> {
-        @Override
-        protected String[] doInBackground(Object... params) {
-            String title = (String)params[0];
-            String testIP = (String)params[1];
-
-            String arrResult[] = new String[2];
-
-            StringBuilder result = new StringBuilder();
-
-            try {
-                InetAddress ia = InetAddress.getByName(testIP);
-                if(ia.isReachable(PING_TIMEOUT) == true) {
-                    result.append("Reachable in 3 sec");
-                } else {
-                    result.append("Unreachable in 3 sec");
-                }
-            } catch (UnknownHostException e){
-                result.append("UnknownHost Exception");
-            } catch (IOException e) {
-                result.append("IO Exception : " + e.toString());
-            } catch (IllegalArgumentException e) {
-                result.append("IllegalArgumentExceptio");
-            }
-
-            arrResult[0] = title;
-            arrResult[1] = result.toString();
-
-            return arrResult;
-        }
-
-        @Override
-        protected void onPostExecute(String[] arrResult) {
-            String result = arrResult[0] + arrResult[1];
-
-            mTV_Result.append(result + "\n");
-        }
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    private DialogUtil mDialog;
-    // open AddIP Dialog
-    public void openAddIPDialog() {
-
-        String title = mActivity.getString(R.string.check_network_add_test_ip);
-        String message = mActivity.getString(R.string.check_network_add_test_ip_message);
-
-        DialogInterface.OnClickListener positiveListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        mDialog.hideSoftKeypad();
-
-                        if (NetworkUtil.isValidIP(mDialog.getEditIPText())) {
-                            dialog.dismiss();
-                            MainActivity.setFinishTimerReset();
-
-                            openSetIPDialog(mDialog.getEditIPText()); ;
-                        }
-                    }
-                };
-
-        DialogInterface.OnClickListener negativeListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        dialog.dismiss();
-                        MainActivity.setFinishTimerReset();
-                    }
-                };
-
-        mDialog = new DialogUtil(mActivity);
-        mDialog.openAddIPDialog(title, message, positiveListener, negativeListener, null);
-    }
-
-
-    // open Dialog
-    public void openDialog(final String title, final String message) {
-        mDialog = new DialogUtil(mActivity);
-
-        DialogInterface.OnClickListener positiveListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        dialog.dismiss();
-                        MainActivity.setFinishTimerReset();
-                    }
-                };
-
-        mDialog.openCommonDialog(title, message, positiveListener, null);
-    }
-
-    // open Finish Dialog
-    public void openFinishDialog(final String title, final String message) {
-        mDialog = new DialogUtil(mActivity);
-
-        DialogInterface.OnClickListener positiveListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        //finish();
-                        MainActivity.setFinishTimerReset();
-                    }
-                };
-
-        mDialog.openCommonDialog(title, message, positiveListener, null);
-    }
-
-
-    // open SetIP Dialog
-    public void openSetIPDialog(final String strIP) {
-
-        String title = mActivity.getString(R.string.check_network_add_test_ip);
-        String message = "IP : " + strIP
-                + "\n\n를 추가하시겠습니까?"
-                ;
-
-        DialogInterface.OnClickListener positiveListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        dialog.dismiss();
-                        MainActivity.setFinishTimerReset();
-                        addTestIP(strIP); ;
-                    }
-                };
-
-        DialogInterface.OnClickListener negativeListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        dialog.dismiss();
-                        MainActivity.setFinishTimerReset();
-                    }
-                };
-
-        mDialog = new DialogUtil(mActivity);
-        mDialog.openCommonDialog(title, message, positiveListener, negativeListener);
-    }
-
-
-    // add TestIP
-    private void addTestIP(final String strIP) {
-
-        Log.d(TAG, "addTestIP() IP : "+strIP);
-
-        WallpadStatusData.PhoneAddr phoneAddr = new WallpadStatusData.PhoneAddr();
-        phoneAddr.Name = mActivity.getString(R.string.check_network_test_ip);
-        phoneAddr.IP = strIP;
-        mNetworkList.add(phoneAddr);
-
-
-        String title = mActivity.getString(R.string.admin_setip_manually);
-        String message = "IP : " + strIP
-                + "\n\n가 추가되었습니다.";
-
-        openFinishDialog(title, message);
-    }
-
-
-
-
-
-}
+package com.artncore.managersetting.ui.fragments;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.os.AsyncTask;
+import android.os.Bundle;
+//import android.support.v4.app.Fragment;
+import androidx.fragment.app.Fragment;
+import androidx.core.view.MotionEventCompat;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.View.OnTouchListener;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemSelectedListener;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.ScrollView;
+import android.widget.Spinner;
+import android.widget.TextView;
+
+import com.artncore.WallPadDataMgr.WallpadDeviceSet;
+import com.artncore.WallPadDataMgr.WallpadStatusData;
+import com.artncore.WallPadDataMgr.WallpadStatusData.PhoneAddr;
+import com.artncore.WallPadDataMgr.wallpaddbmgr;
+import com.artncore.WallPadDataMgr.wallpaddbmgr.AddressSet;
+import com.artncore.managersetting.R;
+import com.artncore.managersetting.dao.MainDatabaseManager;
+import com.artncore.managersetting.dao.MainDatabaseManager.GuardInfo;
+import com.artncore.managersetting.domain.Const;
+import com.artncore.managersetting.ui.activities.MainActivity;
+import com.artncore.managersetting.util.DialogUtil;
+import com.artncore.managersetting.util.NetworkUtil;
+import com.artncore.managersetting.util.StringUtil;
+import com.artncore.wallpadapi.WallPadAPI;
+import com.artncore.wallpadimap.RetProci;
+
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.ArrayList;
+import java.util.List;
+
+import kr.co.icontrols.managersetting.imap.iMAP_ctrl_config_read;
+import kr.co.icontrols.managersetting.imap.iMAP_hn_config_read;
+import kr.co.icontrols.wallpadsupport.Version;
+import kr.co.icontrols.wallpadsupport.WpadSound;
+import kr.co.icontrols.wallpadsupport.WpadSound.SND;
+
+/**
+ * A list fragment representing a list of Items. This fragment also supports
+ * tablet devices by allowing list items to be given an 'activated' state upon
+ * selection. This helps indicate which item is currently being viewed in a
+ * {link ItemDetailFragment}.
+ * <p>
+ * Activities containing this fragment MUST implement the {link Callbacks}
+ * interface.
+ */
+public class CheckNetworkFragment extends Fragment {
+    private static final String TAG = "CheckNetworkFragment";
+
+    private final boolean DEBUG = true;
+
+    private void DebugLogOutput(String s) { if(DEBUG) Log.d(TAG, s); }
+
+
+    public final int NETWORK_TYPE_BASE =         Const.COMMON_TYPE_BASE;
+    public final int NETWORK_TYPE_APTS_SERVER =     NETWORK_TYPE_BASE + 0;
+    public final int NETWORK_TYPE_LOBBY =           NETWORK_TYPE_BASE + 1;
+    public final int NETWORK_TYPE_GUARD =           NETWORK_TYPE_BASE + 2;
+    public final int NETWORK_TYPE_GATEWAY =         NETWORK_TYPE_BASE + 3;
+    public final int NETWORK_TYPE_CCTV =            NETWORK_TYPE_BASE + 4;
+    public final int NETWORK_TYPE_NVR_SERVER =      NETWORK_TYPE_BASE + 5;
+
+
+    private Activity mActivity;
+    private WpadSound mWpadSound;
+    private WallPadAPI mWallPadAPI;
+    private MainDatabaseManager mMainDatabaseManager;
+
+    private List<PhoneAddr> mNetworkList = new ArrayList<PhoneAddr>();
+    private TextView mTV_Result;
+    private int mNumber = 1;
+
+    private int mSelectedIdx = -1;
+
+    iMAP_hn_config_read imap_hn_config_read;
+    iMAP_ctrl_config_read imap_ctrl_config_read;
+
+    private int ModelType = Version.getModelType();
+    //private int ModelType = Version.MODEL_TYPE.IHN_1020GL;
+
+    // constructor
+    public CheckNetworkFragment() {
+    }
+
+    @Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+
+        mActivity = activity;
+        mMainDatabaseManager = MainActivity.getMainDatabaseManager();
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        if (DEBUG)  Log.d(TAG, "onCreate() ");
+
+        super.onCreate(savedInstanceState);
+
+        mWallPadAPI = MainActivity.getWallPadAPI();
+        mWpadSound = MainActivity.getWpadSound();
+
+/*
+        mNetworkList.add(mActivity.getString(R.string.check_network_apts_server));
+        mNetworkList.add(mActivity.getString(R.string.check_network_lobby));
+        mNetworkList.add(mActivity.getString(R.string.check_network_guard));
+        mNetworkList.add(mActivity.getString(R.string.check_network_gateway));
+        mNetworkList.add(mActivity.getString(R.string.check_network_cctv));
+        mNetworkList.add(mActivity.getString(R.string.check_network_nvr_server));
+*/
+
+        getAptsServerInfo();
+        getManagePCInfo();
+        getLobbyInfo();
+        getGuardInfo();
+        getGatewayInfo();
+        getCCTVInfo();
+        getRemoteCallInfo();
+        getFTPServerInfo();
+        getNeiInfo();
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+                             Bundle savedInstanceState) {
+
+        if (ModelType == Version.MODEL_TYPE.IHN_1020SA_A) {
+            View rootView = (View) inflater.inflate(R.layout.check_network_container_for_lh, container, false);
+            return (View)rootView;
+        }
+        else {
+            WallpadDeviceSet devSet = new WallpadDeviceSet(mActivity.getApplicationContext());
+            String[] DBinfo = devSet.GetSettingData("게이트웨이");
+            devSet.closeDB();
+
+            if (DBinfo != null) {
+                if (DBinfo[1].indexOf("사용함") > 0) {
+                    View rootView = (View) inflater.inflate(R.layout.check_network_container_for_lh, container, false);
+                    return (View)rootView;
+                }
+                else {
+                    View rootView = (View) inflater.inflate(R.layout.check_network_container, container, false);
+                    return (View)rootView;
+                }
+            }
+            else {
+                View rootView = (View) inflater.inflate(R.layout.check_network_container, container, false);
+                return (View)rootView;
+            }
+        }
+    }
+
+    @Override
+    public void onViewCreated(View view, Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+
+        if (savedInstanceState != null) {}
+
+        Spinner controllerSpinner = (Spinner)view.findViewById(R.id.controller_spinner);
+        Button btnTest = (Button)view.findViewById(R.id.btn_test);
+        Button btnAddTestIP = (Button)view.findViewById(R.id.btn_add_test_ip);
+        mTV_Result = (TextView)view.findViewById(R.id.tv_result);
+
+        ArrayAdapter controllerAdapter = new ControllerArrayAdapter(mActivity
+                , android.R.layout.simple_spinner_item
+                , mNetworkList);
+
+//            ArrayAdapter counterAdapter = ArrayAdapter.createFromResource(this,
+//                    R.array.day_of_week_types, android.R.layout.simple_spinner_item);
+        ScrollView mScrollView = (ScrollView) view.findViewById(R.id.check_network_scrollview);
+        mScrollView.setOnTouchListener(new OnTouchListener() {
+
+            @Override
+            public boolean onTouch(View v, MotionEvent event) {
+                switch (MotionEventCompat.getActionMasked(event)) {
+
+                    case MotionEvent.ACTION_UP:
+                        MainActivity.setFinishTimerReset();
+                        break;
+
+                    default:
+                        break;
+                }
+                return false;
+            }
+        });
+
+        controllerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+        controllerSpinner.setAdapter(controllerAdapter);
+        controllerSpinner.setPrompt("select controller");
+
+        controllerSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
+            @Override
+            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
+                if (DEBUG)  Log.d(TAG, "onItemSelected() position : " + position);
+
+                MainActivity.setFinishTimerReset();
+                mSelectedIdx = position;
+            }
+
+            @Override
+            public void onNothingSelected(AdapterView<?> parent) {
+            }
+        });
+
+        if (ModelType == Version.MODEL_TYPE.IHN_1020SA_A) {
+            Button btnLH_HN = (Button)view.findViewById(R.id.btn_igate_hn_config_read);
+            Button btnLH_Ctrl = (Button)view.findViewById(R.id.btn_igate_ctrl_config_read);
+
+            btnLH_HN.setOnClickListener(mButtonClick);
+            btnLH_Ctrl.setOnClickListener(mButtonClick);
+
+            imap_hn_config_read = new iMAP_hn_config_read(mActivity);
+            imap_ctrl_config_read = new iMAP_ctrl_config_read(mActivity);
+        }
+        else {
+            WallpadDeviceSet devSet = new WallpadDeviceSet(mActivity);
+            String[] DBinfo = devSet.GetSettingData("게이트웨이");
+            devSet.closeDB();
+
+            if (DBinfo != null) {
+                if (DBinfo[1].indexOf("사용함") > 0) {
+                    Button btnLH_HN = (Button)view.findViewById(R.id.btn_igate_hn_config_read);
+                    Button btnLH_Ctrl = (Button)view.findViewById(R.id.btn_igate_ctrl_config_read);
+
+                    btnLH_HN.setOnClickListener(mButtonClick);
+                    btnLH_Ctrl.setOnClickListener(mButtonClick);
+
+                    imap_hn_config_read = new iMAP_hn_config_read(mActivity);
+                    imap_ctrl_config_read = new iMAP_ctrl_config_read(mActivity);
+                }
+            }
+        }
+
+
+
+        btnTest.setOnClickListener(mButtonClick);
+        btnAddTestIP.setOnClickListener(mButtonClick);
+    }
+
+
+    public class ControllerArrayAdapter extends ArrayAdapter {
+        private static final String TAG = "ControllerArrayAdapter";
+
+        private int mLayoutId;
+
+        private Context mContext;
+        private int m_nSelectedPos = -1;
+
+        // constructor
+        public ControllerArrayAdapter(Context context, int layoutId, List contollerList) {
+            super(context, layoutId, contollerList);
+            mContext = context;
+            mLayoutId = layoutId;
+        }
+
+
+        @Override
+        public Object getItem(int position) {
+            PhoneAddr item = (PhoneAddr)super.getItem(position);
+
+            return item.Name + " ( " + item.IP + " ) ";
+        }
+
+/*
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            View view = convertView;
+
+            if (view == null) {
+                // if (DEBUG)  Log.d(TAG, "--getView v == null");
+
+                LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(
+                                            Context.LAYOUT_INFLATER_SERVICE);
+                view = inflater.inflate(mLayoutId, null);
+            }
+            MenuItem item = (MenuItem)getItem(position);
+
+            if (item != null) {
+                String menuTitle = item.content;
+                TextView tvMenuTitle = (TextView)view.findViewById(R.id.menu_title);
+                tvMenuTitle.setText(menuTitle);
+                if (DEBUG)  Log.d(TAG, "menuTitle : " + menuTitle);
+
+                if (DEBUG)  Log.d(TAG, "m_nSelectedPos : " + m_nSelectedPos + ", position : " + position);
+            }
+
+            return view;
+        }
+*/
+    }
+
+
+
+
+
+
+
+
+    @Override
+    public void onDetach() {
+        super.onDetach();
+
+        mWallPadAPI = null;
+    }
+
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+    }
+
+
+    private void getAptsServerInfo() {
+        mNetworkList.add(NetworkUtil.getAptsServerAddr(mActivity));
+    }
+
+
+    private void getManagePCInfo() {
+        mNetworkList.add(NetworkUtil.getManagePCAddr(mActivity));
+    }
+
+
+    // add LobbyInfo to NetworkList
+    private void getLobbyInfo() {
+        String strIP = null;
+
+        wallpaddbmgr dbmgr = new wallpaddbmgr(mActivity);
+        AddressSet addc =  dbmgr.getAddressMGR();
+        dbmgr.closeDB();
+
+        String strDong = addc.Dong;
+
+        int baseDongIP = NetworkUtil.getDongBaseNumber(mActivity);
+        int nDongIP = StringUtil.getInt(strDong, false);
+
+        if ((baseDongIP > -1) && (nDongIP > -1)) {
+            nDongIP = nDongIP - baseDongIP;
+            String myIP =  NetworkUtil.getMyIP(mActivity);
+            String[] arrString = StringUtil.split(myIP, ".");
+            if (arrString.length > 3) {
+
+                strIP = arrString[0] + "."
+                        + nDongIP + "."
+                        + Const.DEFAULT_LOBBY_IP_THIRD+ "."
+                        + Const.DEFAULT_LOBBY_IP_FORTH;
+
+                WallpadStatusData.PhoneAddr lobbyAddr = new WallpadStatusData.PhoneAddr();
+                lobbyAddr.Name = strDong + mActivity.getString(R.string.dong)
+                        + " " + mActivity.getString(R.string.check_network_lobby)
+                ;
+                lobbyAddr.IP = strIP;
+
+                mNetworkList.add(lobbyAddr);
+            }
+        }
+    }
+
+
+    // add GuardInfo to NetworkList
+    private void getGuardInfo() {
+        List<GuardInfo> guardInfoList = mMainDatabaseManager.getGuardList();
+
+        if (DEBUG)  Log.d(TAG, "getGuardInfo() guardInfoList.size() : " + guardInfoList.size());
+
+        for (int i=0; i<guardInfoList.size(); i++) {
+            GuardInfo guardInfo = guardInfoList.get(i);
+
+            String strGuardName = guardInfo.getName();
+            String strDong = guardInfo.getDong();
+            String strHo = guardInfo.getHo();
+            String strIP = guardInfo.getIP();
+
+            String strDongHo = strDong + mActivity.getString(R.string.dong)
+                    + " "
+                    + strHo + mActivity.getString(R.string.ho)
+                    + " "
+                    + strGuardName;
+
+            WallpadStatusData.PhoneAddr guardAddr = new WallpadStatusData.PhoneAddr();
+            guardAddr.Name = strDongHo;
+            guardAddr.IP = strIP;
+
+            mNetworkList.add(guardAddr);
+        }
+    }
+
+    // add GatewayInfo to NetworkList
+    private void getGatewayInfo() {
+        mNetworkList.add(NetworkUtil.getGatewayAddr(mActivity));
+    }
+
+
+    // parse CCTVInfo
+    public List<String> parseCCTVInfo(String cctvInfo) {
+        List<String> result = null;
+
+        Log.d(TAG, "parseCCTVInfo() cctvInfo : " + cctvInfo);
+
+        if (cctvInfo == null)
+            return null;
+
+        try {
+            String[] arrCCTVInfo = StringUtil.split(cctvInfo, "*");
+            if (arrCCTVInfo != null) {
+                result = new ArrayList();
+
+                for (int i=0; i<arrCCTVInfo.length; i++) {
+                    String[] arrSubInfo = StringUtil.split(arrCCTVInfo[i], ":");
+                    if (arrSubInfo != null) {
+                        for (int j=0; j<arrSubInfo.length; j++) {
+                            result.add(arrSubInfo[j]);
+                        }
+                    }
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+
+        if (DEBUG) {
+            if (result != null) {
+                Log.d(TAG, "parseCCTVInfo() result.size() : " + result.size());
+
+                for (int i=0; i<result.size(); i++) {
+                    Log.d(TAG, "result(" + i + ") : " + result.get(i));
+                }
+            }
+        }
+
+
+        return result;
+    }
+
+
+    // get CCTV IP
+    private String getCCTVIP(List<String> cctvInfo) {
+        String result = null;
+
+        if (cctvInfo != null) {
+            for (int i=0; i<cctvInfo.size(); i++) {
+                if (cctvInfo.get(i).equals("IP") && (cctvInfo.size() > (i + 1))) {
+                    result = cctvInfo.get(i + 1);
+                    break;
+                }
+            }
+        }
+
+        return result;
+    }
+
+
+    // get CCTV Where
+    private String getCCTVWhere(List<String> cctvInfo) {
+        String result = null;
+
+        if (cctvInfo != null) {
+            for (int i=0; i<cctvInfo.size(); i++) {
+                if (cctvInfo.get(i).equals("Where") && (cctvInfo.size() > (i + 1))) {
+                    result = cctvInfo.get(i + 1);
+                    break;
+                }
+            }
+        }
+
+        return result;
+    }
+
+
+    // add CCTVInfo to NetworkList
+    private void getCCTVInfo() {
+        List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_CCTV);
+        if (InfoList != null) {
+            for (int i=2; i<InfoList.size(); i++) {
+//                Log.d(TAG, "[getCCTVInfo] InfoList.get(" + i + ") = " + InfoList.get(i));
+                if (InfoList.get(i).equals("버튼") && (InfoList.size() > (i + 1))) {
+                    List<String> cctvInfo = parseCCTVInfo(InfoList.get(i + 1));
+                    String strName = getCCTVWhere(cctvInfo);
+                    String strIP = getCCTVIP(cctvInfo);
+
+                    if (strIP != null) {
+                        WallpadStatusData.PhoneAddr cctvAddr = new WallpadStatusData.PhoneAddr();
+                        cctvAddr.Name = "CCTV " + strName;
+                        cctvAddr.IP = strIP;
+
+                        mNetworkList.add(cctvAddr);
+                    }
+                }
+            }
+        }
+    }
+
+    private String getRemoteCallIP(String info) {
+        String result = null;
+
+        if (info != null) {
+            int idx = info.indexOf(":");
+            result = info.substring(0, idx);
+            Log.d(TAG, "[getRemoteCallIP] result [" + result + "]");
+        }
+
+        return result;
+    }
+
+    // add RemoteCall to NetworkList
+    private void getRemoteCallInfo() {
+        List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_REMOTE_CALL);
+        if (InfoList != null) {
+            if (InfoList.size() == 6) {
+                for (int i = 2; i < InfoList.size(); i++) {
+//                Log.d(TAG, "[getRemoteCallInfo] InfoList.get(" + i + ") = " + InfoList.get(i));
+                    if (i == (InfoList.size() - 1)) {
+                        String strIP = getRemoteCallIP(InfoList.get(i));
+                        if (strIP != null) {
+                            WallpadStatusData.PhoneAddr remoteCallAddr = new WallpadStatusData.PhoneAddr();
+                            remoteCallAddr.Name = "방문객원격통화";
+                            remoteCallAddr.IP = strIP;
+                            mNetworkList.add(remoteCallAddr);
+                        }
+                    }
+                }
+            } else {
+                Log.w(TAG, "[getRemoteCallInfo] Invalid InfoList.size!! [" + InfoList.size() + "]");
+            }
+        }
+    }
+
+    // add FTPServerInfo to NetworkList
+    private void getFTPServerInfo() {
+        mNetworkList.add(NetworkUtil.getFTPServerAddr(mActivity));
+    }
+
+
+    // add NeiInfo to NetworkList
+    private void getNeiInfo() {
+        List<PhoneAddr> neiAddrList= NetworkUtil.getNeiAddrList(mActivity);
+
+        if (DEBUG)  Log.d(TAG, "getNeiInfo() neiAddrList.size() : " + neiAddrList.size());
+
+        for (int i=0; i<neiAddrList.size(); i++) {
+            PhoneAddr neiAddr = neiAddrList.get(i);
+            if (DEBUG)  Log.d(TAG, "lobbyAddr.Name : " + neiAddr.Name
+                    + ", IP : " + neiAddr.IP
+            );
+
+            //if (neiAddr.IP.length() > Const.IP_MIN_LENGTH)
+            mNetworkList.add(neiAddr);
+        }
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+    private View.OnClickListener mButtonClick = new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+
+            mWpadSound.Play(SND.effect.TOUCH_LATCHED);
+            MainActivity.setFinishTimerReset();
+
+            switch(v.getId())
+            {
+                case R.id.btn_test:
+                {
+                    if (DEBUG)  Log.d(TAG, "onClick() btn_test" );
+
+                    //String controllerName = mNetworkList.get(mSelectedIdx).Name;
+                    //if (DEBUG)    Toast.makeText(mActivity, controllerName + " test", Toast.LENGTH_SHORT).show();
+
+                    doTestNetwork(mSelectedIdx);
+                }
+                break;
+
+                case R.id.btn_add_test_ip:
+                {
+                    if (DEBUG)  Log.d(TAG, "onClick() btn_add_test_ip" );
+
+                    openAddIPDialog();
+                }
+                break;
+
+                case R.id.btn_igate_ctrl_config_read:
+                {
+                    if (DEBUG)  Log.d(TAG, "onClick() btn_igate_ctrl_config_read" );
+                    mTV_Result.append((mNumber++)+". 게이트웨이 제어포트 정보 조회 결과: \r\n");
+                    getCtrlConfigInfo();
+
+                }
+                break;
+
+                case R.id.btn_igate_hn_config_read:
+                {
+                    if (DEBUG)  Log.d(TAG, "onClick() btn_igate_hn_config_read" );
+
+                    mTV_Result.append((mNumber++)+". 게이트웨이 HN 정보 조회 결과: \r\n");
+                    getHNConfigInfo();
+                }
+                break;
+
+                default:
+                    break;
+            }
+
+        }
+    };
+
+
+    private void getCtrlConfigInfo()
+    {
+        imap_ctrl_config_read.DoWork();
+        imap_ctrl_config_read.SetRetCtr(new RetProci()
+        {
+
+            @Override
+            public void ProcSuccess()
+            {
+                String Result = "";
+
+                DebugLogOutput("ProcSuccess");
+                int ItemCount = imap_ctrl_config_read.SetItem("ctrl_param");
+                if (ItemCount == 0)
+                {
+                    return;
+                }
+                Result += "     1. 제어포트 통신 속도 :";
+                Result += imap_ctrl_config_read.GetAttributeVal(0, "ctrl_baudrate");
+                Result += "\r\n";
+
+                Result += "     2. 제어포트 Open 여부 :";
+                Result += imap_ctrl_config_read.GetAttributeVal(0, "ctrl_open");
+                Result += "\r\n";
+
+                Result += "     3. 제어포트 Framing Error 체크 여부 :";
+                Result += imap_ctrl_config_read.GetAttributeVal(0, "ctrl_framecheck");
+                Result += "\r\n";
+
+                Result += "     4. 기타 예비용 메시지 :";
+                Result += imap_ctrl_config_read.GetAttributeVal(0, "ctrl_message");
+                Result += "\r\n\r\n";
+
+                if(Result != null)
+                {
+                    mTV_Result.append(Result);
+                }
+            }
+
+            @Override
+            public void ProcError()
+            {
+                DebugLogOutput("ProcError");
+                mTV_Result.append("통신 실패. 잠시 후 다시 시도해주세요.\r\n");
+            }
+
+            @Override
+            public void ProcDoing()
+            {
+                // TODO Auto-generated method stub
+
+            }
+        });
+    }
+
+    private void getHNConfigInfo()
+    {
+        imap_hn_config_read.DoWork();
+        imap_hn_config_read.SetRetCtr(new RetProci()
+        {
+
+            @Override
+            public void ProcSuccess()
+            {
+                String Result = "";
+
+                DebugLogOutput("ProcSuccess");
+                int ItemCount = imap_hn_config_read.SetItem("eth_param");
+                if (ItemCount == 0)
+                {
+                    return;
+                }
+                Result += "     1. IP자동설정 기능 사용 여부 :";
+                Result += imap_hn_config_read.GetAttributeVal(0, "eth_mode");
+                Result += "\r\n";
+
+                Result += "     2. G/W HN망 IP 주소 :";
+                Result += imap_hn_config_read.GetAttributeVal(0, "eth_ip");
+                Result += "\r\n";
+
+                Result += "     3. G/W HN망 MAC 주소 :";
+                Result += imap_hn_config_read.GetAttributeVal(0, "eth_mac");
+                Result += "\r\n";
+
+                Result += "     4. G/W HN망 Gateway 주소 :";
+                Result += imap_hn_config_read.GetAttributeVal(0, "eth_gw");
+                Result += "\r\n";
+
+                Result += "     5. G/W HN망 Subnet Mask 주소 :";
+                Result += imap_hn_config_read.GetAttributeVal(0, "eth_sm");
+                Result += "\r\n";
+
+                //****************************************************//
+                ItemCount = 0;
+                ItemCount = imap_hn_config_read.SetItem("noti_param");
+                if (ItemCount == 0)
+                {
+                    return;
+                }
+
+                Result += "     6. notice 메시지를 G/W에서 전송할지 여부 :";
+                Result += imap_hn_config_read.GetAttributeVal(0, "noti_send");
+                Result += "\r\n";
+
+                Result += "     7. notice 메시지 전송 등급 :";
+                Result += imap_hn_config_read.GetAttributeVal(0, "noti_level");
+                Result += "\r\n";
+
+                Result += "     8. notice 메시지 수신 주소 :";
+                Result += imap_hn_config_read.GetAttributeVal(0, "noti_ip");
+                Result += "\r\n";
+
+                Result += "     9. notice 메시지 수신 포트 :";
+                Result += imap_hn_config_read.GetAttributeVal(0, "noti_port");
+                Result += "\r\n\r\n";
+
+                if(Result != null)
+                {
+                    mTV_Result.append(Result);
+                }
+            }
+
+            @Override
+            public void ProcError()
+            {
+                DebugLogOutput("ProcError");
+                mTV_Result.append("통신 실패. 잠시 후 다시 시도해주세요.\r\n");
+            }
+
+            @Override
+            public void ProcDoing()
+            {
+                // TODO Auto-generated method stub
+
+            }
+        });
+    }
+
+    // idx에 해당하는 network를 test
+    private void doTestNetwork(int idx) {
+        String testIP = mNetworkList.get(idx).IP;
+
+        if (!checkTestCondition(testIP)) {
+
+            String popupTitle = getString(R.string.admin_check_submenu_check_network);
+            String popupMessage = getString(R.string.check_network_error_ip);
+
+            DialogUtil dialog = new DialogUtil(mActivity);;
+            dialog.openNoticeDialog(popupTitle, popupMessage);
+
+            return;
+        }
+
+        String title = String.valueOf(mNumber++) + ". " ;
+
+        title += mNetworkList.get(idx).Name
+                + " " + "(" + testIP + ") " + mActivity.getString(R.string.test) + " : ";
+        doPingTest(title, testIP);
+//        result = title + doPingTest(testIP);
+
+//        result = mTV_Result.getText() + result + "\n";
+//        mTV_Result.setText(result);
+    }
+
+
+    // IP가 유효한지를 return
+    private boolean checkTestCondition(String testIP) {
+        boolean ret = false;
+
+        if (DEBUG)  Log.d(TAG, "checkTestCondition() testIP.length() : " + testIP.length());
+
+        boolean UseIP_Expantion = mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DANJI_CONFIG);
+        if(UseIP_Expantion == false)
+        {
+            if ((testIP != null) && (testIP.length() > Const.IP_MIN_LENGTH))
+                ret = true;
+        }
+        else
+        {
+            if ((testIP != null) && (testIP.length() >= Const.IP_MIN_LENGTH))
+                ret = true;
+        }
+        return ret;
+    }
+
+
+
+    // testIP로 ping test를 수행
+    private void doPingTest(String title, String testIP) {
+        new PingTestTask().execute(title, testIP);
+    }
+
+
+
+    private final int PING_TIMEOUT = 3000;
+    private class PingTestTask extends AsyncTask<Object, Void, String[]> {
+        @Override
+        protected String[] doInBackground(Object... params) {
+            String title = (String)params[0];
+            String testIP = (String)params[1];
+
+            String arrResult[] = new String[2];
+
+            StringBuilder result = new StringBuilder();
+
+            try {
+                InetAddress ia = InetAddress.getByName(testIP);
+                if(ia.isReachable(PING_TIMEOUT) == true) {
+                    result.append("Reachable in 3 sec");
+                } else {
+                    result.append("Unreachable in 3 sec");
+                }
+            } catch (UnknownHostException e){
+                result.append("UnknownHost Exception");
+            } catch (IOException e) {
+                result.append("IO Exception : " + e.toString());
+            } catch (IllegalArgumentException e) {
+                result.append("IllegalArgumentExceptio");
+            }
+
+            arrResult[0] = title;
+            arrResult[1] = result.toString();
+
+            return arrResult;
+        }
+
+        @Override
+        protected void onPostExecute(String[] arrResult) {
+            String result = arrResult[0] + arrResult[1];
+
+            mTV_Result.append(result + "\n");
+        }
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    private DialogUtil mDialog;
+    // open AddIP Dialog
+    public void openAddIPDialog() {
+
+        String title = mActivity.getString(R.string.check_network_add_test_ip);
+        String message = mActivity.getString(R.string.check_network_add_test_ip_message);
+
+        DialogInterface.OnClickListener positiveListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        mDialog.hideSoftKeypad();
+
+                        if (NetworkUtil.isValidIP(mDialog.getEditIPText())) {
+                            dialog.dismiss();
+                            MainActivity.setFinishTimerReset();
+
+                            openSetIPDialog(mDialog.getEditIPText()); ;
+                        }
+                    }
+                };
+
+        DialogInterface.OnClickListener negativeListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        dialog.dismiss();
+                        MainActivity.setFinishTimerReset();
+                    }
+                };
+
+        mDialog = new DialogUtil(mActivity);
+        mDialog.openAddIPDialog(title, message, positiveListener, negativeListener, null);
+    }
+
+
+    // open Dialog
+    public void openDialog(final String title, final String message) {
+        mDialog = new DialogUtil(mActivity);
+
+        DialogInterface.OnClickListener positiveListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        dialog.dismiss();
+                        MainActivity.setFinishTimerReset();
+                    }
+                };
+
+        mDialog.openCommonDialog(title, message, positiveListener, null);
+    }
+
+    // open Finish Dialog
+    public void openFinishDialog(final String title, final String message) {
+        mDialog = new DialogUtil(mActivity);
+
+        DialogInterface.OnClickListener positiveListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        //finish();
+                        MainActivity.setFinishTimerReset();
+                    }
+                };
+
+        mDialog.openCommonDialog(title, message, positiveListener, null);
+    }
+
+
+    // open SetIP Dialog
+    public void openSetIPDialog(final String strIP) {
+
+        String title = mActivity.getString(R.string.check_network_add_test_ip);
+        String message = "IP : " + strIP
+                + "\n\n를 추가하시겠습니까?"
+                ;
+
+        DialogInterface.OnClickListener positiveListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        dialog.dismiss();
+                        MainActivity.setFinishTimerReset();
+                        addTestIP(strIP); ;
+                    }
+                };
+
+        DialogInterface.OnClickListener negativeListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        dialog.dismiss();
+                        MainActivity.setFinishTimerReset();
+                    }
+                };
+
+        mDialog = new DialogUtil(mActivity);
+        mDialog.openCommonDialog(title, message, positiveListener, negativeListener);
+    }
+
+
+    // add TestIP
+    private void addTestIP(final String strIP) {
+
+        Log.d(TAG, "addTestIP() IP : "+strIP);
+
+        WallpadStatusData.PhoneAddr phoneAddr = new WallpadStatusData.PhoneAddr();
+        phoneAddr.Name = mActivity.getString(R.string.check_network_test_ip);
+        phoneAddr.IP = strIP;
+        mNetworkList.add(phoneAddr);
+
+
+        String title = mActivity.getString(R.string.admin_setip_manually);
+        String message = "IP : " + strIP
+                + "\n\n가 추가되었습니다.";
+
+        openFinishDialog(title, message);
+    }
+
+
+
+
+
+}

+ 1502 - 1527
ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/CheckSensorFragment.java

@@ -1,1527 +1,1502 @@
-package com.artncore.managersetting.ui.fragments;
-
-import java.util.ArrayList;
-import java.util.List;
-
-
-import kr.co.icontrols.v40ioctl.V40IF;
-import kr.co.icontrols.wallpadsupport.Version;
-import kr.co.icontrols.wallpadsupport.WpadScale;
-import kr.co.icontrols.wallpadsupport.WpadSound;
-import kr.co.icontrols.wallpadsupport.WpadSound.SND;
-import android.app.Activity;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-//import android.support.v4.app.Fragment;
-import androidx.fragment.app.Fragment;
-import android.util.Log;
-import android.view.KeyEvent;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.View.OnKeyListener;
-import android.view.ViewGroup;
-import android.widget.Button;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-
-import com.artncore.WallPadDataMgr.WallpadDeviceSet;
-import com.artncore.WallPadDataMgr.WallpadSalesSampleData;
-import com.artncore.commons.define;
-import com.artncore.deviceinterface.WallPadInterface;
-import com.artncore.managersetting.dao.MainDatabaseManager;
-import com.artncore.managersetting.domain.Const;
-import com.artncore.managersetting.ui.activities.MainActivity;
-import com.artncore.managersetting.util.TimeUtil;
-import com.artncore.wallpadapi.IGW200dAPI;
-import com.artncore.wallpadapi.IGW300API;
-import com.artncore.wallpadapi.SmartKeyRfDoorAPI;
-import com.artncore.wallpadapi.WallPadAPI;
-import com.artncore.managersetting.R;
-import com.util.LogUtil;
-
-/**
- * A list fragment representing a list of Items. This fragment also supports
- * tablet devices by allowing list items to be given an 'activated' state upon
- * selection. This helps indicate which item is currently being viewed in a
- * {link ItemDetailFragment}.
- * <p>
- * Activities containing this fragment MUST implement the {link Callbacks}
- * interface.
- */
-public class CheckSensorFragment extends Fragment {
-    private static final String TAG = "CheckSensorFragment";
-
-    private final boolean DEBUG = true;
-
-    public final int SENSOR_TYPE_BASE = Const.COMMON_TYPE_BASE;
-    public final int SENSOR_TYPE_MAGNETIC_0 =       SENSOR_TYPE_BASE + 0; // 101
-    public final int SENSOR_TYPE_OUTER_MOTION =     SENSOR_TYPE_BASE + 1; // 102
-    public final int SENSOR_TYPE_INNER_MOTION =     SENSOR_TYPE_BASE + 2; // 103
-    public final int SENSOR_TYPE_EMR =              SENSOR_TYPE_BASE + 3; // 104
-    public final int SENSOR_TYPE_ESCAPE_LADDER =    SENSOR_TYPE_BASE + 4; // 105
-    public final int SENSOR_TYPE_APU =              SENSOR_TYPE_BASE + 5; // 106
-    public final int SENSOR_TYPE_ETC =              SENSOR_TYPE_BASE + 6; // 107
-
-    public final int SENSOR_TYPE_ESCAPE_LADDER_D101 = SENSOR_TYPE_BASE + 3;
-    public final int SENSOR_TYPE_ETC_D101=            SENSOR_TYPE_BASE + 4;
-    public final int SENSOR_TYPE_APU_D101 =           SENSOR_TYPE_BASE + 5;
-    public final int SENSOR_TYPE_CLOSE =           SENSOR_TYPE_BASE + 7;
-
-    public final int SENSOR_TYPE_SMART_DCAM_DETECT = SENSOR_TYPE_BASE + 8;
-
-    private Activity mActivity;
-    private WpadSound mWpadSound;
-    private WallPadAPI mWallPadAPI;
-    private MainDatabaseManager mMainDatabaseManager;
-    // GLE 게이드 웨이 인터페이스 추가
-    private IGW200dAPI iGW200dAPI = null;
-    private IGW300API iGW300API = null;
-
-
-    private List<String[]> mSensorStateList = null;
-    private List<String> mSensorList = new ArrayList<String>();
-    private List<Button> mButtonList = new ArrayList<Button>();
-    private LinearLayout mSensorLayout_1, mSensorLayout_2, mSensorLayout_3, mSensorLayout_4, mSensorLayout_5;
-    private LinearLayout mSensorLayout_Current;
-    private TextView mTV_Result;
-    private int mNumber = 1;
-    private Button CloseBtn;
-
-    private int mSelectedIdx = -1;
-    private boolean bRuuning = true;
-
-	private IGW300API.Data mIGW300Data;
-    private IGW200dAPI.Data mIGW200dData;
-
-    //[Model]
-    private int ModelType = Version.getModelType();
-    //private int ModelType = Version.MODEL_TYPE.IHN_1030_D;
-
-    private boolean isSmartDcamUse = false;
-    private int SmartDcamIndex = -1;
-    SmartDcamDetectReceiver smartDcamDetectReceiver;
-    private SmartKeyRfDoorAPI smartKeyRfDoorAPI = null;
-
-    // constructor
-    public CheckSensorFragment() {
-    }
-
-    @Override
-    public void onAttach(Activity activity) {
-        super.onAttach(activity);
-
-        mActivity = activity;
-    }
-
-    public IGW200dAPI.Data getIGW200UpdateData()
-    {
-        if(iGW200dAPI == null)
-        {
-            Log.e(TAG, "[Device_Update] - iGW200dAPI unload !!!");
-            return null;
-        }
-        // 2. Reflash
-        try
-        {
-            int ret = iGW200dAPI.Refresh(false);
-            if(ret < 0)
-            {
-                Log.e(TAG, "[Device_Update] getState - ret (" + ret + ")   ErrorCode = " + iGW200dAPI.ErrorCode.ErrStr());
-                return null;
-            }
-        }
-        catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-        }
-        catch(Exception e)
-        {
-            Log.e(TAG, "[Device_Update] - " + e.toString());
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
-            return null;
-        }
-        return iGW200dAPI.data;
-    }
-
-	public IGW300API.Data getIGW300UpdateData()
-	{
-		if(iGW300API == null)
-		{
-			Log.e(TAG, "[Device_Update] - iGW300API unload !!!");
-			return null;
-		}
-		// 2. Reflash
-		try
-		{
-			int ret = iGW300API.Refresh(false);
-			if(ret < 0)
-			{
-				Log.e(TAG, "[Device_Update] getState - ret (" + ret + ")   ErrorCode = " + iGW300API.ErrorCode.ErrStr());
-				return null;
-			}
-		}
-        catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-        }
-        catch(Exception e)
-		{
-			Log.e(TAG, "[Device_Update] - " + e.toString());
-			//e.printStackTrace();
-			LogUtil.errorLogInfo("", TAG, e);
-			return null;
-		}
-		return iGW300API.data;
-	}
-
-    private boolean m_ApuState = false;
-
-    private void checkGWSensor() {
-        try {
-            if (mWallPadAPI.getGatewayType() == Version.GATEWAY_MODEL.IGW_200) {
-                if (iGW200dAPI == null) {
-                    Log.w(TAG, "[checkGWSensor] iGW200dAPI is null!!");
-                    return;
-                }
-
-                if (iGW200dAPI.data == null) {
-                    Log.w(TAG, "[checkGWSensor] iGW200dAPI.data is null!!");
-                    return;
-                }
-
-                // 동체
-                if (iGW200dAPI.data.senIn.Motion) receivedSensorEvent(SENSOR_TYPE_OUTER_MOTION);
-
-                // 마그네틱
-                if (iGW200dAPI.data.senIn.Magnetic) receivedSensorEvent(SENSOR_TYPE_MAGNETIC_0);
-
-                // 비상 욕실폰 사용안하는걸로~~접점은~~~
-                if (iGW200dAPI.data.senIn.BathEMER) {
-                    receivedSensorEvent(SENSOR_TYPE_EMR);
-                    // 욕실폰에 비상 ACK를 준다.
-                    Device_BathEmerAckRelase();
-                }
-
-                // APU 감지가 되면 월패드 비상등을 켜도록 한다.
-                if (iGW200dAPI.data.senIn.APU) {
-                    if (m_ApuState != iGW200dAPI.data.senIn.APU) receivedSensorEvent(SENSOR_TYPE_APU);
-                }
-                else {
-                    if (m_ApuState != iGW200dAPI.data.senIn.APU) receivedSensorEvent(SENSOR_TYPE_APU);
-                }
-                m_ApuState = iGW200dAPI.data.senIn.APU;
-
-                // 피난사다리 우리집
-                if (iGW200dAPI.data.senIn.EVAC_Home) receivedSensorEvent(SENSOR_TYPE_ETC);
-
-                // 피난사다리 윗집 - 우리집과 윗집 피난사다리 구분하여 처리하도록한다.
-                if (iGW200dAPI.data.senIn.EVAC_UP == true)receivedSensorEvent(SENSOR_TYPE_ESCAPE_LADDER);
-
-            }
-            else if (mWallPadAPI.getGatewayType() == Version.GATEWAY_MODEL.IGW_300) {
-                Log.i(TAG, "[CheckSensor] - igw300 ENTER");
-
-                if (iGW300API == null) {
-                    Log.w(TAG, "[checkGWSensor] iGW300API is null!!");
-                    return;
-                }
-
-                if (iGW300API.data == null) {
-                    Log.w(TAG, "[checkGWSensor] iGW300API.data is null!!");
-                    return;
-                }
-
-                // 내부 동체 (동체감지기 2) 2
-                if (iGW300API.data.senIn.In_Motion) {
-                    receivedSensorEvent(SENSOR_TYPE_INNER_MOTION);
-                }
-                else {
-                    mButtonList.get(SENSOR_TYPE_INNER_MOTION - SENSOR_TYPE_BASE).setEnabled(false);
-                }
-
-                // 외부 동체 (동체감지기 1) 1
-                if (iGW300API.data.senIn.Out_Motion) {
-                    receivedSensorEvent(SENSOR_TYPE_OUTER_MOTION);
-                }
-                else {
-                    mButtonList.get(SENSOR_TYPE_OUTER_MOTION - SENSOR_TYPE_BASE).setEnabled(false);
-                }
-
-                // 마그네틱 0
-                if (iGW300API.data.senIn.Magnetic == true) {
-                    receivedSensorEvent(SENSOR_TYPE_MAGNETIC_0);
-                }
-                else {
-                    mButtonList.get(SENSOR_TYPE_MAGNETIC_0 - SENSOR_TYPE_BASE).setEnabled(false);
-                }
-
-                // 비상 욕실폰 사용안하는걸로~~접점은~~~
-            /*if (iGW300API.data.senIn.BathEMER == true)
-            {
-                receivedSensorEvent(SENSOR_TYPE_EMR);
-                // 욕실폰에 비상 ACK를 준다.
-                Device_BathEmerAckRelase();
-            } else
-            {
-
-            }*/
-
-                // APU 감지가 되면 월패드 비상등을 켜도록 한다. 5
-                if (iGW300API.data.senIn.APU) {
-                    if (m_ApuState != iGW300API.data.senIn.APU) receivedSensorEvent(SENSOR_TYPE_APU_D101);
-                }
-                else {
-                    mButtonList.get(SENSOR_TYPE_APU_D101 - SENSOR_TYPE_BASE).setEnabled(false);
-                    //if (m_ApuState != iGW300API.data.senIn.APU)
-                    //    receivedSensorEvent(SENSOR_TYPE_APU_D101);
-                }
-                m_ApuState = iGW300API.data.senIn.APU;
-
-                // 피난사다리 우리집
-                if (iGW300API.data.senIn.EVAC_Home) {
-                    // 피난사다리 입하 4
-                    receivedSensorEvent(SENSOR_TYPE_ETC_D101);
-                }
-                else {
-                    mButtonList.get(SENSOR_TYPE_ETC_D101 - SENSOR_TYPE_BASE).setEnabled(false);
-                }
-
-                // 피난사다리 윗집 - 우리집과 윗집 피난사다리 구분하여 처리하도록한다.
-                if (iGW300API.data.senIn.EVAC_UP) {
-                    // 피난사다리 입상 3
-                    receivedSensorEvent(SENSOR_TYPE_ESCAPE_LADDER_D101);
-                }
-                else {
-                    mButtonList.get(SENSOR_TYPE_ESCAPE_LADDER_D101 - SENSOR_TYPE_BASE).setEnabled(false);
-                }
-            }
-            else {
-                Log.w(TAG, "[checkGWSensor] Not supported gateway model -> " + mWallPadAPI.getGatewayType());
-            }
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
-        } catch (Exception e) {
-            Log.e(TAG, "[Exception] checkGWSensor()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
-        }
-    }
-
-    /**
-     * Device_BathEmerAckRelase
-     *
-     * @return (int) - >=0 : 성공, <0 : 실패
-     */
-    private int Device_BathEmerAckRelase() {
-        if (iGW200dAPI == null) {
-            Log.e(TAG, "[Device_BathEmerAckRelase] - iGW200dAPI unload !!!");
-            return -1;
-        }
-
-        try {
-            int ret = iGW200dAPI.BathEmerAckRelase();
-            if (ret < 0) {
-                Log.e(TAG, "[Device_BathEmerAckRelase] - iGW200dAPI.BathEmerAckRelase()  ret = " + ret + " / ErrorCode = " + iGW200dAPI.ErrorCode.ErrStr());
-                return -2;
-            }
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-        } catch(Exception e) {
-            Log.e(TAG, "[Exception] Device_BathEmerAckRelase()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("",TAG, e);
-            return -102;
-        }
-        return 0;
-    }
-
-    BroadcastReceiver IGW200InterfaceBR = new BroadcastReceiver() {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            String strActionName = intent.getAction();
-            Log.i(TAG, "[IGW200InterfaceBR.onReceive] strActionName [" + strActionName + "]");
-            if (strActionName.equals(IGW200dAPI.SENSOR_BR_NAME)) {
-                getIGW200UpdateData();
-                checkGWSensor();
-            }
-        }
-    };
-
-    BroadcastReceiver IGW300InterfaceBR = new BroadcastReceiver()
-    {
-        @Override
-        public void onReceive(Context context, Intent intent)
-        {
-            String strActionName = intent.getAction();
-            Log.i(TAG, "[IGW300InterfaceBR.onReceive] strActionName [" + strActionName + "]");
-            if (strActionName.equals(IGW300API.SENSOR_BR_NAME)) {
-                getIGW300UpdateData();
-                checkGWSensor();
-            }
-        }
-    };
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        if (DEBUG)  Log.d(TAG, "onCreate() ");
-
-        super.onCreate(savedInstanceState);
-
-        mWallPadAPI = MainActivity.getWallPadAPI();
-        mWpadSound = MainActivity.getWpadSound();
-        mMainDatabaseManager = MainActivity.getMainDatabaseManager();
-        // GLE 모델은 센서값이 게이트웨이에서 받으므로 처리를 달리한다.
-        if (mWallPadAPI.getGatewayType() == Version.GATEWAY_MODEL.IGW_200) {
-            iGW200dAPI = mWallPadAPI.Get_IGW200dController();
-            if (iGW200dAPI == null) {
-                Log.w(TAG , "[onCreate] iGW200dAPI is null!!");
-            }
-            mIGW200dData = getIGW200UpdateData();
-            IntentFilter filter = new IntentFilter();
-            filter.addAction(IGW200dAPI.SENSOR_BR_NAME);
-            mActivity.registerReceiver(IGW200InterfaceBR, filter);
-
-            Log.i(TAG, "[onCreate] Magnetic [" + mIGW200dData.senIn.Magnetic + "], Motion [" + mIGW200dData.senIn.Motion + "], EVAC_Home [" + mIGW200dData.senIn.EVAC_Home + "], EVAC_UP [" + mIGW200dData.senIn.EVAC_UP + "], APU [" + mIGW200dData.senIn.APU + "], BathEMER [" + mIGW200dData.senIn.BathEMER + "]");
-        }
-        else if (mWallPadAPI.getGatewayType() == Version.GATEWAY_MODEL.IGW_300) {
-            iGW300API = mWallPadAPI.Get_IGW300Controller();
-            if (iGW300API == null) {
-                Log.w(TAG , "[onCreate] iGW300API is null!!");
-            }
-            mIGW300Data = getIGW300UpdateData();
-            IntentFilter filter = new IntentFilter();
-            filter.addAction(iGW300API.SENSOR_BR_NAME);
-            mActivity.registerReceiver(IGW300InterfaceBR, filter);
-
-            Log.i(TAG, "[onCreate] Magnetic [" + mIGW300Data.senIn.Magnetic + "], In_Motion [" + mIGW300Data.senIn.In_Motion + "], Out_Motion [" + mIGW300Data.senIn.Out_Motion + "], EVAC_Home [" + mIGW300Data.senIn.EVAC_Home + "], EVAC_UP [" + mIGW300Data.senIn.EVAC_UP + "], APU [" + mIGW300Data.senIn.APU + "]");
-        }
-        else {
-            Log.w(TAG, "[onCreate] Not supported gateway model -> " + mWallPadAPI.getGatewayType());
-        }
-
-        mSensorList.add(mActivity.getString(R.string.check_sensor_magnetic_0));
-
-        if (mWallPadAPI.getGatewayType() == Version.GATEWAY_MODEL.IGW_200) {
-            mSensorList.add(mActivity.getString(R.string.check_sensor_emergency));
-            mSensorList.add(mActivity.getString(R.string.check_sensor_escape_ladder_up));
-            mSensorList.add(mActivity.getString(R.string.check_sensor_apu));
-            mSensorList.add(mActivity.getString(R.string.check_sensor_escape_ladder_home));
-        }
-        else if (mWallPadAPI.getGatewayType() == Version.GATEWAY_MODEL.IGW_300) {
-            mSensorList.add(mActivity.getString(R.string.check_sensor_motion_sensor1)); // 동체감지기1 (외부 동체)
-            mSensorList.add(mActivity.getString(R.string.check_sensor_motion_sensor2)); // 동체감지기2 (내부 동체)
-            if (Version.getModelType() == Version.MODEL_TYPE.IHN_1010GL || Version.getModelType() == Version.MODEL_TYPE.IHN_1010GL_I) {
-                mSensorList.add(mActivity.getString(R.string.check_sensor_escape_ladder_up));
-                mSensorList.add(mActivity.getString(R.string.check_sensor_escape_ladder_home));
-                mSensorList.add(mActivity.getString(R.string.check_sensor_apu));
-            }
-            else {
-                mSensorList.add(mActivity.getString(R.string.check_sensor_escape_ladder_up));
-                mSensorList.add(mActivity.getString(R.string.check_sensor_escape_ladder_home));
-                mSensorList.add(mActivity.getString(R.string.check_sensor_apu));
-                mSensorList.add(mActivity.getString(R.string.check_sensor_close_sensor));
-            }
-        }
-        else {
-            mSensorList.add(mActivity.getString(R.string.check_sensor_outer_motion));
-            mSensorList.add(mActivity.getString(R.string.check_sensor_inner_motion));
-
-            if (Version.getModelType() != Version.MODEL_TYPE.IHN_750) {
-                mSensorList.add(mActivity.getString(R.string.check_sensor_emergency));
-                mSensorList.add(mActivity.getString(R.string.check_sensor_escape_ladder_up));
-                mSensorList.add(mActivity.getString(R.string.check_sensor_apu));
-            }
-        }
-
-        try {
-            WallpadDeviceSet wallpadDeviceSet = new WallpadDeviceSet(getContext());
-            int[] DoorCamKind = wallpadDeviceSet.Get_RFDoorCAM_Info(); // 현관카메라 종류 파악
-            wallpadDeviceSet.closeDB();
-
-            if (DoorCamKind[1] == WallpadDeviceSet.DOORTYPE_IOT_SMART
-                    || DoorCamKind[1] == WallpadDeviceSet.DOORTYPE_HYOSUNG_SMART
-                    || DoorCamKind[1] == WallpadDeviceSet.DOORTYPE_DAEWOO_SMART)
-            {
-                mSensorList.add("거동수상자 감지");
-                isSmartDcamUse = true;
-                SmartDcamIndex = mSensorList.size() - 1;
-
-                smartDcamDetectReceiver = new SmartDcamDetectReceiver();
-                smartKeyRfDoorAPI = MainActivity.wpapi.Get_SmartKeyRfDoorController();
-                if (smartKeyRfDoorAPI == null) {
-					Log.w(TAG, "smartKeyRfDoorAPI NULL !!!");
-				}
-                else {
-                    String ret = smartKeyRfDoorAPI.SetSensorConfig((byte) 0x05, (byte)0x01);
-                    Log.i(TAG, "[StrangerCreate] - Test Setting result = " + ret);
-                }
-                registerBroadCastReceiver();
-            }
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
-        } catch (Exception e) {
-            Log.e(TAG, "Smart Dcam Detect Input ERROR !!!");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
-        }
-        bRuuning = true;
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-        View rootView = (View) inflater.inflate(R.layout.check_sensor_container,
-                container, false);
-
-        return (View)rootView;
-    }
-
-    @Override
-    public void onViewCreated(View view, Bundle savedInstanceState) {
-        super.onViewCreated(view, savedInstanceState);
-
-        if (savedInstanceState != null) {}
-
-        mSensorLayout_1 = (LinearLayout)view.findViewById(R.id.sensor_row_1);
-        mSensorLayout_2 = (LinearLayout)view.findViewById(R.id.sensor_row_2);
-        mSensorLayout_3 = (LinearLayout)view.findViewById(R.id.sensor_row_3);
-        mSensorLayout_4 = (LinearLayout)view.findViewById(R.id.sensor_row_4);
-        mSensorLayout_5 = (LinearLayout)view.findViewById(R.id.sensor_row_5);
-        mTV_Result = (TextView)view.findViewById(R.id.tv_result);
-
-        /*CloseBtn = new Button(mActivity);
-        CloseBtn.setText(mSensorList.get(i));
-        CloseBtn.setTextSize(BUTTON_TEXT_SIZE);
-        CloseBtn.setTextColor(getResources().getColor(R.color.white));
-        CloseBtn.setBackgroundResource(R.drawable.btn_sensor_color);
-        CloseBtn.setEnabled(false);
-
-        LinearLayout.LayoutParams buttonParams = new LinearLayout.LayoutParams(
-                BUTTON_LAYOUT_WIDTH //LayoutParams.WRAP_CONTENT
-                , BUTTON_LAYOUT_HEIGHT // LayoutParams.WRAP_CONTENT
-        );
-
-        buttonParams.leftMargin = BUTTON_LEFT_MARGIN;
-        buttonParams.topMargin = BUTTON_TOP_MARGIN;
-        buttonParams.bottomMargin = BUTTON_BOTTOM_MARGIN;
-        CloseBtn.setLayoutParams(buttonParams);*/
-
-
-//        mSensorStateList = mMainDatabaseManager.getSensorList();
-
-        initSensorView();
-
-        if ((Version.getModelType() == Version.MODEL_TYPE.IHN_D101) || (Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I)
-                || (Version.getModelType() == Version.MODEL_TYPE.IHN_D101K) || (Version.getModelType() == Version.MODEL_TYPE.IHN_D101K_I)) {
-            closeThread = new CloseThread();
-            closeThread.setRunning(true);
-            closeThread.start();
-        }
-
-        this.getView().setFocusableInTouchMode(true);
-        this.getView().requestFocus();
-        this.getView().setOnKeyListener( new OnKeyListener() {
-            @Override
-            public boolean onKey(View v, int keyCode, KeyEvent event ) {
-                if (DEBUG) Log.d(TAG, "[onKey] keyCode: "+keyCode+" event.getAction(): "+event.getAction());
-
-                MainActivity.setFinishTimerReset();
-
-                if (keyCode == 29) {
-                    // 디밍 상태에서 근접센서 감지시 받는 키값
-                    Log.i(TAG, "Sensor Detect : Dimming !!!");
-                    Log.i(TAG, "button name : " + mButtonList.get(6).getText());
-                    //mButtonList.get(6).setEnabled(true);
-                    mTV_Result.append("근접센서 감지 됨" + "\n");
-                }
-
-                if (bSensorDetecting) {
-                    // 게이트웨이 사용여부 확인
-                    if (Version.getGatewayUsage()) {
-                        switch (keyCode) {
-                            case Const.EVT_EMR:
-                                if (event.getAction() == KeyEvent.ACTION_DOWN) receivedSensorEvent(SENSOR_TYPE_EMR);
-                                return true;
-
-                            case Const.EVT_MAG0:
-                                if (event.getAction() == KeyEvent.ACTION_DOWN) receivedSensorEvent(SENSOR_TYPE_MAGNETIC_0);
-                                return true;
-
-                            case Const.EVT_EXIT:
-                                if (event.getAction() == KeyEvent.ACTION_DOWN) {
-                                    if (bUseEscapeLadder) receivedSensorEvent(SENSOR_TYPE_ESCAPE_LADDER);
-                                }
-                                return true;
-
-                            case Const.EVT_MOTIN:
-                                if (event.getAction() == KeyEvent.ACTION_DOWN) {
-                                    if (bUseInnerMotionDetecting) receivedSensorEvent(SENSOR_TYPE_INNER_MOTION);
-                                }
-                                return true;
-
-                            case Const.EVT_MOTOUT:
-                                if (event.getAction() == KeyEvent.ACTION_DOWN) {
-                                    if (bUseOuterMotionDetecting) receivedSensorEvent(SENSOR_TYPE_OUTER_MOTION);
-                                }
-                                return true;
-
-                            case Const.BTN_CALL:
-                            case Const.BTN_OPEN:
-                            case Const.BTN_EMR:
-                            default:
-                                break;
-                        }
-                    }
-                    else {
-                        switch (keyCode) {
-                            case Const.EVT_EMR_1010:
-                                if (event.getAction() == KeyEvent.ACTION_DOWN) receivedSensorEvent(SENSOR_TYPE_EMR);
-                                return true;
-
-                            case Const.EVT_MAG0_1010:
-                                if (event.getAction() == KeyEvent.ACTION_DOWN) receivedSensorEvent(SENSOR_TYPE_MAGNETIC_0);
-                                return true;
-
-                            case Const.EVT_EXIT_1010:
-                                if (event.getAction() == KeyEvent.ACTION_DOWN) {
-                                    if (bUseEscapeLadder) receivedSensorEvent(SENSOR_TYPE_ESCAPE_LADDER);
-                                }
-                                return true;
-
-                            case Const.EVT_MOTIN_1010:
-                                if (event.getAction() == KeyEvent.ACTION_DOWN) {
-                                    if (bUseInnerMotionDetecting) receivedSensorEvent(SENSOR_TYPE_INNER_MOTION);
-                                }
-                                return true;
-
-                            case Const.EVT_MOTOUT_1010:
-                                if (event.getAction() == KeyEvent.ACTION_DOWN) {
-                                    if (bUseOuterMotionDetecting) receivedSensorEvent(SENSOR_TYPE_OUTER_MOTION);
-                                }
-                                return true;
-
-                            case Const.BTN_CALL:
-                            case Const.BTN_OPEN:
-                            case Const.BTN_EMR:
-                            default:
-                                break;
-                        }
-                    }
-                }
-                return false;
-            }
-        });
-    }
-
-    static int prev = 0;
-    // 핸들러 객체 만들기
-    public class CloseHandler extends Handler {
-
-        @Override
-        public void handleMessage(Message msg) {
-
-        }
-    }
-
-    Handler clHandler = new Handler()
-    {
-        @Override
-        public void handleMessage(Message msg)
-        {
-            super.handleMessage(msg);
-
-            switch(msg.what)
-            {
-                case 1 :
-                    //Log.i(TAG, "[clHandler] - Close Detect!");
-                    short s = ((Integer)msg.obj).shortValue();
-                    mButtonList.get(6).setText("근접센서\r\n" + s);
-            }
-        }
-    };
-
-    CloseThread closeThread;
-    public class CloseThread extends Thread {
-
-        boolean running = false;
-        V40IF mV40IF = new V40IF();
-
-        void setRunning(boolean b) {
-            running = b;
-        }
-
-        @Override
-        public void run() {
-            while (running) {
-
-                if(this.isInterrupted())
-                {
-                    return;
-                }
-
-                try {
-                    sleep(500); // 0.5초 주기로 실행
-                } catch (InterruptedException e) {
-                    e.printStackTrace();
-                }
-                int val = mV40IF.sensorread();
-                if(val != prev)
-                {
-                    prev = val;
-                    Integer integer = new Integer(val);
-                    //String str = String.format("%x", val);
-                    clHandler.sendMessage(Message.obtain(clHandler, 1, integer));
-                }
-            }
-        }
-    }
-
-    @Override
-    public void onResume() {
-        if (DEBUG)  Log.d(TAG, "onResume() ");
-
-        super.onResume();
-
-        //registerBroadCastReceiver();
-    }
-
-    @Override
-    public void onPause() {
-        if (DEBUG)  Log.d(TAG, "onPause() ");
-
-        super.onPause();
-
-        unregisterBroadCastReceiver();
-
-        if(smartKeyRfDoorAPI != null)
-        {
-            Log.d(TAG, "[onPause] - smartKeyRfDoorAPI NULL !!!");
-            String ret = smartKeyRfDoorAPI.SetSensorConfig((byte) 0x05, (byte)30);
-            Log.d(TAG, "[StrangerCreate] - Recover Setting(5,30) result  = " + ret);
-        }
-    }
-
-
-    @Override
-    public void onDetach() {
-        super.onDetach();
-
-        if(mWallPadAPI!=null)
-        {
-            if (mWallPadAPI.getGatewayType() == Version.GATEWAY_MODEL.IGW_200) {
-                mActivity.unregisterReceiver(IGW200InterfaceBR);
-            }
-            else if (mWallPadAPI.getGatewayType() == Version.GATEWAY_MODEL.IGW_300) {
-                mActivity.unregisterReceiver(IGW300InterfaceBR);
-                if (closeThread != null) {
-                    if (closeThread.isAlive()) {
-                        closeThread.setRunning(false);
-                        closeThread.interrupt();
-                        closeThread = null;
-                    }
-                }
-                else {
-                    Log.w(TAG, "[onDetach] closeThread is null!!");
-                }
-            }
-            else {
-                Log.w(TAG, "[onDetach] not supported gateway type -> " + mWallPadAPI.getGatewayType());
-            }
-        }
-
-
-        mWallPadAPI = null;
-        bRuuning = false;
-    }
-
-    // unregister BR
-    private void unregisterBroadCastReceiver() {
-        try {
-			if (smartDcamDetectReceiver != null) {
-				mActivity.unregisterReceiver(smartDcamDetectReceiver);
-			}
-			else {
-                Log.w(TAG, "[unregisterBroadCastReceiver] smartDcamDetectReceiver is null!!");
-            }
-		} catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
-        } catch (Exception e) {
-			Log.e(TAG, "[Exception] unregisterBroadCastReceiver()");
-			//e.printStackTrace();
-            LogUtil.errorLogInfo("",TAG, e);
-		}
-    }
-
-    // register BR
-    private void registerBroadCastReceiver() {
-        // Create a filter with the broadcast intents we are interested in.
-        IntentFilter filter = new IntentFilter();
-        filter.addAction(define.NOTIFY_ACNAME);
-        mActivity.registerReceiver(smartDcamDetectReceiver, filter, null, null);
-    }
-
-    public class SmartDcamDetectReceiver extends BroadcastReceiver
-    {
-        private final String TAG = "SdbLivingEventReceiver";
-
-        private final boolean DEBUG = true;
-
-        public static final String CONCENT_REGI_ACTION = "MANAGER_LIVCONCENT_REGI"; //"com.artncore.apps.ic_wallpad.CallEventInterface";
-        public static final String SMART_DCAM_DETECT = "MANAGER_LIVCONCENT_REGI"; //"com.artncore.apps.ic_wallpad.CallEventInterface";
-
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            // TODO Auto-generated method stub
-            if (DEBUG)  Log.d(TAG, "--onReceive");
-
-            String action = intent.getAction();
-
-            if (action.equals(define.NOTIFY_ACNAME))
-            {
-                int kind = intent.getIntExtra("KIND", 0);
-                Log.i(TAG, "Receive Notify BR "+ define.NOTIFY_ACNAME + " : " + kind);
-                switch (kind)
-                {
-                    case define.NOTIFY_SMART_DCAM_DETECT:
-                        Log.i(TAG, "[onReceive] - SMART DCAM DETECT !!!!!!!!!!!");
-                        mButtonList.get(SmartDcamIndex).setEnabled(true);
-                        mWpadSound.Play(SND.effect.TOUCH_LATCHED);
-                        mTV_Result.append("거동수상자 감지됨" + "\n");
-                        break;
-
-                    case define.NOTIFY_SMART_DCAM_RELEASE:
-                        Log.i(TAG, "[onReceive] - SMART DCAM RELEASE !!!!!!!!!!!");
-                        mButtonList.get(SmartDcamIndex).setEnabled(false);
-                        mWpadSound.Play(SND.effect.TOUCH_LATCHED);
-                        mTV_Result.append("거동수상자 해제됨" + "\n");
-
-                        if(smartKeyRfDoorAPI != null)
-                        {
-                            smartKeyRfDoorAPI.SetCAMERAmode((byte) 0x00);
-                            smartKeyRfDoorAPI.SetLEDmode((byte) 0x00);
-                        }
-                        break;
-
-                    default:
-                        break;
-                }
-            }
-        }
-    }
-
-
-    @Override
-    public void onSaveInstanceState(Bundle outState) {
-        super.onSaveInstanceState(outState);
-    }
-
-
-    private static int CONTROLLER_COLUMN = 3;
-    private static int BUTTON_LAYOUT_WIDTH = 200;
-    private static int BUTTON_LAYOUT_HEIGHT = 80;
-    private static int BUTTON_LEFT_MARGIN = 20;
-    private static int BUTTON_TOP_MARGIN = 5;
-    private static int BUTTON_BOTTOM_MARGIN = 5;
-    private static int BUTTON_TEXT_SIZE = 30;
-
-    // init SensorView
-    private void initSensorView() {
-        LinearLayout rowLayout = new LinearLayout(mActivity);
-
-        mSensorLayout_Current = mSensorLayout_1;
-
-        if ((WpadScale.getWidthPixels() == 800) && (WpadScale.getHeightPixels() == 480)) {
-            BUTTON_LAYOUT_WIDTH =  153;
-            BUTTON_LAYOUT_HEIGHT = 61;
-            BUTTON_TEXT_SIZE = 25;
-        }
-        else if ((WpadScale.getWidthPixels() == 1280) && (WpadScale.getHeightPixels() == 800)) {
-            BUTTON_LAYOUT_WIDTH =  230;
-            BUTTON_LAYOUT_HEIGHT = 80;
-            BUTTON_TEXT_SIZE = 30;
-        }
-        else if ((WpadScale.getWidthPixels() == 1024) && (WpadScale.getHeightPixels() == 600)) {
-            if (ModelType == Version.MODEL_TYPE.IHN_1030_D) {
-                BUTTON_TEXT_SIZE = 25;
-            }
-        }
-
-        for (int i=0; i<mSensorList.size(); i++) {
-            Button button = new Button(mActivity);
-            button.setText(mSensorList.get(i));
-            button.setTextSize(BUTTON_TEXT_SIZE);
-            button.setTextColor(getResources().getColor(R.color.white));
-            button.setBackgroundResource(R.drawable.btn_sensor_color);
-            button.setEnabled(false);
-
-            LinearLayout.LayoutParams buttonParams = new LinearLayout.LayoutParams(
-                    BUTTON_LAYOUT_WIDTH //LayoutParams.WRAP_CONTENT
-                    , BUTTON_LAYOUT_HEIGHT // LayoutParams.WRAP_CONTENT
-            );
-
-            buttonParams.leftMargin = BUTTON_LEFT_MARGIN;
-            buttonParams.topMargin = BUTTON_TOP_MARGIN;
-            buttonParams.bottomMargin = BUTTON_BOTTOM_MARGIN;
-            button.setLayoutParams(buttonParams);
-
-            /*if(i == SmartDcamIndex)
-            {
-                button.setOnClickListener(StrangerButtonClick);
-            }*/
-
-            //button.setOnClickListener(new ButtonOnClickListener(i));
-
-            mSensorLayout_Current.addView(button);
-
-            if (i == CONTROLLER_COLUMN - 1) {
-                mSensorLayout_Current = mSensorLayout_2;
-            }
-            else if (i == (CONTROLLER_COLUMN - 1 + CONTROLLER_COLUMN*1)) {
-                mSensorLayout_Current = mSensorLayout_3;
-            }
-            else if (i == (CONTROLLER_COLUMN - 1 + CONTROLLER_COLUMN*2)) {
-                mSensorLayout_Current = mSensorLayout_4;
-            }
-            else if (i == (CONTROLLER_COLUMN - 1 + CONTROLLER_COLUMN*3)) {
-                mSensorLayout_Current = mSensorLayout_5;
-            }
-
-            mButtonList.add(button);
-        }
-        // btnTest.setOnClickListener(mButtonClick);
-
-        if (Version.getGatewayUsage()) {
-            if (mWallPadAPI.getGatewayType() == Version.GATEWAY_MODEL.IGW_300) {
-                if (mIGW300Data.senIn.Magnetic == true) {
-                    mButtonList.get(SENSOR_TYPE_MAGNETIC_0 - SENSOR_TYPE_BASE).setEnabled(true);
-                }
-
-                if (mIGW300Data.senIn.Out_Motion == true) {
-                    mButtonList.get(SENSOR_TYPE_OUTER_MOTION - SENSOR_TYPE_BASE).setEnabled(true);
-                }
-
-                if (mIGW300Data.senIn.In_Motion == true) {
-                    mButtonList.get(SENSOR_TYPE_INNER_MOTION - SENSOR_TYPE_BASE).setEnabled(true);
-                }
-
-                if (mIGW300Data.senIn.EVAC_UP == true) {
-                    mButtonList.get(SENSOR_TYPE_ESCAPE_LADDER_D101 - SENSOR_TYPE_BASE).setEnabled(true);
-                }
-
-                if (mIGW300Data.senIn.EVAC_Home == true) {
-                    mButtonList.get(SENSOR_TYPE_ETC_D101 - SENSOR_TYPE_BASE).setEnabled(true);
-                }
-
-                if (mIGW300Data.senIn.APU == true) {
-                    mButtonList.get(SENSOR_TYPE_APU_D101 - SENSOR_TYPE_BASE).setEnabled(true);
-                }
-            }
-            else {
-                Log.w(TAG, "[initSensorView] not supported gateway -> " + mWallPadAPI.getGatewayType());
-            }
-        }
-        else {
-            initSensorState();
-        }
-    }
-
-
-    private class SensorState {
-        private int mSensorType = -1;
-        private int mSensorState = WallPadInterface.SENSOR_STATE_DISABLE;
-
-        // constructor
-        public SensorState() {
-        }
-
-        // constructor
-        public SensorState(int type, int state) {
-            mSensorType = type;
-            mSensorState = state;
-        }
-
-
-        // set Type
-        public void setType (int type) {
-            mSensorType = type;
-        }
-
-        // set Type
-        public void setState(int state) {
-            mSensorState = state;
-        }
-
-
-        // get Type
-        public int getType () {
-            return mSensorType;
-        }
-
-        // get Type
-        public int getState() {
-            return mSensorState;
-        }
-    }
-
-
-
-    boolean bSensorDetecting = false;
-    boolean bUseInnerMotionDetecting = false;
-    boolean bUseOuterMotionDetecting = false;
-    boolean bUseOuterMotionDetectorToInnerMotion = false;
-    boolean bUseEscapeLadder = false;
-    // get SensorState
-    private SensorState getSensorState(int type) {
-        SensorState sensorState = new SensorState();
-
-        int sensorCommand = -1;
-
-        WallpadSalesSampleData wallpadSalesSampleData = new WallpadSalesSampleData(mActivity);
-        int getData = wallpadSalesSampleData.getSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_SENSOR_DETECTING);
-        if (getData == WallpadSalesSampleData.SALES_SAMPLE_MODE_DO_USED)
-            bSensorDetecting = true;
-
-        wallpadSalesSampleData.closeDB();
-
-
-        List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_MOTION_SETTING);
-        if ((InfoList != null) && (InfoList.size() > 5)) {
-            if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
-                for (int i=4; i<InfoList.size(); i+=2) {
-                    if (Const.MOTION_SETTING_TYPE_USE_INNER_MOTION_DETECTOR.equals(InfoList.get(i)) && (InfoList.size() > (i + 1))) {
-
-                        if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(i + 1)))
-                            bUseInnerMotionDetecting = true;
-                    }
-                    else if (Const.MOTION_SETTING_TYPE_USE_OUTER_MOTION_DETECTOR.equals(InfoList.get(i)) && (InfoList.size() > (i + 1))) {
-
-                        if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(i + 1)))
-                            bUseOuterMotionDetecting = true;
-                    }
-                    else if (Const.MOTION_SETTING_TYPE_USE_OUTER_MOTION_DETECTOR_TO_INNER_MOTION.equals(InfoList.get(i)) && (InfoList.size() > (i + 1))) {
-
-                        if (bUseOuterMotionDetecting == true) {
-                            if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(i + 1)))
-                                bUseOuterMotionDetectorToInnerMotion = true;
-                        }
-                    }
-                }
-            }
-        }
-
-        bUseEscapeLadder = mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ESCAPE_LADDER);
-
-
-
-        if (Version.getModelType() == Version.MODEL_TYPE.IHN_D101 || Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I
-                || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K_I
-                || Version.getModelType() == Version.MODEL_TYPE.IHN_1010GL || Version.getModelType() == Version.MODEL_TYPE.IHN_1010GL_I)
-        {
-            if (bSensorDetecting) {
-                switch (type) {
-                    case SENSOR_TYPE_MAGNETIC_0:
-                        sensorCommand = WallPadInterface.IOCTL_SENSOR_MAG0_STATE;
-                        sensorState.setType(type);
-                        break;
-
-                    case SENSOR_TYPE_OUTER_MOTION:
-                        if (bUseOuterMotionDetecting) {
-                            sensorCommand = WallPadInterface.IOCTL_SENSOR_MOTOUT_STATE;
-                            if (bUseOuterMotionDetectorToInnerMotion) {
-                                sensorState.setType(SENSOR_TYPE_INNER_MOTION);
-                            }
-                            else {
-                                sensorState.setType(SENSOR_TYPE_OUTER_MOTION);
-                            }
-                        }
-                        break;
-
-                    case SENSOR_TYPE_INNER_MOTION:
-                        if (bUseInnerMotionDetecting) {
-                            sensorCommand = WallPadInterface.IOCTL_SENSOR_MOTIN_STATE;
-                            sensorState.setType(type);
-                        }
-                        break;
-
-                    case SENSOR_TYPE_ESCAPE_LADDER_D101:
-                        if (bUseEscapeLadder) {
-                            sensorCommand = WallPadInterface.IOCTL_SENSOR_EXIT_STATE;
-                            sensorState.setType(type);
-                        }
-                        break;
-
-                    case SENSOR_TYPE_APU_D101:
-                        if (iGW300API != null) {
-                            if (iGW300API.data.senIn.APU == false) sensorState.setType(type);
-                        }
-                        break;
-
-                    case SENSOR_TYPE_ETC_D101:
-                        sensorState.setType(type);
-                        break;
-
-                    default:
-                        break;
-                }
-            }
-        }
-        else {
-            if (bSensorDetecting) {
-                switch (type) {
-                    case SENSOR_TYPE_MAGNETIC_0:
-                        sensorCommand = WallPadInterface.IOCTL_SENSOR_MAG0_STATE;
-                        sensorState.setType(type);
-                        break;
-
-                    case SENSOR_TYPE_OUTER_MOTION:
-                        if (bUseOuterMotionDetecting) {
-                            sensorCommand = WallPadInterface.IOCTL_SENSOR_MOTOUT_STATE;
-                            if (bUseOuterMotionDetectorToInnerMotion) {
-                                sensorState.setType(SENSOR_TYPE_INNER_MOTION);
-                            }
-                            else {
-                                sensorState.setType(SENSOR_TYPE_OUTER_MOTION);
-                            }
-                        }
-                        break;
-
-                    case SENSOR_TYPE_INNER_MOTION:
-                        if (bUseInnerMotionDetecting) {
-                            sensorCommand = WallPadInterface.IOCTL_SENSOR_MOTIN_STATE;
-                            sensorState.setType(type);
-                        }
-                        break;
-
-                    case SENSOR_TYPE_EMR:
-                        sensorCommand = WallPadInterface.IOCTL_SENSOR_EMR_STATE;
-                        sensorState.setType(type);
-                        break;
-
-                    case SENSOR_TYPE_ESCAPE_LADDER:
-                        if (bUseEscapeLadder) {
-                            sensorCommand = WallPadInterface.IOCTL_SENSOR_EXIT_STATE;
-                            sensorState.setType(type);
-                        }
-                        break;
-
-                    case SENSOR_TYPE_APU:
-                        if (Version.getModelType() == Version.MODEL_TYPE.IHN_1020GL) {
-                            if (iGW200dAPI != null) {
-                                if (iGW200dAPI.data.senIn.APU == false)
-                                    sensorState.setType(type);
-                            }
-                        }
-                        break;
-                    case SENSOR_TYPE_ETC:
-                        sensorState.setType(type);
-                    default:
-                        break;
-                }
-            }
-
-        }
-
-
-        if (sensorCommand != -1) {
-            WallPadInterface wallPadInterface = MainActivity.getWallPadInterface();
-            sensorState.setState(wallPadInterface.getSensorState(sensorCommand));
-        }
-
-        if (DEBUG)  Log.e(TAG, "getSensorState(" + sensorCommand + ")"
-                + ", type : " + type
-                + ", sensorState.getState() : " + sensorState.getState()
-                + ", sensorState.getType() : " + sensorState.getType()
-        );
-
-
-        if (sensorState.getState() == WallPadInterface.SENSOR_STATE_ENABLE)
-            reloadSensorState(type);
-
-        return sensorState;
-    }
-
-
-
-
-
-    // init SensorState
-    private void initSensorState() {
-        SensorState sensorState = getSensorState(SENSOR_TYPE_MAGNETIC_0);
-        if ((sensorState.getState() == WallPadInterface.SENSOR_STATE_ENABLE) && (sensorState.getType() != -1))
-            mButtonList.get((sensorState.getType() - SENSOR_TYPE_BASE)).setEnabled(true);
-
-        sensorState = getSensorState(SENSOR_TYPE_OUTER_MOTION);
-        if ((sensorState.getState() == WallPadInterface.SENSOR_STATE_ENABLE) && (sensorState.getType() != -1))
-            mButtonList.get((sensorState.getType() - SENSOR_TYPE_BASE)).setEnabled(true);
-
-        sensorState = getSensorState(SENSOR_TYPE_INNER_MOTION);
-        if ((sensorState.getState() == WallPadInterface.SENSOR_STATE_ENABLE) && (sensorState.getType() != -1))
-            mButtonList.get((sensorState.getType() - SENSOR_TYPE_BASE)).setEnabled(true);
-
-        if( Version.getModelType() != Version.MODEL_TYPE.IHN_750)
-        {
-            sensorState = getSensorState(SENSOR_TYPE_EMR);
-            if ((sensorState.getState() == WallPadInterface.SENSOR_STATE_ENABLE) && (sensorState.getType() != -1))
-                mButtonList.get((sensorState.getType() - SENSOR_TYPE_BASE)).setEnabled(true);
-
-            sensorState = getSensorState(SENSOR_TYPE_ESCAPE_LADDER);
-            if ((sensorState.getState() == WallPadInterface.SENSOR_STATE_ENABLE) && (sensorState.getType() != -1))
-                mButtonList.get((sensorState.getType() - SENSOR_TYPE_BASE)).setEnabled(true);
-        }
-
-    }
-
-
-    private class ButtonOnClickListener implements View.OnClickListener {
-        int mSelectedIdx = 0;
-
-        public ButtonOnClickListener(int idx) {
-            mSelectedIdx = idx;
-        }
-
-        @Override
-        public void onClick(View v) {
-            if (DEBUG)  Log.d(TAG, "onClick() : " + mSensorList.get(mSelectedIdx));
-
-            // String controllerName = mSensorList.get(mSelectedIdx);
-            //if (DEBUG)    Toast.makeText(mActivity, controllerName + " test", Toast.LENGTH_SHORT).show();
-
-            //receivedSensorEvent(SENSOR_TYPE_BASE + mSelectedIdx);
-
-            switch(v.getId())
-            {
-                case R.id.btn_hdclivlight_make_p1:
-                {
-                    if (DEBUG) Log.d(TAG, "onClick() btn_hdclivlight_make_p1");
-
-                }
-                break;
-
-                default:
-                    break;
-            }
-        }
-    }
-
-
-
-    private int SENSOR_RESET_INTERVAL = 1000;
-    private final Handler mHandler = new Handler()
-    {
-        public void handleMessage(Message msg)
-        {
-            super.handleMessage(msg);
-            int type = msg.what;
-
-            if (DEBUG)  Log.d(TAG, "handleMessage() : type " + type);
-
-            if (Version.getGatewayUsage()) {
-                switch (type) {
-                    case SENSOR_TYPE_MAGNETIC_0:
-                    case SENSOR_TYPE_OUTER_MOTION:
-                    case SENSOR_TYPE_INNER_MOTION:
-                    case SENSOR_TYPE_ESCAPE_LADDER_D101:
-                    case SENSOR_TYPE_APU_D101:
-                    case SENSOR_TYPE_ETC_D101:
-                        SensorState sensorState = getSensorState(type);
-                        if ((sensorState.getState() != WallPadInterface.SENSOR_STATE_ENABLE) && (sensorState.getType() != -1)) {
-                            //Log.i(TAG,"[Handler] - setEnabled(false)");
-                            //mButtonList.get((sensorState.getType() - SENSOR_TYPE_BASE)).setEnabled(false);
-                        }
-                        break;
-
-                    default:
-                        break;
-                }
-            }
-            else {
-                switch (type) {
-                    case SENSOR_TYPE_MAGNETIC_0:
-                    case SENSOR_TYPE_OUTER_MOTION:
-                    case SENSOR_TYPE_INNER_MOTION:
-                    case SENSOR_TYPE_EMR:
-                    case SENSOR_TYPE_ESCAPE_LADDER:
-                    case SENSOR_TYPE_APU:
-                    case SENSOR_TYPE_ETC:
-                        SensorState sensorState = getSensorState(type);
-                        if ((sensorState.getState() != WallPadInterface.SENSOR_STATE_ENABLE) && (sensorState.getType() != -1)) {
-                            Log.w(TAG, "Sensor State black ~~~~~~~");
-                            mButtonList.get((sensorState.getType() - SENSOR_TYPE_BASE)).setEnabled(false);
-                        }
-                        break;
-
-                    default:
-                        break;
-                }
-            }
-        }
-    };
-
-
-    // 수신된 SensorEvent를 UI에 update
-    private void receivedSensorEvent(int type) {
-        StringBuilder result = new StringBuilder();
-        String title = String.valueOf(mNumber++) + ". " ;
-        int detectingType = type;
-        if (!Version.getGatewayUsage()) {
-            if (detectingType == SENSOR_TYPE_OUTER_MOTION) {
-                if (bUseOuterMotionDetecting) {
-                    if (bUseOuterMotionDetectorToInnerMotion) detectingType = SENSOR_TYPE_INNER_MOTION;
-                    else detectingType = SENSOR_TYPE_OUTER_MOTION;
-                }
-            }
-        }
-
-        if (DEBUG)  Log.d(TAG, "receivedSensorEvent() type : " + type);
-        if (DEBUG)  Log.d(TAG, "mButtonList.size() : " + mButtonList.size());
-
-
-        mWpadSound.Play(SND.effect.TOUCH_LATCHED);
-
-        String currentTime = TimeUtil.getTimeString(mActivity, System.currentTimeMillis());
-        title += " " + currentTime + " ";
-
-        int idx = detectingType - SENSOR_TYPE_BASE;
-        if (DEBUG)  Log.d(TAG, "idx : " + idx);
-        if (Version.getModelType() == Version.MODEL_TYPE.IHN_D101 || Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I
-                || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K_I
-                || Version.getModelType() == Version.MODEL_TYPE.IHN_1010GL || Version.getModelType() == Version.MODEL_TYPE.IHN_1010GL_I)
-        {
-            switch (detectingType) {
-                case SENSOR_TYPE_MAGNETIC_0:
-                    mButtonList.get(idx).setEnabled(true);
-
-                    title += mSensorList.get(idx) + " " + mActivity.getString(R.string.event_received);
-                    result.append(title + testSensorMagnetic());
-                    break;
-
-                case SENSOR_TYPE_OUTER_MOTION:
-                    mButtonList.get(idx).setEnabled(true);
-
-                    title += mSensorList.get(idx) + " " + mActivity.getString(R.string.event_received);
-                    result.append(title + testSensorOuterBody());
-                    break;
-
-                case SENSOR_TYPE_INNER_MOTION:
-                    mButtonList.get(idx).setEnabled(true);
-
-                    title += mSensorList.get(idx) + " " + mActivity.getString(R.string.event_received);
-                    result.append(title + testSensorInnerBody());
-                    break;
-
-                case SENSOR_TYPE_ESCAPE_LADDER_D101:
-                    mButtonList.get(idx).setEnabled(true);
-
-                    title += mSensorList.get(idx) + " " + mActivity.getString(R.string.event_received);
-                    result.append(title + testSensorEscapeLadder());
-                    break;
-
-                case SENSOR_TYPE_APU_D101:
-                    if (iGW300API.data.senIn.APU == true) {
-                        mButtonList.get(idx).setEnabled(true);
-
-                        title += mSensorList.get(idx) + " " + mActivity.getString(R.string.event_received);
-                        result.append(title + testSensorAPU());
-                    }
-                    else {
-                        mButtonList.get(idx).setEnabled(false);
-                    }
-                    break;
-
-                case SENSOR_TYPE_ETC_D101:
-                    mButtonList.get(idx).setEnabled(true);
-
-                    title += mSensorList.get(idx) + " " + mActivity.getString(R.string.event_received);
-                    result.append(title + testSensorEtc());
-                    break;
-
-                /*case SENSOR_TYPE_ETC:
-                    mButtonList.get(idx).setEnabled(true);
-
-                    title += mSensorList.get(idx) + " " + mActivity.getString(R.string.event_received);
-                    result.append(title + testSensorEtc());
-                    break;*/
-
-                default:
-                    break;
-            }
-        }
-        else {
-            switch (detectingType) {
-                case SENSOR_TYPE_MAGNETIC_0:
-                    mButtonList.get(idx).setEnabled(true);
-
-                    title += mSensorList.get(idx) + " " + mActivity.getString(R.string.event_received);
-                    result.append(title + testSensorMagnetic());
-                    break;
-
-                case SENSOR_TYPE_OUTER_MOTION:
-                    mButtonList.get(idx).setEnabled(true);
-
-                    title += mSensorList.get(idx) + " " + mActivity.getString(R.string.event_received);
-                    result.append(title + testSensorOuterBody());
-                    break;
-
-                case SENSOR_TYPE_INNER_MOTION:
-                    mButtonList.get(idx).setEnabled(true);
-
-                    title += mSensorList.get(idx) + " " + mActivity.getString(R.string.event_received);
-                    result.append(title + testSensorInnerBody());
-                    break;
-
-                case SENSOR_TYPE_EMR:
-                    mButtonList.get(idx).setEnabled(true);
-
-                    title += mSensorList.get(idx) + " " + mActivity.getString(R.string.event_received);
-                    result.append(title + testSensorEmergency());
-                    break;
-
-                case SENSOR_TYPE_ESCAPE_LADDER:
-                    mButtonList.get(idx).setEnabled(true);
-
-                    title += mSensorList.get(idx) + " " + mActivity.getString(R.string.event_received);
-                    result.append(title + testSensorEscapeLadder());
-                    break;
-
-                case SENSOR_TYPE_APU:
-                    if (iGW200dAPI.data.senIn.APU == true) {
-                        mButtonList.get(idx).setEnabled(true);
-
-                        title += mSensorList.get(idx) + " " + mActivity.getString(R.string.event_received);
-                        result.append(title + testSensorAPU());
-                    }
-                    else {
-                        mButtonList.get(idx).setEnabled(false);
-                    }
-                    break;
-
-                case SENSOR_TYPE_ETC:
-                    mButtonList.get(idx).setEnabled(true);
-
-                    title += mSensorList.get(idx) + " " + mActivity.getString(R.string.event_received);
-                    result.append(title + testSensorEtc());
-                    break;
-
-                default:
-                    break;
-            }
-
-        }
-
-        mTV_Result.append(result + "\n");
-
-        reloadSensorState(type);
-    }
-
-
-
-    // reload SensorState
-    private void reloadSensorState(int type) {
-        if (bRuuning) {
-            Message msg = mHandler.obtainMessage(type, null);
-            msg.what = type;
-            mHandler.sendMessageDelayed(msg, SENSOR_RESET_INTERVAL);
-        }
-    }
-
-
-    private View.OnClickListener StrangerButtonClick = new View.OnClickListener() {
-        @Override
-        public void onClick(View v) {
-            /*switch(v.getId())
-            {
-                case R.id.btn_hdclivlight_make_p1:
-                {
-                    if (DEBUG)  Log.d(TAG, "onClick() btn_hdclivlight_make_p1" );
-
-                }
-                break;
-
-                default:
-                    break;
-            }*/
-
-            if(smartKeyRfDoorAPI != null)
-            {
-                String ret = smartKeyRfDoorAPI.SetSensorConfig((byte) 0x05, (byte)0x05);
-                Log.i(TAG, "[StrangerButtonClick] - Test Setting result = " + ret);
-            }
-
-        }
-    };
-
-
-
-
-
-
-
-
-    private String testSensorMagnetic() {
-        StringBuilder result = new StringBuilder();
-
-        // TO DO
-
-        return result.toString();
-    }
-
-
-    private String testSensorOuterBody() {
-        StringBuilder result = new StringBuilder();
-
-        // TO DO
-
-        return result.toString();
-    }
-
-
-    private String testSensorInnerBody() {
-        StringBuilder result = new StringBuilder();
-
-        // TO DO
-
-        return result.toString();
-    }
-
-
-    private String testSensorEmergency() {
-        StringBuilder result = new StringBuilder();
-
-        // TO DO
-
-        return result.toString();
-    }
-
-
-    private String testSensorEscapeLadder() {
-        StringBuilder result = new StringBuilder();
-
-        // TO DO
-
-        return result.toString();
-    }
-
-
-    private String testSensorAPU() {
-        StringBuilder result = new StringBuilder();
-
-        // TO DO
-
-        return result.toString();
-    }
-
-
-    private String testSensorEtc() {
-        StringBuilder result = new StringBuilder();
-
-        // TO DO
-
-        return result.toString();
-    }
-
-}
+package com.artncore.managersetting.ui.fragments;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+import kr.co.icontrols.v40ioctl.V40IF;
+import kr.co.icontrols.wallpadsupport.Version;
+import kr.co.icontrols.wallpadsupport.WpadScale;
+import kr.co.icontrols.wallpadsupport.WpadSound;
+import kr.co.icontrols.wallpadsupport.WpadSound.SND;
+import android.app.Activity;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+//import android.support.v4.app.Fragment;
+import androidx.fragment.app.Fragment;
+import android.util.Log;
+import android.view.KeyEvent;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.View.OnKeyListener;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+
+import com.artncore.WallPadDataMgr.WallpadDeviceSet;
+import com.artncore.WallPadDataMgr.WallpadSalesSampleData;
+import com.artncore.commons.define;
+import com.artncore.deviceinterface.WallPadInterface;
+import com.artncore.managersetting.dao.MainDatabaseManager;
+import com.artncore.managersetting.domain.Const;
+import com.artncore.managersetting.ui.activities.MainActivity;
+import com.artncore.managersetting.util.TimeUtil;
+import com.artncore.wallpadapi.IGW200dAPI;
+import com.artncore.wallpadapi.IGW300API;
+import com.artncore.wallpadapi.SmartKeyRfDoorAPI;
+import com.artncore.wallpadapi.WallPadAPI;
+import com.artncore.managersetting.R;
+
+/**
+ * A list fragment representing a list of Items. This fragment also supports
+ * tablet devices by allowing list items to be given an 'activated' state upon
+ * selection. This helps indicate which item is currently being viewed in a
+ * {link ItemDetailFragment}.
+ * <p>
+ * Activities containing this fragment MUST implement the {link Callbacks}
+ * interface.
+ */
+public class CheckSensorFragment extends Fragment {
+    private static final String TAG = "CheckSensorFragment";
+
+    private final boolean DEBUG = true;
+
+    public final int SENSOR_TYPE_BASE = Const.COMMON_TYPE_BASE;
+    public final int SENSOR_TYPE_MAGNETIC_0 =       SENSOR_TYPE_BASE + 0; // 101
+    public final int SENSOR_TYPE_OUTER_MOTION =     SENSOR_TYPE_BASE + 1; // 102
+    public final int SENSOR_TYPE_INNER_MOTION =     SENSOR_TYPE_BASE + 2; // 103
+    public final int SENSOR_TYPE_EMR =              SENSOR_TYPE_BASE + 3; // 104
+    public final int SENSOR_TYPE_ESCAPE_LADDER =    SENSOR_TYPE_BASE + 4; // 105
+    public final int SENSOR_TYPE_APU =              SENSOR_TYPE_BASE + 5; // 106
+    public final int SENSOR_TYPE_ETC =              SENSOR_TYPE_BASE + 6; // 107
+
+    public final int SENSOR_TYPE_ESCAPE_LADDER_D101 = SENSOR_TYPE_BASE + 3;
+    public final int SENSOR_TYPE_ETC_D101=            SENSOR_TYPE_BASE + 4;
+    public final int SENSOR_TYPE_APU_D101 =           SENSOR_TYPE_BASE + 5;
+    public final int SENSOR_TYPE_CLOSE =           SENSOR_TYPE_BASE + 7;
+
+    public final int SENSOR_TYPE_SMART_DCAM_DETECT = SENSOR_TYPE_BASE + 8;
+
+    private Activity mActivity;
+    private WpadSound mWpadSound;
+    private WallPadAPI mWallPadAPI;
+    private MainDatabaseManager mMainDatabaseManager;
+    // GLE 게이드 웨이 인터페이스 추가
+    private IGW200dAPI iGW200dAPI = null;
+    private IGW300API iGW300API = null;
+
+
+    private List<String[]> mSensorStateList = null;
+    private List<String> mSensorList = new ArrayList<String>();
+    private List<Button> mButtonList = new ArrayList<Button>();
+    private LinearLayout mSensorLayout_1, mSensorLayout_2, mSensorLayout_3, mSensorLayout_4, mSensorLayout_5;
+    private LinearLayout mSensorLayout_Current;
+    private TextView mTV_Result;
+    private int mNumber = 1;
+    private Button CloseBtn;
+
+    private int mSelectedIdx = -1;
+    private boolean bRuuning = true;
+
+	private IGW300API.Data mIGW300Data;
+    private IGW200dAPI.Data mIGW200dData;
+
+    //[Model]
+    private int ModelType = Version.getModelType();
+    //private int ModelType = Version.MODEL_TYPE.IHN_1030_D;
+
+    private boolean isSmartDcamUse = false;
+    private int SmartDcamIndex = -1;
+    SmartDcamDetectReceiver smartDcamDetectReceiver;
+    private SmartKeyRfDoorAPI smartKeyRfDoorAPI = null;
+
+    // constructor
+    public CheckSensorFragment() {
+    }
+
+    @Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+
+        mActivity = activity;
+    }
+
+    public IGW200dAPI.Data getIGW200UpdateData()
+    {
+        if(iGW200dAPI == null)
+        {
+            Log.e(TAG, "[Device_Update] - iGW200dAPI unload !!!");
+            return null;
+        }
+        // 2. Reflash
+        try
+        {
+            int ret = iGW200dAPI.Refresh(false);
+            if(ret < 0)
+            {
+                Log.e(TAG, "[Device_Update] getState - ret (" + ret + ")   ErrorCode = " + iGW200dAPI.ErrorCode.ErrStr());
+                return null;
+            }
+        }
+        catch(Exception e)
+        {
+            Log.e(TAG, "[Device_Update] - " + e.toString());
+            e.printStackTrace();
+            return null;
+        }
+        return iGW200dAPI.data;
+    }
+
+	public IGW300API.Data getIGW300UpdateData()
+	{
+		if(iGW300API == null)
+		{
+			Log.e(TAG, "[Device_Update] - iGW300API unload !!!");
+			return null;
+		}
+		// 2. Reflash
+		try
+		{
+			int ret = iGW300API.Refresh(false);
+			if(ret < 0)
+			{
+				Log.e(TAG, "[Device_Update] getState - ret (" + ret + ")   ErrorCode = " + iGW300API.ErrorCode.ErrStr());
+				return null;
+			}
+		}
+		catch(Exception e)
+		{
+			Log.e(TAG, "[Device_Update] - " + e.toString());
+			e.printStackTrace();
+			return null;
+		}
+		return iGW300API.data;
+	}
+
+    private boolean m_ApuState = false;
+
+    private void checkGWSensor() {
+        try {
+            if (mWallPadAPI.getGatewayType() == Version.GATEWAY_MODEL.IGW_200) {
+                if (iGW200dAPI == null) {
+                    Log.w(TAG, "[checkGWSensor] iGW200dAPI is null!!");
+                    return;
+                }
+
+                if (iGW200dAPI.data == null) {
+                    Log.w(TAG, "[checkGWSensor] iGW200dAPI.data is null!!");
+                    return;
+                }
+
+                // 동체
+                if (iGW200dAPI.data.senIn.Motion) receivedSensorEvent(SENSOR_TYPE_OUTER_MOTION);
+
+                // 마그네틱
+                if (iGW200dAPI.data.senIn.Magnetic) receivedSensorEvent(SENSOR_TYPE_MAGNETIC_0);
+
+                // 비상 욕실폰 사용안하는걸로~~접점은~~~
+                if (iGW200dAPI.data.senIn.BathEMER) {
+                    receivedSensorEvent(SENSOR_TYPE_EMR);
+                    // 욕실폰에 비상 ACK를 준다.
+                    Device_BathEmerAckRelase();
+                }
+
+                // APU 감지가 되면 월패드 비상등을 켜도록 한다.
+                if (iGW200dAPI.data.senIn.APU) {
+                    if (m_ApuState != iGW200dAPI.data.senIn.APU) receivedSensorEvent(SENSOR_TYPE_APU);
+                }
+                else {
+                    if (m_ApuState != iGW200dAPI.data.senIn.APU) receivedSensorEvent(SENSOR_TYPE_APU);
+                }
+                m_ApuState = iGW200dAPI.data.senIn.APU;
+
+                // 피난사다리 우리집
+                if (iGW200dAPI.data.senIn.EVAC_Home) receivedSensorEvent(SENSOR_TYPE_ETC);
+
+                // 피난사다리 윗집 - 우리집과 윗집 피난사다리 구분하여 처리하도록한다.
+                if (iGW200dAPI.data.senIn.EVAC_UP == true)receivedSensorEvent(SENSOR_TYPE_ESCAPE_LADDER);
+
+            }
+            else if (mWallPadAPI.getGatewayType() == Version.GATEWAY_MODEL.IGW_300) {
+                Log.i(TAG, "[CheckSensor] - igw300 ENTER");
+
+                if (iGW300API == null) {
+                    Log.w(TAG, "[checkGWSensor] iGW300API is null!!");
+                    return;
+                }
+
+                if (iGW300API.data == null) {
+                    Log.w(TAG, "[checkGWSensor] iGW300API.data is null!!");
+                    return;
+                }
+
+                // 내부 동체 (동체감지기 2) 2
+                if (iGW300API.data.senIn.In_Motion) {
+                    receivedSensorEvent(SENSOR_TYPE_INNER_MOTION);
+                }
+                else {
+                    mButtonList.get(SENSOR_TYPE_INNER_MOTION - SENSOR_TYPE_BASE).setEnabled(false);
+                }
+
+                // 외부 동체 (동체감지기 1) 1
+                if (iGW300API.data.senIn.Out_Motion) {
+                    receivedSensorEvent(SENSOR_TYPE_OUTER_MOTION);
+                }
+                else {
+                    mButtonList.get(SENSOR_TYPE_OUTER_MOTION - SENSOR_TYPE_BASE).setEnabled(false);
+                }
+
+                // 마그네틱 0
+                if (iGW300API.data.senIn.Magnetic == true) {
+                    receivedSensorEvent(SENSOR_TYPE_MAGNETIC_0);
+                }
+                else {
+                    mButtonList.get(SENSOR_TYPE_MAGNETIC_0 - SENSOR_TYPE_BASE).setEnabled(false);
+                }
+
+                // 비상 욕실폰 사용안하는걸로~~접점은~~~
+            /*if (iGW300API.data.senIn.BathEMER == true)
+            {
+                receivedSensorEvent(SENSOR_TYPE_EMR);
+                // 욕실폰에 비상 ACK를 준다.
+                Device_BathEmerAckRelase();
+            } else
+            {
+
+            }*/
+
+                // APU 감지가 되면 월패드 비상등을 켜도록 한다. 5
+                if (iGW300API.data.senIn.APU) {
+                    if (m_ApuState != iGW300API.data.senIn.APU) receivedSensorEvent(SENSOR_TYPE_APU_D101);
+                }
+                else {
+                    mButtonList.get(SENSOR_TYPE_APU_D101 - SENSOR_TYPE_BASE).setEnabled(false);
+                    //if (m_ApuState != iGW300API.data.senIn.APU)
+                    //    receivedSensorEvent(SENSOR_TYPE_APU_D101);
+                }
+                m_ApuState = iGW300API.data.senIn.APU;
+
+                // 피난사다리 우리집
+                if (iGW300API.data.senIn.EVAC_Home) {
+                    // 피난사다리 입하 4
+                    receivedSensorEvent(SENSOR_TYPE_ETC_D101);
+                }
+                else {
+                    mButtonList.get(SENSOR_TYPE_ETC_D101 - SENSOR_TYPE_BASE).setEnabled(false);
+                }
+
+                // 피난사다리 윗집 - 우리집과 윗집 피난사다리 구분하여 처리하도록한다.
+                if (iGW300API.data.senIn.EVAC_UP) {
+                    // 피난사다리 입상 3
+                    receivedSensorEvent(SENSOR_TYPE_ESCAPE_LADDER_D101);
+                }
+                else {
+                    mButtonList.get(SENSOR_TYPE_ESCAPE_LADDER_D101 - SENSOR_TYPE_BASE).setEnabled(false);
+                }
+            }
+            else {
+                Log.w(TAG, "[checkGWSensor] Not supported gateway model -> " + mWallPadAPI.getGatewayType());
+            }
+        } catch (Exception e) {
+            Log.e(TAG, "[Exception] checkGWSensor()");
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * Device_BathEmerAckRelase
+     *
+     * @return (int) - >=0 : 성공, <0 : 실패
+     */
+    private int Device_BathEmerAckRelase() {
+        if (iGW200dAPI == null) {
+            Log.e(TAG, "[Device_BathEmerAckRelase] - iGW200dAPI unload !!!");
+            return -1;
+        }
+
+        try {
+            int ret = iGW200dAPI.BathEmerAckRelase();
+            if (ret < 0) {
+                Log.e(TAG, "[Device_BathEmerAckRelase] - iGW200dAPI.BathEmerAckRelase()  ret = " + ret + " / ErrorCode = " + iGW200dAPI.ErrorCode.ErrStr());
+                return -2;
+            }
+        } catch(Exception e) {
+            Log.e(TAG, "[Exception] Device_BathEmerAckRelase()");
+            e.printStackTrace();
+            return -102;
+        }
+        return 0;
+    }
+
+    BroadcastReceiver IGW200InterfaceBR = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            String strActionName = intent.getAction();
+            Log.i(TAG, "[IGW200InterfaceBR.onReceive] strActionName [" + strActionName + "]");
+            if (strActionName.equals(IGW200dAPI.SENSOR_BR_NAME)) {
+                getIGW200UpdateData();
+                checkGWSensor();
+            }
+        }
+    };
+
+    BroadcastReceiver IGW300InterfaceBR = new BroadcastReceiver()
+    {
+        @Override
+        public void onReceive(Context context, Intent intent)
+        {
+            String strActionName = intent.getAction();
+            Log.i(TAG, "[IGW300InterfaceBR.onReceive] strActionName [" + strActionName + "]");
+            if (strActionName.equals(IGW300API.SENSOR_BR_NAME)) {
+                getIGW300UpdateData();
+                checkGWSensor();
+            }
+        }
+    };
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        if (DEBUG)  Log.d(TAG, "onCreate() ");
+
+        super.onCreate(savedInstanceState);
+
+        mWallPadAPI = MainActivity.getWallPadAPI();
+        mWpadSound = MainActivity.getWpadSound();
+        mMainDatabaseManager = MainActivity.getMainDatabaseManager();
+        // GLE 모델은 센서값이 게이트웨이에서 받으므로 처리를 달리한다.
+        if (mWallPadAPI.getGatewayType() == Version.GATEWAY_MODEL.IGW_200) {
+            iGW200dAPI = mWallPadAPI.Get_IGW200dController();
+            if (iGW200dAPI == null) {
+                Log.w(TAG , "[onCreate] iGW200dAPI is null!!");
+            }
+            mIGW200dData = getIGW200UpdateData();
+            IntentFilter filter = new IntentFilter();
+            filter.addAction(IGW200dAPI.SENSOR_BR_NAME);
+            mActivity.registerReceiver(IGW200InterfaceBR, filter);
+
+            Log.i(TAG, "[onCreate] Magnetic [" + mIGW200dData.senIn.Magnetic + "], Motion [" + mIGW200dData.senIn.Motion + "], EVAC_Home [" + mIGW200dData.senIn.EVAC_Home + "], EVAC_UP [" + mIGW200dData.senIn.EVAC_UP + "], APU [" + mIGW200dData.senIn.APU + "], BathEMER [" + mIGW200dData.senIn.BathEMER + "]");
+        }
+        else if (mWallPadAPI.getGatewayType() == Version.GATEWAY_MODEL.IGW_300) {
+            iGW300API = mWallPadAPI.Get_IGW300Controller();
+            if (iGW300API == null) {
+                Log.w(TAG , "[onCreate] iGW300API is null!!");
+            }
+            mIGW300Data = getIGW300UpdateData();
+            IntentFilter filter = new IntentFilter();
+            filter.addAction(iGW300API.SENSOR_BR_NAME);
+            mActivity.registerReceiver(IGW300InterfaceBR, filter);
+
+            Log.i(TAG, "[onCreate] Magnetic [" + mIGW300Data.senIn.Magnetic + "], In_Motion [" + mIGW300Data.senIn.In_Motion + "], Out_Motion [" + mIGW300Data.senIn.Out_Motion + "], EVAC_Home [" + mIGW300Data.senIn.EVAC_Home + "], EVAC_UP [" + mIGW300Data.senIn.EVAC_UP + "], APU [" + mIGW300Data.senIn.APU + "]");
+        }
+        else {
+            Log.w(TAG, "[onCreate] Not supported gateway model -> " + mWallPadAPI.getGatewayType());
+        }
+
+        mSensorList.add(mActivity.getString(R.string.check_sensor_magnetic_0));
+
+        if (mWallPadAPI.getGatewayType() == Version.GATEWAY_MODEL.IGW_200) {
+            mSensorList.add(mActivity.getString(R.string.check_sensor_emergency));
+            mSensorList.add(mActivity.getString(R.string.check_sensor_escape_ladder_up));
+            mSensorList.add(mActivity.getString(R.string.check_sensor_apu));
+            mSensorList.add(mActivity.getString(R.string.check_sensor_escape_ladder_home));
+        }
+        else if (mWallPadAPI.getGatewayType() == Version.GATEWAY_MODEL.IGW_300) {
+            mSensorList.add(mActivity.getString(R.string.check_sensor_motion_sensor1)); // 동체감지기1 (외부 동체)
+            mSensorList.add(mActivity.getString(R.string.check_sensor_motion_sensor2)); // 동체감지기2 (내부 동체)
+            if (Version.getModelType() == Version.MODEL_TYPE.IHN_1010GL || Version.getModelType() == Version.MODEL_TYPE.IHN_1010GL_I) {
+                mSensorList.add(mActivity.getString(R.string.check_sensor_escape_ladder_up));
+                mSensorList.add(mActivity.getString(R.string.check_sensor_escape_ladder_home));
+                mSensorList.add(mActivity.getString(R.string.check_sensor_apu));
+            }
+            else {
+                mSensorList.add(mActivity.getString(R.string.check_sensor_escape_ladder_up));
+                mSensorList.add(mActivity.getString(R.string.check_sensor_escape_ladder_home));
+                mSensorList.add(mActivity.getString(R.string.check_sensor_apu));
+                mSensorList.add(mActivity.getString(R.string.check_sensor_close_sensor));
+            }
+        }
+        else {
+            mSensorList.add(mActivity.getString(R.string.check_sensor_outer_motion));
+            mSensorList.add(mActivity.getString(R.string.check_sensor_inner_motion));
+
+            if (Version.getModelType() != Version.MODEL_TYPE.IHN_750) {
+                mSensorList.add(mActivity.getString(R.string.check_sensor_emergency));
+                mSensorList.add(mActivity.getString(R.string.check_sensor_escape_ladder_up));
+                mSensorList.add(mActivity.getString(R.string.check_sensor_apu));
+            }
+        }
+
+        try {
+            WallpadDeviceSet wallpadDeviceSet = new WallpadDeviceSet(getContext());
+            int[] DoorCamKind = wallpadDeviceSet.Get_RFDoorCAM_Info(); // 현관카메라 종류 파악
+            wallpadDeviceSet.closeDB();
+
+            if (DoorCamKind[1] == WallpadDeviceSet.DOORTYPE_IOT_SMART
+                    || DoorCamKind[1] == WallpadDeviceSet.DOORTYPE_HYOSUNG_SMART
+                    || DoorCamKind[1] == WallpadDeviceSet.DOORTYPE_DAEWOO_SMART)
+            {
+                mSensorList.add("거동수상자 감지");
+                isSmartDcamUse = true;
+                SmartDcamIndex = mSensorList.size() - 1;
+
+                smartDcamDetectReceiver = new SmartDcamDetectReceiver();
+                smartKeyRfDoorAPI = MainActivity.wpapi.Get_SmartKeyRfDoorController();
+                if (smartKeyRfDoorAPI == null) {
+					Log.w(TAG, "smartKeyRfDoorAPI NULL !!!");
+				}
+                else {
+                    String ret = smartKeyRfDoorAPI.SetSensorConfig((byte) 0x05, (byte)0x01);
+                    Log.i(TAG, "[StrangerCreate] - Test Setting result = " + ret);
+                }
+                registerBroadCastReceiver();
+            }
+        } catch (Exception e) {
+            Log.e(TAG, "Smart Dcam Detect Input ERROR !!!");
+            e.printStackTrace();
+        }
+        bRuuning = true;
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+                             Bundle savedInstanceState) {
+        View rootView = (View) inflater.inflate(R.layout.check_sensor_container,
+                container, false);
+
+        return (View)rootView;
+    }
+
+    @Override
+    public void onViewCreated(View view, Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+
+        if (savedInstanceState != null) {}
+
+        mSensorLayout_1 = (LinearLayout)view.findViewById(R.id.sensor_row_1);
+        mSensorLayout_2 = (LinearLayout)view.findViewById(R.id.sensor_row_2);
+        mSensorLayout_3 = (LinearLayout)view.findViewById(R.id.sensor_row_3);
+        mSensorLayout_4 = (LinearLayout)view.findViewById(R.id.sensor_row_4);
+        mSensorLayout_5 = (LinearLayout)view.findViewById(R.id.sensor_row_5);
+        mTV_Result = (TextView)view.findViewById(R.id.tv_result);
+
+        /*CloseBtn = new Button(mActivity);
+        CloseBtn.setText(mSensorList.get(i));
+        CloseBtn.setTextSize(BUTTON_TEXT_SIZE);
+        CloseBtn.setTextColor(getResources().getColor(R.color.white));
+        CloseBtn.setBackgroundResource(R.drawable.btn_sensor_color);
+        CloseBtn.setEnabled(false);
+
+        LinearLayout.LayoutParams buttonParams = new LinearLayout.LayoutParams(
+                BUTTON_LAYOUT_WIDTH //LayoutParams.WRAP_CONTENT
+                , BUTTON_LAYOUT_HEIGHT // LayoutParams.WRAP_CONTENT
+        );
+
+        buttonParams.leftMargin = BUTTON_LEFT_MARGIN;
+        buttonParams.topMargin = BUTTON_TOP_MARGIN;
+        buttonParams.bottomMargin = BUTTON_BOTTOM_MARGIN;
+        CloseBtn.setLayoutParams(buttonParams);*/
+
+
+//        mSensorStateList = mMainDatabaseManager.getSensorList();
+
+        initSensorView();
+
+        if ((Version.getModelType() == Version.MODEL_TYPE.IHN_D101) || (Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I)
+                || (Version.getModelType() == Version.MODEL_TYPE.IHN_D101K) || (Version.getModelType() == Version.MODEL_TYPE.IHN_D101K_I)) {
+            closeThread = new CloseThread();
+            closeThread.setRunning(true);
+            closeThread.start();
+        }
+
+        this.getView().setFocusableInTouchMode(true);
+        this.getView().requestFocus();
+        this.getView().setOnKeyListener( new OnKeyListener() {
+            @Override
+            public boolean onKey(View v, int keyCode, KeyEvent event ) {
+                if (DEBUG) Log.d(TAG, "[onKey] keyCode: "+keyCode+" event.getAction(): "+event.getAction());
+
+                MainActivity.setFinishTimerReset();
+
+                if (keyCode == 29) {
+                    // 디밍 상태에서 근접센서 감지시 받는 키값
+                    Log.i(TAG, "Sensor Detect : Dimming !!!");
+                    Log.i(TAG, "button name : " + mButtonList.get(6).getText());
+                    //mButtonList.get(6).setEnabled(true);
+                    mTV_Result.append("근접센서 감지 됨" + "\n");
+                }
+
+                if (bSensorDetecting) {
+                    // 게이트웨이 사용여부 확인
+                    if (Version.getGatewayUsage()) {
+                        switch (keyCode) {
+                            case Const.EVT_EMR:
+                                if (event.getAction() == KeyEvent.ACTION_DOWN) receivedSensorEvent(SENSOR_TYPE_EMR);
+                                return true;
+
+                            case Const.EVT_MAG0:
+                                if (event.getAction() == KeyEvent.ACTION_DOWN) receivedSensorEvent(SENSOR_TYPE_MAGNETIC_0);
+                                return true;
+
+                            case Const.EVT_EXIT:
+                                if (event.getAction() == KeyEvent.ACTION_DOWN) {
+                                    if (bUseEscapeLadder) receivedSensorEvent(SENSOR_TYPE_ESCAPE_LADDER);
+                                }
+                                return true;
+
+                            case Const.EVT_MOTIN:
+                                if (event.getAction() == KeyEvent.ACTION_DOWN) {
+                                    if (bUseInnerMotionDetecting) receivedSensorEvent(SENSOR_TYPE_INNER_MOTION);
+                                }
+                                return true;
+
+                            case Const.EVT_MOTOUT:
+                                if (event.getAction() == KeyEvent.ACTION_DOWN) {
+                                    if (bUseOuterMotionDetecting) receivedSensorEvent(SENSOR_TYPE_OUTER_MOTION);
+                                }
+                                return true;
+
+                            case Const.BTN_CALL:
+                            case Const.BTN_OPEN:
+                            case Const.BTN_EMR:
+                            default:
+                                break;
+                        }
+                    }
+                    else {
+                        switch (keyCode) {
+                            case Const.EVT_EMR_1010:
+                                if (event.getAction() == KeyEvent.ACTION_DOWN) receivedSensorEvent(SENSOR_TYPE_EMR);
+                                return true;
+
+                            case Const.EVT_MAG0_1010:
+                                if (event.getAction() == KeyEvent.ACTION_DOWN) receivedSensorEvent(SENSOR_TYPE_MAGNETIC_0);
+                                return true;
+
+                            case Const.EVT_EXIT_1010:
+                                if (event.getAction() == KeyEvent.ACTION_DOWN) {
+                                    if (bUseEscapeLadder) receivedSensorEvent(SENSOR_TYPE_ESCAPE_LADDER);
+                                }
+                                return true;
+
+                            case Const.EVT_MOTIN_1010:
+                                if (event.getAction() == KeyEvent.ACTION_DOWN) {
+                                    if (bUseInnerMotionDetecting) receivedSensorEvent(SENSOR_TYPE_INNER_MOTION);
+                                }
+                                return true;
+
+                            case Const.EVT_MOTOUT_1010:
+                                if (event.getAction() == KeyEvent.ACTION_DOWN) {
+                                    if (bUseOuterMotionDetecting) receivedSensorEvent(SENSOR_TYPE_OUTER_MOTION);
+                                }
+                                return true;
+
+                            case Const.BTN_CALL:
+                            case Const.BTN_OPEN:
+                            case Const.BTN_EMR:
+                            default:
+                                break;
+                        }
+                    }
+                }
+                return false;
+            }
+        });
+    }
+
+    static int prev = 0;
+    // 핸들러 객체 만들기
+    public class CloseHandler extends Handler {
+
+        @Override
+        public void handleMessage(Message msg) {
+
+        }
+    }
+
+    Handler clHandler = new Handler()
+    {
+        @Override
+        public void handleMessage(Message msg)
+        {
+            super.handleMessage(msg);
+
+            switch(msg.what)
+            {
+                case 1 :
+                    //Log.i(TAG, "[clHandler] - Close Detect!");
+                    short s = ((Integer)msg.obj).shortValue();
+                    mButtonList.get(6).setText("근접센서\r\n" + s);
+            }
+        }
+    };
+
+    CloseThread closeThread;
+    public class CloseThread extends Thread {
+
+        boolean running = false;
+        V40IF mV40IF = new V40IF();
+
+        void setRunning(boolean b) {
+            running = b;
+        }
+
+        @Override
+        public void run() {
+            while (running) {
+
+                if(this.isInterrupted())
+                {
+                    return;
+                }
+
+                try {
+                    sleep(500); // 0.5초 주기로 실행
+                } catch (InterruptedException e) {
+                    e.printStackTrace();
+                }
+                int val = mV40IF.sensorread();
+                if(val != prev)
+                {
+                    prev = val;
+                    Integer integer = new Integer(val);
+                    //String str = String.format("%x", val);
+                    clHandler.sendMessage(Message.obtain(clHandler, 1, integer));
+                }
+            }
+        }
+    }
+
+    @Override
+    public void onResume() {
+        if (DEBUG)  Log.d(TAG, "onResume() ");
+
+        super.onResume();
+
+        //registerBroadCastReceiver();
+    }
+
+    @Override
+    public void onPause() {
+        if (DEBUG)  Log.d(TAG, "onPause() ");
+
+        super.onPause();
+
+        unregisterBroadCastReceiver();
+
+        if(smartKeyRfDoorAPI != null)
+        {
+            Log.d(TAG, "[onPause] - smartKeyRfDoorAPI NULL !!!");
+            String ret = smartKeyRfDoorAPI.SetSensorConfig((byte) 0x05, (byte)30);
+            Log.d(TAG, "[StrangerCreate] - Recover Setting(5,30) result  = " + ret);
+        }
+    }
+
+
+    @Override
+    public void onDetach() {
+        super.onDetach();
+
+        if (mWallPadAPI.getGatewayType() == Version.GATEWAY_MODEL.IGW_200) {
+            mActivity.unregisterReceiver(IGW200InterfaceBR);
+        }
+        else if (mWallPadAPI.getGatewayType() == Version.GATEWAY_MODEL.IGW_300) {
+            mActivity.unregisterReceiver(IGW300InterfaceBR);
+            if (closeThread != null) {
+                if (closeThread.isAlive()) {
+                    closeThread.setRunning(false);
+                    closeThread.interrupt();
+                    closeThread = null;
+                }
+            }
+            else {
+                Log.w(TAG, "[onDetach] closeThread is null!!");
+            }
+        }
+        else {
+            Log.w(TAG, "[onDetach] not supported gateway type -> " + mWallPadAPI.getGatewayType());
+        }
+
+        mWallPadAPI = null;
+        bRuuning = false;
+    }
+
+    // unregister BR
+    private void unregisterBroadCastReceiver() {
+        try {
+			if (smartDcamDetectReceiver != null) {
+				mActivity.unregisterReceiver(smartDcamDetectReceiver);
+			}
+			else {
+                Log.w(TAG, "[unregisterBroadCastReceiver] smartDcamDetectReceiver is null!!");
+            }
+		} catch (Exception e) {
+			Log.e(TAG, "[Exception] unregisterBroadCastReceiver()");
+			e.printStackTrace();
+		}
+    }
+
+    // register BR
+    private void registerBroadCastReceiver() {
+        // Create a filter with the broadcast intents we are interested in.
+        IntentFilter filter = new IntentFilter();
+        filter.addAction(define.NOTIFY_ACNAME);
+        mActivity.registerReceiver(smartDcamDetectReceiver, filter, null, null);
+    }
+
+    public class SmartDcamDetectReceiver extends BroadcastReceiver
+    {
+        private final String TAG = "SdbLivingEventReceiver";
+
+        private final boolean DEBUG = true;
+
+        public static final String CONCENT_REGI_ACTION = "MANAGER_LIVCONCENT_REGI"; //"com.artncore.apps.ic_wallpad.CallEventInterface";
+        public static final String SMART_DCAM_DETECT = "MANAGER_LIVCONCENT_REGI"; //"com.artncore.apps.ic_wallpad.CallEventInterface";
+
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            // TODO Auto-generated method stub
+            if (DEBUG)  Log.d(TAG, "--onReceive");
+
+            String action = intent.getAction();
+
+            if (action.equals(define.NOTIFY_ACNAME))
+            {
+                int kind = intent.getIntExtra("KIND", 0);
+                Log.i(TAG, "Receive Notify BR "+ define.NOTIFY_ACNAME + " : " + kind);
+                switch (kind)
+                {
+                    case define.NOTIFY_SMART_DCAM_DETECT:
+                        Log.i(TAG, "[onReceive] - SMART DCAM DETECT !!!!!!!!!!!");
+                        mButtonList.get(SmartDcamIndex).setEnabled(true);
+                        mWpadSound.Play(SND.effect.TOUCH_LATCHED);
+                        mTV_Result.append("거동수상자 감지됨" + "\n");
+                        break;
+
+                    case define.NOTIFY_SMART_DCAM_RELEASE:
+                        Log.i(TAG, "[onReceive] - SMART DCAM RELEASE !!!!!!!!!!!");
+                        mButtonList.get(SmartDcamIndex).setEnabled(false);
+                        mWpadSound.Play(SND.effect.TOUCH_LATCHED);
+                        mTV_Result.append("거동수상자 해제됨" + "\n");
+
+                        if(smartKeyRfDoorAPI != null)
+                        {
+                            smartKeyRfDoorAPI.SetCAMERAmode((byte) 0x00);
+                            smartKeyRfDoorAPI.SetLEDmode((byte) 0x00);
+                        }
+                        break;
+
+                    default:
+                        break;
+                }
+            }
+        }
+    }
+
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+    }
+
+
+    private static int CONTROLLER_COLUMN = 3;
+    private static int BUTTON_LAYOUT_WIDTH = 200;
+    private static int BUTTON_LAYOUT_HEIGHT = 80;
+    private static int BUTTON_LEFT_MARGIN = 20;
+    private static int BUTTON_TOP_MARGIN = 5;
+    private static int BUTTON_BOTTOM_MARGIN = 5;
+    private static int BUTTON_TEXT_SIZE = 30;
+
+    // init SensorView
+    private void initSensorView() {
+        LinearLayout rowLayout = new LinearLayout(mActivity);
+
+        mSensorLayout_Current = mSensorLayout_1;
+
+        if ((WpadScale.getWidthPixels() == 800) && (WpadScale.getHeightPixels() == 480)) {
+            BUTTON_LAYOUT_WIDTH =  153;
+            BUTTON_LAYOUT_HEIGHT = 61;
+            BUTTON_TEXT_SIZE = 25;
+        }
+        else if ((WpadScale.getWidthPixels() == 1280) && (WpadScale.getHeightPixels() == 800)) {
+            BUTTON_LAYOUT_WIDTH =  230;
+            BUTTON_LAYOUT_HEIGHT = 80;
+            BUTTON_TEXT_SIZE = 30;
+        }
+        else if ((WpadScale.getWidthPixels() == 1024) && (WpadScale.getHeightPixels() == 600)) {
+            if (ModelType == Version.MODEL_TYPE.IHN_1030_D) {
+                BUTTON_TEXT_SIZE = 25;
+            }
+        }
+
+        for (int i=0; i<mSensorList.size(); i++) {
+            Button button = new Button(mActivity);
+            button.setText(mSensorList.get(i));
+            button.setTextSize(BUTTON_TEXT_SIZE);
+            button.setTextColor(getResources().getColor(R.color.white));
+            button.setBackgroundResource(R.drawable.btn_sensor_color);
+            button.setEnabled(false);
+
+            LinearLayout.LayoutParams buttonParams = new LinearLayout.LayoutParams(
+                    BUTTON_LAYOUT_WIDTH //LayoutParams.WRAP_CONTENT
+                    , BUTTON_LAYOUT_HEIGHT // LayoutParams.WRAP_CONTENT
+            );
+
+            buttonParams.leftMargin = BUTTON_LEFT_MARGIN;
+            buttonParams.topMargin = BUTTON_TOP_MARGIN;
+            buttonParams.bottomMargin = BUTTON_BOTTOM_MARGIN;
+            button.setLayoutParams(buttonParams);
+
+            /*if(i == SmartDcamIndex)
+            {
+                button.setOnClickListener(StrangerButtonClick);
+            }*/
+
+            //button.setOnClickListener(new ButtonOnClickListener(i));
+
+            mSensorLayout_Current.addView(button);
+
+            if (i == CONTROLLER_COLUMN - 1) {
+                mSensorLayout_Current = mSensorLayout_2;
+            }
+            else if (i == (CONTROLLER_COLUMN - 1 + CONTROLLER_COLUMN*1)) {
+                mSensorLayout_Current = mSensorLayout_3;
+            }
+            else if (i == (CONTROLLER_COLUMN - 1 + CONTROLLER_COLUMN*2)) {
+                mSensorLayout_Current = mSensorLayout_4;
+            }
+            else if (i == (CONTROLLER_COLUMN - 1 + CONTROLLER_COLUMN*3)) {
+                mSensorLayout_Current = mSensorLayout_5;
+            }
+
+            mButtonList.add(button);
+        }
+        // btnTest.setOnClickListener(mButtonClick);
+
+        if (Version.getGatewayUsage()) {
+            if (mWallPadAPI.getGatewayType() == Version.GATEWAY_MODEL.IGW_300) {
+                if (mIGW300Data.senIn.Magnetic == true) {
+                    mButtonList.get(SENSOR_TYPE_MAGNETIC_0 - SENSOR_TYPE_BASE).setEnabled(true);
+                }
+
+                if (mIGW300Data.senIn.Out_Motion == true) {
+                    mButtonList.get(SENSOR_TYPE_OUTER_MOTION - SENSOR_TYPE_BASE).setEnabled(true);
+                }
+
+                if (mIGW300Data.senIn.In_Motion == true) {
+                    mButtonList.get(SENSOR_TYPE_INNER_MOTION - SENSOR_TYPE_BASE).setEnabled(true);
+                }
+
+                if (mIGW300Data.senIn.EVAC_UP == true) {
+                    mButtonList.get(SENSOR_TYPE_ESCAPE_LADDER_D101 - SENSOR_TYPE_BASE).setEnabled(true);
+                }
+
+                if (mIGW300Data.senIn.EVAC_Home == true) {
+                    mButtonList.get(SENSOR_TYPE_ETC_D101 - SENSOR_TYPE_BASE).setEnabled(true);
+                }
+
+                if (mIGW300Data.senIn.APU == true) {
+                    mButtonList.get(SENSOR_TYPE_APU_D101 - SENSOR_TYPE_BASE).setEnabled(true);
+                }
+            }
+            else {
+                Log.w(TAG, "[initSensorView] not supported gateway -> " + mWallPadAPI.getGatewayType());
+            }
+        }
+        else {
+            initSensorState();
+        }
+    }
+
+
+    private class SensorState {
+        private int mSensorType = -1;
+        private int mSensorState = WallPadInterface.SENSOR_STATE_DISABLE;
+
+        // constructor
+        public SensorState() {
+        }
+
+        // constructor
+        public SensorState(int type, int state) {
+            mSensorType = type;
+            mSensorState = state;
+        }
+
+
+        // set Type
+        public void setType (int type) {
+            mSensorType = type;
+        }
+
+        // set Type
+        public void setState(int state) {
+            mSensorState = state;
+        }
+
+
+        // get Type
+        public int getType () {
+            return mSensorType;
+        }
+
+        // get Type
+        public int getState() {
+            return mSensorState;
+        }
+    }
+
+
+
+    boolean bSensorDetecting = false;
+    boolean bUseInnerMotionDetecting = false;
+    boolean bUseOuterMotionDetecting = false;
+    boolean bUseOuterMotionDetectorToInnerMotion = false;
+    boolean bUseEscapeLadder = false;
+    // get SensorState
+    private SensorState getSensorState(int type) {
+        SensorState sensorState = new SensorState();
+
+        int sensorCommand = -1;
+
+        WallpadSalesSampleData wallpadSalesSampleData = new WallpadSalesSampleData(mActivity);
+        int getData = wallpadSalesSampleData.getSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_SENSOR_DETECTING);
+        if (getData == WallpadSalesSampleData.SALES_SAMPLE_MODE_DO_USED)
+            bSensorDetecting = true;
+
+        wallpadSalesSampleData.closeDB();
+
+
+        List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_MOTION_SETTING);
+        if ((InfoList != null) && (InfoList.size() > 5)) {
+            if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+                for (int i=4; i<InfoList.size(); i+=2) {
+                    if (Const.MOTION_SETTING_TYPE_USE_INNER_MOTION_DETECTOR.equals(InfoList.get(i)) && (InfoList.size() > (i + 1))) {
+
+                        if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(i + 1)))
+                            bUseInnerMotionDetecting = true;
+                    }
+                    else if (Const.MOTION_SETTING_TYPE_USE_OUTER_MOTION_DETECTOR.equals(InfoList.get(i)) && (InfoList.size() > (i + 1))) {
+
+                        if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(i + 1)))
+                            bUseOuterMotionDetecting = true;
+                    }
+                    else if (Const.MOTION_SETTING_TYPE_USE_OUTER_MOTION_DETECTOR_TO_INNER_MOTION.equals(InfoList.get(i)) && (InfoList.size() > (i + 1))) {
+
+                        if (bUseOuterMotionDetecting == true) {
+                            if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(i + 1)))
+                                bUseOuterMotionDetectorToInnerMotion = true;
+                        }
+                    }
+                }
+            }
+        }
+
+        bUseEscapeLadder = mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ESCAPE_LADDER);
+
+
+
+        if (Version.getModelType() == Version.MODEL_TYPE.IHN_D101 || Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I
+                || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K_I
+                || Version.getModelType() == Version.MODEL_TYPE.IHN_1010GL || Version.getModelType() == Version.MODEL_TYPE.IHN_1010GL_I)
+        {
+            if (bSensorDetecting) {
+                switch (type) {
+                    case SENSOR_TYPE_MAGNETIC_0:
+                        sensorCommand = WallPadInterface.IOCTL_SENSOR_MAG0_STATE;
+                        sensorState.setType(type);
+                        break;
+
+                    case SENSOR_TYPE_OUTER_MOTION:
+                        if (bUseOuterMotionDetecting) {
+                            sensorCommand = WallPadInterface.IOCTL_SENSOR_MOTOUT_STATE;
+                            if (bUseOuterMotionDetectorToInnerMotion) {
+                                sensorState.setType(SENSOR_TYPE_INNER_MOTION);
+                            }
+                            else {
+                                sensorState.setType(SENSOR_TYPE_OUTER_MOTION);
+                            }
+                        }
+                        break;
+
+                    case SENSOR_TYPE_INNER_MOTION:
+                        if (bUseInnerMotionDetecting) {
+                            sensorCommand = WallPadInterface.IOCTL_SENSOR_MOTIN_STATE;
+                            sensorState.setType(type);
+                        }
+                        break;
+
+                    case SENSOR_TYPE_ESCAPE_LADDER_D101:
+                        if (bUseEscapeLadder) {
+                            sensorCommand = WallPadInterface.IOCTL_SENSOR_EXIT_STATE;
+                            sensorState.setType(type);
+                        }
+                        break;
+
+                    case SENSOR_TYPE_APU_D101:
+                        if (iGW300API != null) {
+                            if (iGW300API.data.senIn.APU == false) sensorState.setType(type);
+                        }
+                        break;
+
+                    case SENSOR_TYPE_ETC_D101:
+                        sensorState.setType(type);
+                        break;
+
+                    default:
+                        break;
+                }
+            }
+        }
+        else {
+            if (bSensorDetecting) {
+                switch (type) {
+                    case SENSOR_TYPE_MAGNETIC_0:
+                        sensorCommand = WallPadInterface.IOCTL_SENSOR_MAG0_STATE;
+                        sensorState.setType(type);
+                        break;
+
+                    case SENSOR_TYPE_OUTER_MOTION:
+                        if (bUseOuterMotionDetecting) {
+                            sensorCommand = WallPadInterface.IOCTL_SENSOR_MOTOUT_STATE;
+                            if (bUseOuterMotionDetectorToInnerMotion) {
+                                sensorState.setType(SENSOR_TYPE_INNER_MOTION);
+                            }
+                            else {
+                                sensorState.setType(SENSOR_TYPE_OUTER_MOTION);
+                            }
+                        }
+                        break;
+
+                    case SENSOR_TYPE_INNER_MOTION:
+                        if (bUseInnerMotionDetecting) {
+                            sensorCommand = WallPadInterface.IOCTL_SENSOR_MOTIN_STATE;
+                            sensorState.setType(type);
+                        }
+                        break;
+
+                    case SENSOR_TYPE_EMR:
+                        sensorCommand = WallPadInterface.IOCTL_SENSOR_EMR_STATE;
+                        sensorState.setType(type);
+                        break;
+
+                    case SENSOR_TYPE_ESCAPE_LADDER:
+                        if (bUseEscapeLadder) {
+                            sensorCommand = WallPadInterface.IOCTL_SENSOR_EXIT_STATE;
+                            sensorState.setType(type);
+                        }
+                        break;
+
+                    case SENSOR_TYPE_APU:
+                        if (Version.getModelType() == Version.MODEL_TYPE.IHN_1020GL) {
+                            if (iGW200dAPI != null) {
+                                if (iGW200dAPI.data.senIn.APU == false)
+                                    sensorState.setType(type);
+                            }
+                        }
+                        break;
+                    case SENSOR_TYPE_ETC:
+                        sensorState.setType(type);
+                    default:
+                        break;
+                }
+            }
+
+        }
+
+
+        if (sensorCommand != -1) {
+            WallPadInterface wallPadInterface = MainActivity.getWallPadInterface();
+            sensorState.setState(wallPadInterface.getSensorState(sensorCommand));
+        }
+
+        if (DEBUG)  Log.e(TAG, "getSensorState(" + sensorCommand + ")"
+                + ", type : " + type
+                + ", sensorState.getState() : " + sensorState.getState()
+                + ", sensorState.getType() : " + sensorState.getType()
+        );
+
+
+        if (sensorState.getState() == WallPadInterface.SENSOR_STATE_ENABLE)
+            reloadSensorState(type);
+
+        return sensorState;
+    }
+
+
+
+
+
+    // init SensorState
+    private void initSensorState() {
+        SensorState sensorState = getSensorState(SENSOR_TYPE_MAGNETIC_0);
+        if ((sensorState.getState() == WallPadInterface.SENSOR_STATE_ENABLE) && (sensorState.getType() != -1))
+            mButtonList.get((sensorState.getType() - SENSOR_TYPE_BASE)).setEnabled(true);
+
+        sensorState = getSensorState(SENSOR_TYPE_OUTER_MOTION);
+        if ((sensorState.getState() == WallPadInterface.SENSOR_STATE_ENABLE) && (sensorState.getType() != -1))
+            mButtonList.get((sensorState.getType() - SENSOR_TYPE_BASE)).setEnabled(true);
+
+        sensorState = getSensorState(SENSOR_TYPE_INNER_MOTION);
+        if ((sensorState.getState() == WallPadInterface.SENSOR_STATE_ENABLE) && (sensorState.getType() != -1))
+            mButtonList.get((sensorState.getType() - SENSOR_TYPE_BASE)).setEnabled(true);
+
+        if( Version.getModelType() != Version.MODEL_TYPE.IHN_750)
+        {
+            sensorState = getSensorState(SENSOR_TYPE_EMR);
+            if ((sensorState.getState() == WallPadInterface.SENSOR_STATE_ENABLE) && (sensorState.getType() != -1))
+                mButtonList.get((sensorState.getType() - SENSOR_TYPE_BASE)).setEnabled(true);
+
+            sensorState = getSensorState(SENSOR_TYPE_ESCAPE_LADDER);
+            if ((sensorState.getState() == WallPadInterface.SENSOR_STATE_ENABLE) && (sensorState.getType() != -1))
+                mButtonList.get((sensorState.getType() - SENSOR_TYPE_BASE)).setEnabled(true);
+        }
+
+    }
+
+
+    private class ButtonOnClickListener implements View.OnClickListener {
+        int mSelectedIdx = 0;
+
+        public ButtonOnClickListener(int idx) {
+            mSelectedIdx = idx;
+        }
+
+        @Override
+        public void onClick(View v) {
+            if (DEBUG)  Log.d(TAG, "onClick() : " + mSensorList.get(mSelectedIdx));
+
+            // String controllerName = mSensorList.get(mSelectedIdx);
+            //if (DEBUG)    Toast.makeText(mActivity, controllerName + " test", Toast.LENGTH_SHORT).show();
+
+            //receivedSensorEvent(SENSOR_TYPE_BASE + mSelectedIdx);
+
+            switch(v.getId())
+            {
+                case R.id.btn_hdclivlight_make_p1:
+                {
+                    if (DEBUG) Log.d(TAG, "onClick() btn_hdclivlight_make_p1");
+
+                }
+                break;
+
+                default:
+                    break;
+            }
+        }
+    }
+
+
+
+    private int SENSOR_RESET_INTERVAL = 1000;
+    private final Handler mHandler = new Handler()
+    {
+        public void handleMessage(Message msg)
+        {
+            super.handleMessage(msg);
+            int type = msg.what;
+
+            if (DEBUG)  Log.d(TAG, "handleMessage() : type " + type);
+
+            if (Version.getGatewayUsage()) {
+                switch (type) {
+                    case SENSOR_TYPE_MAGNETIC_0:
+                    case SENSOR_TYPE_OUTER_MOTION:
+                    case SENSOR_TYPE_INNER_MOTION:
+                    case SENSOR_TYPE_ESCAPE_LADDER_D101:
+                    case SENSOR_TYPE_APU_D101:
+                    case SENSOR_TYPE_ETC_D101:
+                        SensorState sensorState = getSensorState(type);
+                        if ((sensorState.getState() != WallPadInterface.SENSOR_STATE_ENABLE) && (sensorState.getType() != -1)) {
+                            //Log.i(TAG,"[Handler] - setEnabled(false)");
+                            //mButtonList.get((sensorState.getType() - SENSOR_TYPE_BASE)).setEnabled(false);
+                        }
+                        break;
+
+                    default:
+                        break;
+                }
+            }
+            else {
+                switch (type) {
+                    case SENSOR_TYPE_MAGNETIC_0:
+                    case SENSOR_TYPE_OUTER_MOTION:
+                    case SENSOR_TYPE_INNER_MOTION:
+                    case SENSOR_TYPE_EMR:
+                    case SENSOR_TYPE_ESCAPE_LADDER:
+                    case SENSOR_TYPE_APU:
+                    case SENSOR_TYPE_ETC:
+                        SensorState sensorState = getSensorState(type);
+                        if ((sensorState.getState() != WallPadInterface.SENSOR_STATE_ENABLE) && (sensorState.getType() != -1)) {
+                            Log.w(TAG, "Sensor State black ~~~~~~~");
+                            mButtonList.get((sensorState.getType() - SENSOR_TYPE_BASE)).setEnabled(false);
+                        }
+                        break;
+
+                    default:
+                        break;
+                }
+            }
+        }
+    };
+
+
+    // 수신된 SensorEvent를 UI에 update
+    private void receivedSensorEvent(int type) {
+        StringBuilder result = new StringBuilder();
+        String title = String.valueOf(mNumber++) + ". " ;
+        int detectingType = type;
+        if (!Version.getGatewayUsage()) {
+            if (detectingType == SENSOR_TYPE_OUTER_MOTION) {
+                if (bUseOuterMotionDetecting) {
+                    if (bUseOuterMotionDetectorToInnerMotion) detectingType = SENSOR_TYPE_INNER_MOTION;
+                    else detectingType = SENSOR_TYPE_OUTER_MOTION;
+                }
+            }
+        }
+
+        if (DEBUG)  Log.d(TAG, "receivedSensorEvent() type : " + type);
+        if (DEBUG)  Log.d(TAG, "mButtonList.size() : " + mButtonList.size());
+
+
+        mWpadSound.Play(SND.effect.TOUCH_LATCHED);
+
+        String currentTime = TimeUtil.getTimeString(mActivity, System.currentTimeMillis());
+        title += " " + currentTime + " ";
+
+        int idx = detectingType - SENSOR_TYPE_BASE;
+        if (DEBUG)  Log.d(TAG, "idx : " + idx);
+        if (Version.getModelType() == Version.MODEL_TYPE.IHN_D101 || Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I
+                || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K_I
+                || Version.getModelType() == Version.MODEL_TYPE.IHN_1010GL || Version.getModelType() == Version.MODEL_TYPE.IHN_1010GL_I)
+        {
+            switch (detectingType) {
+                case SENSOR_TYPE_MAGNETIC_0:
+                    mButtonList.get(idx).setEnabled(true);
+
+                    title += mSensorList.get(idx) + " " + mActivity.getString(R.string.event_received);
+                    result.append(title + testSensorMagnetic());
+                    break;
+
+                case SENSOR_TYPE_OUTER_MOTION:
+                    mButtonList.get(idx).setEnabled(true);
+
+                    title += mSensorList.get(idx) + " " + mActivity.getString(R.string.event_received);
+                    result.append(title + testSensorOuterBody());
+                    break;
+
+                case SENSOR_TYPE_INNER_MOTION:
+                    mButtonList.get(idx).setEnabled(true);
+
+                    title += mSensorList.get(idx) + " " + mActivity.getString(R.string.event_received);
+                    result.append(title + testSensorInnerBody());
+                    break;
+
+                case SENSOR_TYPE_ESCAPE_LADDER_D101:
+                    mButtonList.get(idx).setEnabled(true);
+
+                    title += mSensorList.get(idx) + " " + mActivity.getString(R.string.event_received);
+                    result.append(title + testSensorEscapeLadder());
+                    break;
+
+                case SENSOR_TYPE_APU_D101:
+                    if (iGW300API.data.senIn.APU == true) {
+                        mButtonList.get(idx).setEnabled(true);
+
+                        title += mSensorList.get(idx) + " " + mActivity.getString(R.string.event_received);
+                        result.append(title + testSensorAPU());
+                    }
+                    else {
+                        mButtonList.get(idx).setEnabled(false);
+                    }
+                    break;
+
+                case SENSOR_TYPE_ETC_D101:
+                    mButtonList.get(idx).setEnabled(true);
+
+                    title += mSensorList.get(idx) + " " + mActivity.getString(R.string.event_received);
+                    result.append(title + testSensorEtc());
+                    break;
+
+                /*case SENSOR_TYPE_ETC:
+                    mButtonList.get(idx).setEnabled(true);
+
+                    title += mSensorList.get(idx) + " " + mActivity.getString(R.string.event_received);
+                    result.append(title + testSensorEtc());
+                    break;*/
+
+                default:
+                    break;
+            }
+        }
+        else {
+            switch (detectingType) {
+                case SENSOR_TYPE_MAGNETIC_0:
+                    mButtonList.get(idx).setEnabled(true);
+
+                    title += mSensorList.get(idx) + " " + mActivity.getString(R.string.event_received);
+                    result.append(title + testSensorMagnetic());
+                    break;
+
+                case SENSOR_TYPE_OUTER_MOTION:
+                    mButtonList.get(idx).setEnabled(true);
+
+                    title += mSensorList.get(idx) + " " + mActivity.getString(R.string.event_received);
+                    result.append(title + testSensorOuterBody());
+                    break;
+
+                case SENSOR_TYPE_INNER_MOTION:
+                    mButtonList.get(idx).setEnabled(true);
+
+                    title += mSensorList.get(idx) + " " + mActivity.getString(R.string.event_received);
+                    result.append(title + testSensorInnerBody());
+                    break;
+
+                case SENSOR_TYPE_EMR:
+                    mButtonList.get(idx).setEnabled(true);
+
+                    title += mSensorList.get(idx) + " " + mActivity.getString(R.string.event_received);
+                    result.append(title + testSensorEmergency());
+                    break;
+
+                case SENSOR_TYPE_ESCAPE_LADDER:
+                    mButtonList.get(idx).setEnabled(true);
+
+                    title += mSensorList.get(idx) + " " + mActivity.getString(R.string.event_received);
+                    result.append(title + testSensorEscapeLadder());
+                    break;
+
+                case SENSOR_TYPE_APU:
+                    if (iGW200dAPI.data.senIn.APU == true) {
+                        mButtonList.get(idx).setEnabled(true);
+
+                        title += mSensorList.get(idx) + " " + mActivity.getString(R.string.event_received);
+                        result.append(title + testSensorAPU());
+                    }
+                    else {
+                        mButtonList.get(idx).setEnabled(false);
+                    }
+                    break;
+
+                case SENSOR_TYPE_ETC:
+                    mButtonList.get(idx).setEnabled(true);
+
+                    title += mSensorList.get(idx) + " " + mActivity.getString(R.string.event_received);
+                    result.append(title + testSensorEtc());
+                    break;
+
+                default:
+                    break;
+            }
+
+        }
+
+        mTV_Result.append(result + "\n");
+
+        reloadSensorState(type);
+    }
+
+
+
+    // reload SensorState
+    private void reloadSensorState(int type) {
+        if (bRuuning) {
+            Message msg = mHandler.obtainMessage(type, null);
+            msg.what = type;
+            mHandler.sendMessageDelayed(msg, SENSOR_RESET_INTERVAL);
+        }
+    }
+
+
+    private View.OnClickListener StrangerButtonClick = new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+            /*switch(v.getId())
+            {
+                case R.id.btn_hdclivlight_make_p1:
+                {
+                    if (DEBUG)  Log.d(TAG, "onClick() btn_hdclivlight_make_p1" );
+
+                }
+                break;
+
+                default:
+                    break;
+            }*/
+
+            if(smartKeyRfDoorAPI != null)
+            {
+                String ret = smartKeyRfDoorAPI.SetSensorConfig((byte) 0x05, (byte)0x05);
+                Log.i(TAG, "[StrangerButtonClick] - Test Setting result = " + ret);
+            }
+
+        }
+    };
+
+
+
+
+
+
+
+
+    private String testSensorMagnetic() {
+        StringBuilder result = new StringBuilder();
+
+        // TO DO
+
+        return result.toString();
+    }
+
+
+    private String testSensorOuterBody() {
+        StringBuilder result = new StringBuilder();
+
+        // TO DO
+
+        return result.toString();
+    }
+
+
+    private String testSensorInnerBody() {
+        StringBuilder result = new StringBuilder();
+
+        // TO DO
+
+        return result.toString();
+    }
+
+
+    private String testSensorEmergency() {
+        StringBuilder result = new StringBuilder();
+
+        // TO DO
+
+        return result.toString();
+    }
+
+
+    private String testSensorEscapeLadder() {
+        StringBuilder result = new StringBuilder();
+
+        // TO DO
+
+        return result.toString();
+    }
+
+
+    private String testSensorAPU() {
+        StringBuilder result = new StringBuilder();
+
+        // TO DO
+
+        return result.toString();
+    }
+
+
+    private String testSensorEtc() {
+        StringBuilder result = new StringBuilder();
+
+        // TO DO
+
+        return result.toString();
+    }
+
+}

+ 164 - 164
ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/QueryCCTVInfoFragment.java

@@ -1,164 +1,164 @@
-package com.artncore.managersetting.ui.fragments;
-
-import java.util.List;
-
-import android.app.Activity;
-import android.os.Bundle;
-//import android.support.v4.app.Fragment;
-import androidx.fragment.app.Fragment;
-import androidx.core.view.MotionEventCompat;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.View.OnTouchListener;
-import android.widget.ScrollView;
-import android.widget.TextView;
-
-
-import com.artncore.managersetting.dao.MainDatabaseManager;
-import com.artncore.managersetting.ui.activities.MainActivity;
-import com.artncore.managersetting.R;
-
-/**
- * A list fragment representing a list of Items. This fragment also supports
- * tablet devices by allowing list items to be given an 'activated' state upon
- * selection. This helps indicate which item is currently being viewed in a
- * {link ItemDetailFragment}.
- * <p>
- * Activities containing this fragment MUST implement the {link Callbacks}
- * interface.
- */
-public class QueryCCTVInfoFragment extends Fragment {
-    private static final String TAG = "QueryCCTVInfoFragment";
-
-    private final boolean DEBUG = true;
-
-    public final int CCTV_IDX_MIN =   0;
-    public final int CCTV_IDX_MAX =   100;
-
-
-    private Activity mActivity;
-    private MainDatabaseManager mMainDatabaseManager;
-
-    private TextView mTV_Result;
-    private int mNumber = 1;
-
-
-    // constructor
-    public QueryCCTVInfoFragment() {
-    }
-
-    @Override
-    public void onAttach(Activity activity) {
-        super.onAttach(activity);
-
-        mActivity = activity;
-        mMainDatabaseManager = MainActivity.getMainDatabaseManager();
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        if (DEBUG)  Log.d(TAG, "onCreate() ");
-
-        super.onCreate(savedInstanceState);
-
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-            Bundle savedInstanceState) {
-        View rootView = (View) inflater.inflate(R.layout.version_info_container,
-                container, false);
-
-        return (View)rootView;
-    }
-
-    @Override
-    public void onViewCreated(View view, Bundle savedInstanceState) {
-        super.onViewCreated(view, savedInstanceState);
-
-        if (savedInstanceState != null) {}
-
-        mTV_Result = (TextView) view.findViewById(R.id.tv_version_info);
-
-        ScrollView mScrollView = (ScrollView) view.findViewById(R.id.tv_version_scrollview);
-        mScrollView.setOnTouchListener(new OnTouchListener() {
-
-            @Override
-            public boolean onTouch(View v, MotionEvent event) {
-                switch (MotionEventCompat.getActionMasked(event)) {
-
-                case MotionEvent.ACTION_UP:
-                    MainActivity.setFinishTimerReset();
-                    break;
-
-                default:
-                    break;
-                }
-                return false;
-            }
-        });   
-        
-        showCCTVInfo();
-    }
-
-    @Override
-    public void onDetach() {
-        super.onDetach();
-    }
-
-
-    @Override
-    public void onSaveInstanceState(Bundle outState) {
-        super.onSaveInstanceState(outState);
-    }
-
-
-
-    // show all CCTVInfo
-    private void showCCTVInfo() {
-        StringBuilder result = new StringBuilder();
-        String title = String.valueOf(mNumber++) + ". " ;
-
-        result.append(title + getAllCCTVInfo());
-
-/*
-        showVersionInfo(1);
-        showVersionInfo(2);
-        showVersionInfo(3);
-        showVersionInfo(4);
-        showVersionInfo(5);
-        showVersionInfo(6);
-        showVersionInfo(7);
-*/
-
-        mTV_Result.append(result + "\n");
-    }
-
-
-    // get all CCTVInfo
-    private String getAllCCTVInfo() {
-        StringBuilder result = new StringBuilder();
-
-        List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_CCTV);
-        if (InfoList != null) {
-            for (int i=2; i<InfoList.size(); i++) {
-                result.append(InfoList.get(i));
-
-                if (((i + 1) % 2) == 0) {
-                    result.append("\n");
-                }
-                else {
-                    result.append(" ");
-                }
-            }
-        }
-
-        if (DEBUG)  Log.d(TAG, "CCTV : " + result);
-
-        return result.toString();
-    }
-
-}
+package com.artncore.managersetting.ui.fragments;
+
+import java.util.List;
+
+import android.app.Activity;
+import android.os.Bundle;
+//import android.support.v4.app.Fragment;
+import androidx.fragment.app.Fragment;
+import androidx.core.view.MotionEventCompat;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.View.OnTouchListener;
+import android.widget.ScrollView;
+import android.widget.TextView;
+
+
+import com.artncore.managersetting.dao.MainDatabaseManager;
+import com.artncore.managersetting.ui.activities.MainActivity;
+import com.artncore.managersetting.R;
+
+/**
+ * A list fragment representing a list of Items. This fragment also supports
+ * tablet devices by allowing list items to be given an 'activated' state upon
+ * selection. This helps indicate which item is currently being viewed in a
+ * {link ItemDetailFragment}.
+ * <p>
+ * Activities containing this fragment MUST implement the {link Callbacks}
+ * interface.
+ */
+public class QueryCCTVInfoFragment extends Fragment {
+    private static final String TAG = "QueryCCTVInfoFragment";
+
+    private final boolean DEBUG = true;
+
+    public final int CCTV_IDX_MIN =   0;
+    public final int CCTV_IDX_MAX =   100;
+
+
+    private Activity mActivity;
+    private MainDatabaseManager mMainDatabaseManager;
+
+    private TextView mTV_Result;
+    private int mNumber = 1;
+
+
+    // constructor
+    public QueryCCTVInfoFragment() {
+    }
+
+    @Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+
+        mActivity = activity;
+        mMainDatabaseManager = MainActivity.getMainDatabaseManager();
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        if (DEBUG)  Log.d(TAG, "onCreate() ");
+
+        super.onCreate(savedInstanceState);
+
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+            Bundle savedInstanceState) {
+        View rootView = (View) inflater.inflate(R.layout.version_info_container,
+                container, false);
+
+        return (View)rootView;
+    }
+
+    @Override
+    public void onViewCreated(View view, Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+
+        if (savedInstanceState != null) {}
+
+        mTV_Result = (TextView) view.findViewById(R.id.tv_version_info);
+
+        ScrollView mScrollView = (ScrollView) view.findViewById(R.id.tv_version_scrollview);
+        mScrollView.setOnTouchListener(new OnTouchListener() {
+
+            @Override
+            public boolean onTouch(View v, MotionEvent event) {
+                switch (MotionEventCompat.getActionMasked(event)) {
+
+                case MotionEvent.ACTION_UP:
+                    MainActivity.setFinishTimerReset();
+                    break;
+
+                default:
+                    break;
+                }
+                return false;
+            }
+        });   
+        
+        showCCTVInfo();
+    }
+
+    @Override
+    public void onDetach() {
+        super.onDetach();
+    }
+
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+    }
+
+
+
+    // show all CCTVInfo
+    private void showCCTVInfo() {
+        StringBuilder result = new StringBuilder();
+        String title = String.valueOf(mNumber++) + ". " ;
+
+        result.append(title + getAllCCTVInfo());
+
+/*
+        showVersionInfo(1);
+        showVersionInfo(2);
+        showVersionInfo(3);
+        showVersionInfo(4);
+        showVersionInfo(5);
+        showVersionInfo(6);
+        showVersionInfo(7);
+*/
+
+        mTV_Result.append(result + "\n");
+    }
+
+
+    // get all CCTVInfo
+    private String getAllCCTVInfo() {
+        StringBuilder result = new StringBuilder();
+
+        List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_CCTV);
+        if (InfoList != null) {
+            for (int i=2; i<InfoList.size(); i++) {
+                result.append(InfoList.get(i));
+
+                if (((i + 1) % 2) == 0) {
+                    result.append("\n");
+                }
+                else {
+                    result.append(" ");
+                }
+            }
+        }
+
+        if (DEBUG)  Log.d(TAG, "CCTV : " + result);
+
+        return result.toString();
+    }
+
+}

+ 384 - 384
ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/QueryEtcInfoFragment.java

@@ -1,384 +1,384 @@
-package com.artncore.managersetting.ui.fragments;
-
-import android.app.Activity;
-import android.os.Bundle;
-import android.os.SystemClock;
-//import android.support.v4.app.Fragment;
-import androidx.fragment.app.Fragment;
-import androidx.core.view.MotionEventCompat;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.View.OnTouchListener;
-import android.view.ViewGroup;
-import android.widget.ScrollView;
-import android.widget.TextView;
-
-import com.artncore.WallPadDataMgr.WallpadDeviceSet;
-import com.artncore.WallPadDataMgr.WallpadStatusData;
-import com.artncore.managersetting.R;
-import com.artncore.managersetting.dao.MainDatabaseManager;
-import com.artncore.managersetting.domain.Const;
-import com.artncore.managersetting.ui.activities.MainActivity;
-import com.artncore.managersetting.util.StringUtil;
-import com.artncore.managersetting.util.TimeUtil;
-
-import java.util.List;
-
-/**
- * A list fragment representing a list of Items. This fragment also supports
- * tablet devices by allowing list items to be given an 'activated' state upon
- * selection. This helps indicate which item is currently being viewed in a
- * {link ItemDetailFragment}.
- * <p>
- * Activities containing this fragment MUST implement the {link Callbacks}
- * interface.
- */
-public class QueryEtcInfoFragment extends Fragment {
-    private static final String TAG = "QueryEtcInfoFragment";
-
-    private final boolean DEBUG = true;
-
-    public final int INFO_TYPE_ETC_BASE =           Const.COMMON_TYPE_BASE;
-    public final int INFO_TYPE_BOOTUP_TIME =                    INFO_TYPE_ETC_BASE + 0;
-    public final int INFO_TYPE_HEART_BEAT_INTERVAL =            INFO_TYPE_ETC_BASE + 1;
-    public final int INFO_TYPE_HEART_BEAT_LAST_TRANSMIT_TIME =  INFO_TYPE_ETC_BASE + 2;
-    public final int INFO_TYPE_STATE_BEAT_INTERVAL =            INFO_TYPE_ETC_BASE + 3;
-    public final int INFO_TYPE_STATE_BEAT_LAST_TRANSMIT_TIME =  INFO_TYPE_ETC_BASE + 4;
-    public final int INFO_TYPE_FIELD_GUARD_IP =                 INFO_TYPE_ETC_BASE + 5;
-    public final int INFO_TYPE_PARKING_IP =                     INFO_TYPE_ETC_BASE + 6;
-    public final int INFO_TYPE_REMOTECALL_IP =                  INFO_TYPE_ETC_BASE + 7;
-
-
-    private Activity mActivity;
-    private MainDatabaseManager mMainDatabaseManager;
-
-    private TextView mTV_Result;
-    private int mNumber = 1;
-
-    // constructor
-    public QueryEtcInfoFragment() {
-    }
-
-    @Override
-    public void onAttach(Activity activity) {
-        super.onAttach(activity);
-
-        mActivity = activity;
-        mMainDatabaseManager = MainActivity.getMainDatabaseManager();
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        if (DEBUG)  Log.d(TAG, "onCreate() ");
-
-        super.onCreate(savedInstanceState);
-
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-            Bundle savedInstanceState) {
-        View rootView = (View) inflater.inflate(R.layout.version_info_container,
-                container, false);
-
-        return (View)rootView;
-    }
-
-    @Override
-    public void onViewCreated(View view, Bundle savedInstanceState) {
-        super.onViewCreated(view, savedInstanceState);
-
-        if (savedInstanceState != null) {}
-
-        mTV_Result = (TextView) view.findViewById(R.id.tv_version_info);
-
-        ScrollView mScrollView = (ScrollView) view.findViewById(R.id.tv_version_scrollview);
-        mScrollView.setOnTouchListener(new OnTouchListener() {
-
-            @Override
-            public boolean onTouch(View v, MotionEvent event) {
-                switch (MotionEventCompat.getActionMasked(event)) {
-
-                case MotionEvent.ACTION_UP:
-                    MainActivity.setFinishTimerReset();
-                    break;
-
-                default:
-                    break;
-                }
-                return false;
-            }
-        });   
-        
-        getEtcInfo();
-    }
-
-    @Override
-    public void onDetach() {
-        super.onDetach();
-    }
-
-
-    @Override
-    public void onSaveInstanceState(Bundle outState) {
-        super.onSaveInstanceState(outState);
-    }
-
-
-
-    // get all EtcInfo
-    private void getEtcInfo() {
-        showEtcInfo(INFO_TYPE_BOOTUP_TIME);
-        showEtcInfo(INFO_TYPE_HEART_BEAT_INTERVAL);
-        showEtcInfo(INFO_TYPE_HEART_BEAT_LAST_TRANSMIT_TIME);
-
-        showEtcInfo(INFO_TYPE_STATE_BEAT_INTERVAL);
-        showEtcInfo(INFO_TYPE_STATE_BEAT_LAST_TRANSMIT_TIME);
-        showEtcInfo(INFO_TYPE_FIELD_GUARD_IP);
-        showEtcInfo(INFO_TYPE_PARKING_IP);
-        showEtcInfo(INFO_TYPE_REMOTECALL_IP);
-    }
-
-
-    // show EtcInfo
-    private void showEtcInfo(int type) {
-        StringBuilder result = new StringBuilder();
-        String title = String.valueOf(mNumber++) + ". " ;
-
-        switch (type) {
-            case INFO_TYPE_BOOTUP_TIME:
-                title += mActivity.getString(R.string.etc_info_bootup_time);
-                result.append(title + queryEtcInfo(type));
-                break;
-
-            case INFO_TYPE_HEART_BEAT_INTERVAL:
-                title += mActivity.getString(R.string.etc_info_heart_beat_interval);
-                result.append(title + queryEtcInfo(type));
-                break;
-
-            case INFO_TYPE_HEART_BEAT_LAST_TRANSMIT_TIME:
-                title += mActivity.getString(R.string.etc_info_heart_beat_last_transmit_time);
-                result.append(title + queryEtcInfo(type));
-                break;
-
-            case INFO_TYPE_STATE_BEAT_INTERVAL:
-                title += mActivity.getString(R.string.etc_info_state_beat_interval);
-                result.append(title + queryEtcInfo(type));
-                break;
-
-            case INFO_TYPE_STATE_BEAT_LAST_TRANSMIT_TIME:
-                title += mActivity.getString(R.string.etc_info_state_beat_last_transmit_time);
-                result.append(title + queryEtcInfo(type));
-                break;
-
-            case INFO_TYPE_FIELD_GUARD_IP:
-                title += mActivity.getString(R.string.etc_info_field_guard_ip);
-                result.append(title + queryEtcInfo(type));
-                break;
-
-            case INFO_TYPE_PARKING_IP:
-                title += mActivity.getString(R.string.etc_info_parking_ip);
-                result.append(title + queryEtcInfo(type));
-                break;
-
-            case INFO_TYPE_REMOTECALL_IP:
-                title += mActivity.getString(R.string.etc_info_remotecall_ip);
-                result.append(title + queryEtcInfo(type));
-                break;
-
-            default:
-                break;
-        }
-
-        mTV_Result.append(result + "\n");
-    }
-
-
-    // query EtcInfo
-    private String queryEtcInfo(int type) {
-        StringBuilder result = new StringBuilder();
-
-        switch(type) {
-            case INFO_TYPE_BOOTUP_TIME:
-                result.append(getBootupTime());
-                break;
-
-            case INFO_TYPE_HEART_BEAT_INTERVAL:
-                result.append(getHeartBeatInterval());
-                break;
-
-            case INFO_TYPE_HEART_BEAT_LAST_TRANSMIT_TIME:
-                result.append(getHeartBeatLastTransmitTime());
-                break;
-
-            case INFO_TYPE_STATE_BEAT_INTERVAL:
-                result.append(getStateBeatInterval());
-                break;
-
-            case INFO_TYPE_STATE_BEAT_LAST_TRANSMIT_TIME:
-                result.append(getStateBeatLastTransmitTime());
-                break;
-
-            case INFO_TYPE_FIELD_GUARD_IP:
-                result.append(getFieldGuardIP());
-                break;
-
-            case INFO_TYPE_PARKING_IP:
-                result.append(getParkingIP());
-                break;
-
-            case INFO_TYPE_REMOTECALL_IP:
-                result.append(getRemoteCallIP());
-                break;
-        }
-
-        return result.toString();
-    }
-
-
-    // get BootupTime
-    public String getBootupTime() {
-        StringBuilder result = new StringBuilder();
-
-        String bootupTime = TimeUtil.getTimeString(mActivity, System.currentTimeMillis() - SystemClock.elapsedRealtime());
-        result.append(bootupTime);
-
-        if (DEBUG)  Log.d(TAG, "System.currentTimeMillis() : " + System.currentTimeMillis()
-                                + "\n SystemClock.elapsedRealtime() : " + SystemClock.elapsedRealtime()
-                                + "\n BootupTime : " + bootupTime
-                                );
-
-        return result.toString();
-    }
-
-
-    // get HeartBeatInterval
-    public String getHeartBeatInterval() {
-        StringBuilder result = new StringBuilder();
-
-        WallpadStatusData wallpadStatusData = new WallpadStatusData(mActivity);
-        int interval = wallpadStatusData.GetHeartbeatPeriod();
-        result.append(String.valueOf(interval) + " " + mActivity.getString(R.string.minutes));
-        wallpadStatusData.closeDB();
-
-        return result.toString();
-    }
-
-
-    // get HeartBeatLastTransmitTime
-    public String getHeartBeatLastTransmitTime() {
-        StringBuilder result = new StringBuilder();
-
-        WallpadStatusData wallpadStatusData = new WallpadStatusData(mActivity);
-        result.append(wallpadStatusData.GetLastHeartbeat());
-//        result.append(String.valueOf(interval) + " " + mActivity.getString(R.string.minutes));
-        wallpadStatusData.closeDB();
-
-        return result.toString();
-    }
-
-
-    // get StateBeatInterval
-    public String getStateBeatInterval() {
-        StringBuilder result = new StringBuilder();
-
-        WallpadDeviceSet wallpadDeviceSet = new WallpadDeviceSet(mActivity);
-        String[] StatusVal = wallpadDeviceSet.GetSettingData("statusbeat_time");
-        wallpadDeviceSet.closeDB();
-
-        int nInterval = 720;
-        if (StatusVal != null)
-            nInterval = StringUtil.getInt(StatusVal[1], false);
-
-        if (nInterval > -1)
-            result.append(nInterval + " " + mActivity.getString(R.string.minutes));
-
-        return result.toString();
-    }
-
-
-    // get StateBeatLastTransmitTime
-    public String getStateBeatLastTransmitTime() {
-        StringBuilder result = new StringBuilder();
-
-        WallpadStatusData wallpadStatusData = new WallpadStatusData(mActivity);
-        String statusbeatdata = wallpadStatusData.GetLastStatusbeat();
-        wallpadStatusData.closeDB();
-
-        result.append(statusbeatdata);
-
-        return result.toString();
-    }
-
-
-    // get FieldGuardIP
-    public String getFieldGuardIP() {
-        StringBuilder result = new StringBuilder();
-
-        List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_CUSTOMER_SERVICE_GUARD);
-
-        if (InfoList != null) {
-            for (int i=2; i<InfoList.size(); i++) {
-                if (((i + 0) % 2) == 0) {
-                    result.append("\n - ");
-                }
-                else {
-                    result.append(" : ");
-                }
-
-                result.append(InfoList.get(i));
-            }
-        }
-
-        if (DEBUG)  Log.d(TAG, "service guard : " + result);
-
-        return result.toString();
-    }
-
-
-    // get ParkingIP
-    public String getParkingIP() {
-        StringBuilder result = new StringBuilder();
-
-        List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_PARKING);
-        if (InfoList != null) {
-            for (int i=2; i<InfoList.size(); i++) {
-                if (((i + 0) % 2) == 0) {
-                    result.append("\n - ");
-                }
-                else {
-                    result.append(" : ");
-                }
-
-                result.append(InfoList.get(i));
-            }
-        }
-
-        if (DEBUG)  Log.d(TAG, "service guard : " + result);
-
-        return result.toString();
-    }
-
-    // get RemoteCallIP
-    public String getRemoteCallIP() {
-        StringBuilder result = new StringBuilder();
-
-        List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_REMOTE_CALL);
-        if (InfoList != null) {
-            for (int i = 2; i < InfoList.size(); i++) {
-                if (((i + 0) % 2) == 0) {
-                    result.append("\n - ");
-                } else {
-                    result.append(" : ");
-                }
-                result.append(InfoList.get(i));
-            }
-        }
-
-        Log.d(TAG, "[getRemoteCallIP] result [" + result + "]");
-        return result.toString();
-    }
-
-}
+package com.artncore.managersetting.ui.fragments;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.os.SystemClock;
+//import android.support.v4.app.Fragment;
+import androidx.fragment.app.Fragment;
+import androidx.core.view.MotionEventCompat;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.View.OnTouchListener;
+import android.view.ViewGroup;
+import android.widget.ScrollView;
+import android.widget.TextView;
+
+import com.artncore.WallPadDataMgr.WallpadDeviceSet;
+import com.artncore.WallPadDataMgr.WallpadStatusData;
+import com.artncore.managersetting.R;
+import com.artncore.managersetting.dao.MainDatabaseManager;
+import com.artncore.managersetting.domain.Const;
+import com.artncore.managersetting.ui.activities.MainActivity;
+import com.artncore.managersetting.util.StringUtil;
+import com.artncore.managersetting.util.TimeUtil;
+
+import java.util.List;
+
+/**
+ * A list fragment representing a list of Items. This fragment also supports
+ * tablet devices by allowing list items to be given an 'activated' state upon
+ * selection. This helps indicate which item is currently being viewed in a
+ * {link ItemDetailFragment}.
+ * <p>
+ * Activities containing this fragment MUST implement the {link Callbacks}
+ * interface.
+ */
+public class QueryEtcInfoFragment extends Fragment {
+    private static final String TAG = "QueryEtcInfoFragment";
+
+    private final boolean DEBUG = true;
+
+    public final int INFO_TYPE_ETC_BASE =           Const.COMMON_TYPE_BASE;
+    public final int INFO_TYPE_BOOTUP_TIME =                    INFO_TYPE_ETC_BASE + 0;
+    public final int INFO_TYPE_HEART_BEAT_INTERVAL =            INFO_TYPE_ETC_BASE + 1;
+    public final int INFO_TYPE_HEART_BEAT_LAST_TRANSMIT_TIME =  INFO_TYPE_ETC_BASE + 2;
+    public final int INFO_TYPE_STATE_BEAT_INTERVAL =            INFO_TYPE_ETC_BASE + 3;
+    public final int INFO_TYPE_STATE_BEAT_LAST_TRANSMIT_TIME =  INFO_TYPE_ETC_BASE + 4;
+    public final int INFO_TYPE_FIELD_GUARD_IP =                 INFO_TYPE_ETC_BASE + 5;
+    public final int INFO_TYPE_PARKING_IP =                     INFO_TYPE_ETC_BASE + 6;
+    public final int INFO_TYPE_REMOTECALL_IP =                  INFO_TYPE_ETC_BASE + 7;
+
+
+    private Activity mActivity;
+    private MainDatabaseManager mMainDatabaseManager;
+
+    private TextView mTV_Result;
+    private int mNumber = 1;
+
+    // constructor
+    public QueryEtcInfoFragment() {
+    }
+
+    @Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+
+        mActivity = activity;
+        mMainDatabaseManager = MainActivity.getMainDatabaseManager();
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        if (DEBUG)  Log.d(TAG, "onCreate() ");
+
+        super.onCreate(savedInstanceState);
+
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+            Bundle savedInstanceState) {
+        View rootView = (View) inflater.inflate(R.layout.version_info_container,
+                container, false);
+
+        return (View)rootView;
+    }
+
+    @Override
+    public void onViewCreated(View view, Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+
+        if (savedInstanceState != null) {}
+
+        mTV_Result = (TextView) view.findViewById(R.id.tv_version_info);
+
+        ScrollView mScrollView = (ScrollView) view.findViewById(R.id.tv_version_scrollview);
+        mScrollView.setOnTouchListener(new OnTouchListener() {
+
+            @Override
+            public boolean onTouch(View v, MotionEvent event) {
+                switch (MotionEventCompat.getActionMasked(event)) {
+
+                case MotionEvent.ACTION_UP:
+                    MainActivity.setFinishTimerReset();
+                    break;
+
+                default:
+                    break;
+                }
+                return false;
+            }
+        });   
+        
+        getEtcInfo();
+    }
+
+    @Override
+    public void onDetach() {
+        super.onDetach();
+    }
+
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+    }
+
+
+
+    // get all EtcInfo
+    private void getEtcInfo() {
+        showEtcInfo(INFO_TYPE_BOOTUP_TIME);
+        showEtcInfo(INFO_TYPE_HEART_BEAT_INTERVAL);
+        showEtcInfo(INFO_TYPE_HEART_BEAT_LAST_TRANSMIT_TIME);
+
+        showEtcInfo(INFO_TYPE_STATE_BEAT_INTERVAL);
+        showEtcInfo(INFO_TYPE_STATE_BEAT_LAST_TRANSMIT_TIME);
+        showEtcInfo(INFO_TYPE_FIELD_GUARD_IP);
+        showEtcInfo(INFO_TYPE_PARKING_IP);
+        showEtcInfo(INFO_TYPE_REMOTECALL_IP);
+    }
+
+
+    // show EtcInfo
+    private void showEtcInfo(int type) {
+        StringBuilder result = new StringBuilder();
+        String title = String.valueOf(mNumber++) + ". " ;
+
+        switch (type) {
+            case INFO_TYPE_BOOTUP_TIME:
+                title += mActivity.getString(R.string.etc_info_bootup_time);
+                result.append(title + queryEtcInfo(type));
+                break;
+
+            case INFO_TYPE_HEART_BEAT_INTERVAL:
+                title += mActivity.getString(R.string.etc_info_heart_beat_interval);
+                result.append(title + queryEtcInfo(type));
+                break;
+
+            case INFO_TYPE_HEART_BEAT_LAST_TRANSMIT_TIME:
+                title += mActivity.getString(R.string.etc_info_heart_beat_last_transmit_time);
+                result.append(title + queryEtcInfo(type));
+                break;
+
+            case INFO_TYPE_STATE_BEAT_INTERVAL:
+                title += mActivity.getString(R.string.etc_info_state_beat_interval);
+                result.append(title + queryEtcInfo(type));
+                break;
+
+            case INFO_TYPE_STATE_BEAT_LAST_TRANSMIT_TIME:
+                title += mActivity.getString(R.string.etc_info_state_beat_last_transmit_time);
+                result.append(title + queryEtcInfo(type));
+                break;
+
+            case INFO_TYPE_FIELD_GUARD_IP:
+                title += mActivity.getString(R.string.etc_info_field_guard_ip);
+                result.append(title + queryEtcInfo(type));
+                break;
+
+            case INFO_TYPE_PARKING_IP:
+                title += mActivity.getString(R.string.etc_info_parking_ip);
+                result.append(title + queryEtcInfo(type));
+                break;
+
+            case INFO_TYPE_REMOTECALL_IP:
+                title += mActivity.getString(R.string.etc_info_remotecall_ip);
+                result.append(title + queryEtcInfo(type));
+                break;
+
+            default:
+                break;
+        }
+
+        mTV_Result.append(result + "\n");
+    }
+
+
+    // query EtcInfo
+    private String queryEtcInfo(int type) {
+        StringBuilder result = new StringBuilder();
+
+        switch(type) {
+            case INFO_TYPE_BOOTUP_TIME:
+                result.append(getBootupTime());
+                break;
+
+            case INFO_TYPE_HEART_BEAT_INTERVAL:
+                result.append(getHeartBeatInterval());
+                break;
+
+            case INFO_TYPE_HEART_BEAT_LAST_TRANSMIT_TIME:
+                result.append(getHeartBeatLastTransmitTime());
+                break;
+
+            case INFO_TYPE_STATE_BEAT_INTERVAL:
+                result.append(getStateBeatInterval());
+                break;
+
+            case INFO_TYPE_STATE_BEAT_LAST_TRANSMIT_TIME:
+                result.append(getStateBeatLastTransmitTime());
+                break;
+
+            case INFO_TYPE_FIELD_GUARD_IP:
+                result.append(getFieldGuardIP());
+                break;
+
+            case INFO_TYPE_PARKING_IP:
+                result.append(getParkingIP());
+                break;
+
+            case INFO_TYPE_REMOTECALL_IP:
+                result.append(getRemoteCallIP());
+                break;
+        }
+
+        return result.toString();
+    }
+
+
+    // get BootupTime
+    public String getBootupTime() {
+        StringBuilder result = new StringBuilder();
+
+        String bootupTime = TimeUtil.getTimeString(mActivity, System.currentTimeMillis() - SystemClock.elapsedRealtime());
+        result.append(bootupTime);
+
+        if (DEBUG)  Log.d(TAG, "System.currentTimeMillis() : " + System.currentTimeMillis()
+                                + "\n SystemClock.elapsedRealtime() : " + SystemClock.elapsedRealtime()
+                                + "\n BootupTime : " + bootupTime
+                                );
+
+        return result.toString();
+    }
+
+
+    // get HeartBeatInterval
+    public String getHeartBeatInterval() {
+        StringBuilder result = new StringBuilder();
+
+        WallpadStatusData wallpadStatusData = new WallpadStatusData(mActivity);
+        int interval = wallpadStatusData.GetHeartbeatPeriod();
+        result.append(String.valueOf(interval) + " " + mActivity.getString(R.string.minutes));
+        wallpadStatusData.closeDB();
+
+        return result.toString();
+    }
+
+
+    // get HeartBeatLastTransmitTime
+    public String getHeartBeatLastTransmitTime() {
+        StringBuilder result = new StringBuilder();
+
+        WallpadStatusData wallpadStatusData = new WallpadStatusData(mActivity);
+        result.append(wallpadStatusData.GetLastHeartbeat());
+//        result.append(String.valueOf(interval) + " " + mActivity.getString(R.string.minutes));
+        wallpadStatusData.closeDB();
+
+        return result.toString();
+    }
+
+
+    // get StateBeatInterval
+    public String getStateBeatInterval() {
+        StringBuilder result = new StringBuilder();
+
+        WallpadDeviceSet wallpadDeviceSet = new WallpadDeviceSet(mActivity);
+        String[] StatusVal = wallpadDeviceSet.GetSettingData("statusbeat_time");
+        wallpadDeviceSet.closeDB();
+
+        int nInterval = 720;
+        if (StatusVal != null)
+            nInterval = StringUtil.getInt(StatusVal[1], false);
+
+        if (nInterval > -1)
+            result.append(nInterval + " " + mActivity.getString(R.string.minutes));
+
+        return result.toString();
+    }
+
+
+    // get StateBeatLastTransmitTime
+    public String getStateBeatLastTransmitTime() {
+        StringBuilder result = new StringBuilder();
+
+        WallpadStatusData wallpadStatusData = new WallpadStatusData(mActivity);
+        String statusbeatdata = wallpadStatusData.GetLastStatusbeat();
+        wallpadStatusData.closeDB();
+
+        result.append(statusbeatdata);
+
+        return result.toString();
+    }
+
+
+    // get FieldGuardIP
+    public String getFieldGuardIP() {
+        StringBuilder result = new StringBuilder();
+
+        List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_CUSTOMER_SERVICE_GUARD);
+
+        if (InfoList != null) {
+            for (int i=2; i<InfoList.size(); i++) {
+                if (((i + 0) % 2) == 0) {
+                    result.append("\n - ");
+                }
+                else {
+                    result.append(" : ");
+                }
+
+                result.append(InfoList.get(i));
+            }
+        }
+
+        if (DEBUG)  Log.d(TAG, "service guard : " + result);
+
+        return result.toString();
+    }
+
+
+    // get ParkingIP
+    public String getParkingIP() {
+        StringBuilder result = new StringBuilder();
+
+        List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_PARKING);
+        if (InfoList != null) {
+            for (int i=2; i<InfoList.size(); i++) {
+                if (((i + 0) % 2) == 0) {
+                    result.append("\n - ");
+                }
+                else {
+                    result.append(" : ");
+                }
+
+                result.append(InfoList.get(i));
+            }
+        }
+
+        if (DEBUG)  Log.d(TAG, "service guard : " + result);
+
+        return result.toString();
+    }
+
+    // get RemoteCallIP
+    public String getRemoteCallIP() {
+        StringBuilder result = new StringBuilder();
+
+        List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_REMOTE_CALL);
+        if (InfoList != null) {
+            for (int i = 2; i < InfoList.size(); i++) {
+                if (((i + 0) % 2) == 0) {
+                    result.append("\n - ");
+                } else {
+                    result.append(" : ");
+                }
+                result.append(InfoList.get(i));
+            }
+        }
+
+        Log.d(TAG, "[getRemoteCallIP] result [" + result + "]");
+        return result.toString();
+    }
+
+}

+ 243 - 243
ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/QueryGuardInfoFragment.java

@@ -1,243 +1,243 @@
-package com.artncore.managersetting.ui.fragments;
-
-import java.util.List;
-
-import android.app.Activity;
-import android.os.Bundle;
-//import android.support.v4.app.Fragment;
-import androidx.fragment.app.Fragment;
-import androidx.core.view.MotionEventCompat;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.View.OnTouchListener;
-import android.widget.ScrollView;
-import android.widget.TextView;
-
-
-import com.artncore.managersetting.dao.MainDatabaseManager;
-import com.artncore.managersetting.dao.MainDatabaseManager.GuardInfo;
-import com.artncore.managersetting.domain.Const;
-import com.artncore.managersetting.ui.activities.MainActivity;
-import com.artncore.managersetting.util.NetworkUtil;
-import com.artncore.managersetting.util.StringUtil;
-import com.artncore.managersetting.R;
-
-/**
- * A list fragment representing a list of Items. This fragment also supports
- * tablet devices by allowing list items to be given an 'activated' state upon
- * selection. This helps indicate which item is currently being viewed in a
- * {link ItemDetailFragment}.
- * <p>
- * Activities containing this fragment MUST implement the {link Callbacks}
- * interface.
- */
-public class QueryGuardInfoFragment extends Fragment {
-    private static final String TAG = "QueryGuardInfoFragment";
-
-    private final boolean DEBUG = true;
-
-    public final int INFO_TYPE_GUARD_BASE =           Const.COMMON_TYPE_BASE;
-    public final int INFO_TYPE_ALL_GUARD =              INFO_TYPE_GUARD_BASE + 0;
-    public final int INFO_TYPE_JURISDICTIONAL_GUARD =   INFO_TYPE_GUARD_BASE + 1;
-    public final int INFO_TYPE_FRONT_GATE_GUARD =       INFO_TYPE_GUARD_BASE + 2;
-    public final int INFO_TYPE_BACK_GATE_GUARD =        INFO_TYPE_GUARD_BASE + 3;
-    public final int INFO_TYPE_MANAGEMENT_OFFICE =      INFO_TYPE_GUARD_BASE + 4;
-
-
-    private Activity mActivity;
-    private MainDatabaseManager mMainDatabaseManager;
-    private TextView mTV_Result;
-    private int mNumber = 1;
-
-
-    // constructor
-    public QueryGuardInfoFragment() {
-    }
-
-    @Override
-    public void onAttach(Activity activity) {
-        super.onAttach(activity);
-
-        mActivity = activity;
-        mMainDatabaseManager = MainActivity.getMainDatabaseManager();
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        if (DEBUG)  Log.d(TAG, "onCreate() ");
-
-        super.onCreate(savedInstanceState);
-
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-        View rootView = (View) inflater.inflate(R.layout.version_info_container,
-                container, false);
-
-
-        return (View)rootView;
-    }
-
-    @Override
-    public void onViewCreated(View view, Bundle savedInstanceState) {
-        super.onViewCreated(view, savedInstanceState);
-
-        if (savedInstanceState != null) {}
-
-        mTV_Result = (TextView) view.findViewById(R.id.tv_version_info);
-
-        ScrollView mScrollView = (ScrollView) view.findViewById(R.id.tv_version_scrollview);
-        mScrollView.setOnTouchListener(new OnTouchListener() {
-
-            @Override
-            public boolean onTouch(View v, MotionEvent event) {
-                switch (MotionEventCompat.getActionMasked(event)) {
-
-                    case MotionEvent.ACTION_UP:
-                        MainActivity.setFinishTimerReset();
-                        break;
-
-                    default:
-                        break;
-                }
-                return false;
-            }
-        });
-
-        getGuardInfo();
-    }
-
-    @Override
-    public void onDetach() {
-        super.onDetach();
-    }
-
-
-    @Override
-    public void onSaveInstanceState(Bundle outState) {
-        super.onSaveInstanceState(outState);
-    }
-
-
-
-    // get all GuardInfo
-    private void getGuardInfo() {
-        getGuardInfoList();
-
-        showGuardInfo(INFO_TYPE_ALL_GUARD);
-//        showGuardInfo(INFO_TYPE_JURISDICTIONAL_GUARD);
-//        showGuardInfo(INFO_TYPE_FRONT_GATE_GUARD);
-//        showGuardInfo(INFO_TYPE_BACK_GATE_GUARD);
-//        showGuardInfo(INFO_TYPE_MANAGEMENT_OFFICE);
-    }
-
-
-    private List<GuardInfo> mGuardInfoList;
-    // DB에서 GuardInfo를 획득하여, GuardInfoList에 설정
-    private void getGuardInfoList() {
-
-        mMainDatabaseManager.loadGuardList();
-        mGuardInfoList = mMainDatabaseManager.getGuardList();
-
-        if (DEBUG)  Log.d(TAG, "getGuardInfoList() mGuardInfoList.size() : " + mGuardInfoList.size());
-    }
-
-
-    // show GuardInfo
-    private void showGuardInfo(int type) {
-        StringBuilder result = new StringBuilder();
-        //String title = String.valueOf(mNumber++) + ". " ;
-        String title = "" ;
-
-        switch (type) {
-            case INFO_TYPE_ALL_GUARD:
-                result.append(title + getAllGuardInfo());
-                break;
-
-            case INFO_TYPE_JURISDICTIONAL_GUARD:
-                title += mActivity.getString(R.string.guard_info_jurisdictional_guard);
-                result.append(title + queryGuardInfo(type));
-                break;
-
-            case INFO_TYPE_FRONT_GATE_GUARD:
-                title += mActivity.getString(R.string.guard_info_front_gate_guard);
-                result.append(title + queryGuardInfo(type));
-                break;
-
-            case INFO_TYPE_BACK_GATE_GUARD:
-                title += mActivity.getString(R.string.guard_info_back_gate_guard);
-                result.append(title + queryGuardInfo(type));
-                break;
-
-            case INFO_TYPE_MANAGEMENT_OFFICE:
-                title += mActivity.getString(R.string.guard_info_management_office);
-                result.append(title + queryGuardInfo(type));
-                break;
-
-            default:
-                break;
-        }
-
-        mTV_Result.append(result + "\n");
-    }
-
-
-    // query GuardInfo
-    private String queryGuardInfo(int type) {
-        StringBuilder result = new StringBuilder();
-
-        // TO DO
-
-        return result.toString();
-    }
-
-
-    // return all GuardInfo String
-    private String getAllGuardInfo() {
-        StringBuilder result = new StringBuilder();
-
-        if (mGuardInfoList != null && mGuardInfoList.size() > 0) {
-            if (DEBUG)  Log.d(TAG, "mGuardInfoList.size() : " + mGuardInfoList.size());
-
-            for (int i=0; i<mGuardInfoList.size(); i++) {
-                String title = String.valueOf(mNumber++) + ". " ;
-                GuardInfo guardInfo = mGuardInfoList.get(i);
-
-                String strName = guardInfo.getName();
-                String strSipID = guardInfo.getSipID();
-                String strIP = guardInfo.getIP();
-
-                int baseDongIP = NetworkUtil.getDongBaseNumber(mActivity);
-                if (baseDongIP > -1) {
-                    int nDong = StringUtil.getInt(guardInfo.getDong(), false);
-
-                    //nDong = baseDongIP + nDong;
-
-                    String strDongHo = nDong + " " + mActivity.getString(R.string.dong)
-                            + " "
-                            + guardInfo.getHo() + " " + mActivity.getString(R.string.ho);
-
-                    if (DEBUG)  Log.d(TAG, "name : " + strName
-                            + ", strSipID : " + strSipID
-                            + ", strIP : " + strIP
-                            + ", strDongHo : " + strDongHo
-                    );
-
-                    result.append(title + strName + " : " + strSipID
-                            + ", " + strIP
-                            + ", " + strDongHo
-                            + "\n"
-                    );
-                }
-            }
-        }
-
-        return result.toString();
-    }
-
-}
+package com.artncore.managersetting.ui.fragments;
+
+import java.util.List;
+
+import android.app.Activity;
+import android.os.Bundle;
+//import android.support.v4.app.Fragment;
+import androidx.fragment.app.Fragment;
+import androidx.core.view.MotionEventCompat;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.View.OnTouchListener;
+import android.widget.ScrollView;
+import android.widget.TextView;
+
+
+import com.artncore.managersetting.dao.MainDatabaseManager;
+import com.artncore.managersetting.dao.MainDatabaseManager.GuardInfo;
+import com.artncore.managersetting.domain.Const;
+import com.artncore.managersetting.ui.activities.MainActivity;
+import com.artncore.managersetting.util.NetworkUtil;
+import com.artncore.managersetting.util.StringUtil;
+import com.artncore.managersetting.R;
+
+/**
+ * A list fragment representing a list of Items. This fragment also supports
+ * tablet devices by allowing list items to be given an 'activated' state upon
+ * selection. This helps indicate which item is currently being viewed in a
+ * {link ItemDetailFragment}.
+ * <p>
+ * Activities containing this fragment MUST implement the {link Callbacks}
+ * interface.
+ */
+public class QueryGuardInfoFragment extends Fragment {
+    private static final String TAG = "QueryGuardInfoFragment";
+
+    private final boolean DEBUG = true;
+
+    public final int INFO_TYPE_GUARD_BASE =           Const.COMMON_TYPE_BASE;
+    public final int INFO_TYPE_ALL_GUARD =              INFO_TYPE_GUARD_BASE + 0;
+    public final int INFO_TYPE_JURISDICTIONAL_GUARD =   INFO_TYPE_GUARD_BASE + 1;
+    public final int INFO_TYPE_FRONT_GATE_GUARD =       INFO_TYPE_GUARD_BASE + 2;
+    public final int INFO_TYPE_BACK_GATE_GUARD =        INFO_TYPE_GUARD_BASE + 3;
+    public final int INFO_TYPE_MANAGEMENT_OFFICE =      INFO_TYPE_GUARD_BASE + 4;
+
+
+    private Activity mActivity;
+    private MainDatabaseManager mMainDatabaseManager;
+    private TextView mTV_Result;
+    private int mNumber = 1;
+
+
+    // constructor
+    public QueryGuardInfoFragment() {
+    }
+
+    @Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+
+        mActivity = activity;
+        mMainDatabaseManager = MainActivity.getMainDatabaseManager();
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        if (DEBUG)  Log.d(TAG, "onCreate() ");
+
+        super.onCreate(savedInstanceState);
+
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+                             Bundle savedInstanceState) {
+        View rootView = (View) inflater.inflate(R.layout.version_info_container,
+                container, false);
+
+
+        return (View)rootView;
+    }
+
+    @Override
+    public void onViewCreated(View view, Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+
+        if (savedInstanceState != null) {}
+
+        mTV_Result = (TextView) view.findViewById(R.id.tv_version_info);
+
+        ScrollView mScrollView = (ScrollView) view.findViewById(R.id.tv_version_scrollview);
+        mScrollView.setOnTouchListener(new OnTouchListener() {
+
+            @Override
+            public boolean onTouch(View v, MotionEvent event) {
+                switch (MotionEventCompat.getActionMasked(event)) {
+
+                    case MotionEvent.ACTION_UP:
+                        MainActivity.setFinishTimerReset();
+                        break;
+
+                    default:
+                        break;
+                }
+                return false;
+            }
+        });
+
+        getGuardInfo();
+    }
+
+    @Override
+    public void onDetach() {
+        super.onDetach();
+    }
+
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+    }
+
+
+
+    // get all GuardInfo
+    private void getGuardInfo() {
+        getGuardInfoList();
+
+        showGuardInfo(INFO_TYPE_ALL_GUARD);
+//        showGuardInfo(INFO_TYPE_JURISDICTIONAL_GUARD);
+//        showGuardInfo(INFO_TYPE_FRONT_GATE_GUARD);
+//        showGuardInfo(INFO_TYPE_BACK_GATE_GUARD);
+//        showGuardInfo(INFO_TYPE_MANAGEMENT_OFFICE);
+    }
+
+
+    private List<GuardInfo> mGuardInfoList;
+    // DB에서 GuardInfo를 획득하여, GuardInfoList에 설정
+    private void getGuardInfoList() {
+
+        mMainDatabaseManager.loadGuardList();
+        mGuardInfoList = mMainDatabaseManager.getGuardList();
+
+        if (DEBUG)  Log.d(TAG, "getGuardInfoList() mGuardInfoList.size() : " + mGuardInfoList.size());
+    }
+
+
+    // show GuardInfo
+    private void showGuardInfo(int type) {
+        StringBuilder result = new StringBuilder();
+        //String title = String.valueOf(mNumber++) + ". " ;
+        String title = "" ;
+
+        switch (type) {
+            case INFO_TYPE_ALL_GUARD:
+                result.append(title + getAllGuardInfo());
+                break;
+
+            case INFO_TYPE_JURISDICTIONAL_GUARD:
+                title += mActivity.getString(R.string.guard_info_jurisdictional_guard);
+                result.append(title + queryGuardInfo(type));
+                break;
+
+            case INFO_TYPE_FRONT_GATE_GUARD:
+                title += mActivity.getString(R.string.guard_info_front_gate_guard);
+                result.append(title + queryGuardInfo(type));
+                break;
+
+            case INFO_TYPE_BACK_GATE_GUARD:
+                title += mActivity.getString(R.string.guard_info_back_gate_guard);
+                result.append(title + queryGuardInfo(type));
+                break;
+
+            case INFO_TYPE_MANAGEMENT_OFFICE:
+                title += mActivity.getString(R.string.guard_info_management_office);
+                result.append(title + queryGuardInfo(type));
+                break;
+
+            default:
+                break;
+        }
+
+        mTV_Result.append(result + "\n");
+    }
+
+
+    // query GuardInfo
+    private String queryGuardInfo(int type) {
+        StringBuilder result = new StringBuilder();
+
+        // TO DO
+
+        return result.toString();
+    }
+
+
+    // return all GuardInfo String
+    private String getAllGuardInfo() {
+        StringBuilder result = new StringBuilder();
+
+        if (mGuardInfoList != null && mGuardInfoList.size() > 0) {
+            if (DEBUG)  Log.d(TAG, "mGuardInfoList.size() : " + mGuardInfoList.size());
+
+            for (int i=0; i<mGuardInfoList.size(); i++) {
+                String title = String.valueOf(mNumber++) + ". " ;
+                GuardInfo guardInfo = mGuardInfoList.get(i);
+
+                String strName = guardInfo.getName();
+                String strSipID = guardInfo.getSipID();
+                String strIP = guardInfo.getIP();
+
+                int baseDongIP = NetworkUtil.getDongBaseNumber(mActivity);
+                if (baseDongIP > -1) {
+                    int nDong = StringUtil.getInt(guardInfo.getDong(), false);
+
+                    //nDong = baseDongIP + nDong;
+
+                    String strDongHo = nDong + " " + mActivity.getString(R.string.dong)
+                            + " "
+                            + guardInfo.getHo() + " " + mActivity.getString(R.string.ho);
+
+                    if (DEBUG)  Log.d(TAG, "name : " + strName
+                            + ", strSipID : " + strSipID
+                            + ", strIP : " + strIP
+                            + ", strDongHo : " + strDongHo
+                    );
+
+                    result.append(title + strName + " : " + strSipID
+                            + ", " + strIP
+                            + ", " + strDongHo
+                            + "\n"
+                    );
+                }
+            }
+        }
+
+        return result.toString();
+    }
+
+}

+ 389 - 389
ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/QueryStorageInfoFragment.java

@@ -1,389 +1,389 @@
-package com.artncore.managersetting.ui.fragments;
-
-import android.app.Activity;
-import android.app.ActivityManager;
-import android.content.Context;
-import android.os.Bundle;
-//import android.support.v4.app.Fragment;
-import androidx.fragment.app.Fragment;
-import androidx.core.view.MotionEventCompat;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.View.OnTouchListener;
-import android.widget.ScrollView;
-import android.widget.TextView;
-
-
-import com.artncore.managersetting.domain.Const;
-import com.artncore.managersetting.ui.activities.MainActivity;
-import com.artncore.managersetting.util.StorageUtil;
-import com.artncore.managersetting.util.StringUtil;
-import com.artncore.managersetting.R;
-
-/**
- * A list fragment representing a list of Items. This fragment also supports
- * tablet devices by allowing list items to be given an 'activated' state upon
- * selection. This helps indicate which item is currently being viewed in a
- * {link ItemDetailFragment}.
- * <p>
- * Activities containing this fragment MUST implement the {link Callbacks}
- * interface.
- */
-public class QueryStorageInfoFragment extends Fragment {
-    private static final String TAG = "QueryStorageInfoFragment";
-
-    private final boolean DEBUG = true;
-
-    public final int INFO_TYPE_STORAGE_BASE =           Const.COMMON_TYPE_BASE;
-    public final int INFO_TYPE_INTERNAL_STORAGE_TOTAL_SIZE =        INFO_TYPE_STORAGE_BASE + 0;
-    public final int INFO_TYPE_INTERNAL_STORAGE_USED_SIZE =         INFO_TYPE_STORAGE_BASE + 1;
-    public final int INFO_TYPE_INTERNAL_STORAGE_AVAILABLE_SIZE =    INFO_TYPE_STORAGE_BASE + 2;
-
-    public final int INFO_TYPE_USB_STORAGE_0_TOTAL_SIZE =           INFO_TYPE_STORAGE_BASE + 3;
-    public final int INFO_TYPE_USB_STORAGE_0_USED_SIZE =            INFO_TYPE_STORAGE_BASE + 4;
-    public final int INFO_TYPE_USB_STORAGE_0_AVAILABLE_SIZE =       INFO_TYPE_STORAGE_BASE + 5;
-
-    public final int INFO_TYPE_MEMORY_TOTAL_SIZE =                  INFO_TYPE_STORAGE_BASE + 6;
-    public final int INFO_TYPE_MEMORY_USED_SIZE =                   INFO_TYPE_STORAGE_BASE + 7;
-    public final int INFO_TYPE_MEMORY_AVAILABLE_SIZE =              INFO_TYPE_STORAGE_BASE + 8;
-
-    public final String USB_STORAGE_0_PATH = "/storage/usb0";
-
-    private Activity mActivity;
-    private TextView mTV_Result;
-    private int mNumber = 1;
-
-
-    // constructor
-    public QueryStorageInfoFragment() {
-    }
-
-    @Override
-    public void onAttach(Activity activity) {
-        super.onAttach(activity);
-
-        mActivity = activity;
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        if (DEBUG)  Log.d(TAG, "onCreate() ");
-
-        super.onCreate(savedInstanceState);
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-        View rootView = (View) inflater.inflate(R.layout.version_info_container,
-                container, false);
-
-        return (View)rootView;
-    }
-
-    @Override
-    public void onViewCreated(View view, Bundle savedInstanceState) {
-        super.onViewCreated(view, savedInstanceState);
-
-        if (savedInstanceState != null) {}
-
-        mTV_Result = (TextView) view.findViewById(R.id.tv_version_info);
-
-        ScrollView mScrollView = (ScrollView) view.findViewById(R.id.tv_version_scrollview);
-        mScrollView.setOnTouchListener(new OnTouchListener() {
-
-            @Override
-            public boolean onTouch(View v, MotionEvent event) {
-                switch (MotionEventCompat.getActionMasked(event)) {
-
-                    case MotionEvent.ACTION_UP:
-                        MainActivity.setFinishTimerReset();
-                        break;
-
-                    default:
-                        break;
-                }
-                return false;
-            }
-        });
-
-        getStorageInfo();
-    }
-
-    @Override
-    public void onDetach() {
-        super.onDetach();
-    }
-
-
-    @Override
-    public void onSaveInstanceState(Bundle outState) {
-        super.onSaveInstanceState(outState);
-    }
-
-
-
-    // show all StorageInfo
-    private void getStorageInfo() {
-        String title = mActivity.getString(R.string.storage_info_interanl_storage) + "\n";
-        mTV_Result.append(title);
-
-        showVersionInfo(INFO_TYPE_INTERNAL_STORAGE_TOTAL_SIZE);
-        showVersionInfo(INFO_TYPE_INTERNAL_STORAGE_USED_SIZE);
-        showVersionInfo(INFO_TYPE_INTERNAL_STORAGE_AVAILABLE_SIZE);
-
-
-        title = "\n\n" + mActivity.getString(R.string.storage_info_usb_storage) + " ";
-        if (isUSBStorageAvailable(USB_STORAGE_0_PATH)) {
-            title += mActivity.getString(R.string.storage_info_mounted);
-        }
-        else {
-            title += mActivity.getString(R.string.storage_info_unmounted);
-        }
-        title += "\n";
-        mTV_Result.append(title);
-
-        showVersionInfo(INFO_TYPE_USB_STORAGE_0_TOTAL_SIZE);
-        showVersionInfo(INFO_TYPE_USB_STORAGE_0_USED_SIZE);
-        showVersionInfo(INFO_TYPE_USB_STORAGE_0_AVAILABLE_SIZE);
-
-
-        title = "\n\n" + mActivity.getString(R.string.storage_info_memory) + "\n";
-        mTV_Result.append(title);
-
-        showVersionInfo(INFO_TYPE_MEMORY_TOTAL_SIZE);
-        showVersionInfo(INFO_TYPE_MEMORY_USED_SIZE);
-        showVersionInfo(INFO_TYPE_MEMORY_AVAILABLE_SIZE);
-
-    }
-
-
-    // show StorageInfo
-    private void showVersionInfo(int type) {
-        StringBuilder result = new StringBuilder();
-        String title = String.valueOf(mNumber++) + ". " ;
-
-        switch (type) {
-            case INFO_TYPE_INTERNAL_STORAGE_TOTAL_SIZE:
-                title += mActivity.getString(R.string.storage_info_storage_total);
-                result.append(title + queryStorageInfo(type));
-                break;
-
-            case INFO_TYPE_INTERNAL_STORAGE_USED_SIZE:
-                title += mActivity.getString(R.string.storage_info_storage_used);
-                result.append(title + queryStorageInfo(type));
-                break;
-
-            case INFO_TYPE_INTERNAL_STORAGE_AVAILABLE_SIZE:
-                title += mActivity.getString(R.string.storage_info_storage_available);
-                result.append(title + queryStorageInfo(type));
-                break;
-
-            case INFO_TYPE_USB_STORAGE_0_TOTAL_SIZE:
-                title += mActivity.getString(R.string.storage_info_storage_total);
-                result.append(title + queryStorageInfo(type));
-                break;
-
-            case INFO_TYPE_USB_STORAGE_0_USED_SIZE:
-                title += mActivity.getString(R.string.storage_info_storage_used);
-                result.append(title + queryStorageInfo(type));
-                break;
-
-            case INFO_TYPE_USB_STORAGE_0_AVAILABLE_SIZE:
-                title += mActivity.getString(R.string.storage_info_storage_available);
-                result.append(title + queryStorageInfo(type));
-                break;
-
-            case INFO_TYPE_MEMORY_TOTAL_SIZE:
-                title += mActivity.getString(R.string.storage_info_storage_total);
-                result.append(title + queryStorageInfo(type));
-                break;
-
-            case INFO_TYPE_MEMORY_USED_SIZE:
-                title += mActivity.getString(R.string.storage_info_storage_used);
-                result.append(title + queryStorageInfo(type));
-                break;
-
-            case INFO_TYPE_MEMORY_AVAILABLE_SIZE:
-                title += mActivity.getString(R.string.storage_info_storage_available);
-                result.append(title + queryStorageInfo(type));
-                break;
-
-            default:
-                break;
-        }
-
-        mTV_Result.append(result + "\n");
-    }
-
-
-    // query StorageInfo
-    private String queryStorageInfo(int type) {
-        StringBuilder result = new StringBuilder();
-
-        switch(type) {
-            case INFO_TYPE_INTERNAL_STORAGE_TOTAL_SIZE:
-                result.append(StringUtil.formatSize(StorageUtil.getTotalInternalStorageSize()));
-                break;
-
-            case INFO_TYPE_INTERNAL_STORAGE_USED_SIZE:
-                result.append(StringUtil.formatSize(StorageUtil.getTotalInternalStorageSize() - StorageUtil.getAvailableInternalStorageSize()));
-                break;
-
-            case INFO_TYPE_INTERNAL_STORAGE_AVAILABLE_SIZE:
-                result.append(StringUtil.formatSize(StorageUtil.getAvailableInternalStorageSize()));
-                break;
-
-            case INFO_TYPE_USB_STORAGE_0_TOTAL_SIZE:
-                result.append(StringUtil.formatSize(StorageUtil.getTotalUSBStorageSize(USB_STORAGE_0_PATH)));
-                break;
-
-            case INFO_TYPE_USB_STORAGE_0_USED_SIZE:
-                result.append(StringUtil.formatSize(StorageUtil.getTotalUSBStorageSize(USB_STORAGE_0_PATH) - StorageUtil.getAvailableUSBStorageSize(USB_STORAGE_0_PATH)));
-                break;
-
-            case INFO_TYPE_USB_STORAGE_0_AVAILABLE_SIZE:
-                result.append(StringUtil.formatSize(StorageUtil.getAvailableUSBStorageSize(USB_STORAGE_0_PATH)));
-                break;
-
-            case INFO_TYPE_MEMORY_TOTAL_SIZE:
-                result.append(StringUtil.formatSize(getMemResource(mActivity).getTotal()));
-                break;
-
-            case INFO_TYPE_MEMORY_USED_SIZE:
-                result.append(StringUtil.formatSize(getMemResource(mActivity).getUsed()));
-                break;
-
-            case INFO_TYPE_MEMORY_AVAILABLE_SIZE:
-                result.append(StringUtil.formatSize(getMemResource(mActivity).getAvail()));
-                break;
-        }
-
-        return result.toString();
-    }
-
-
-
-
-//    private String formatSize(long size) {
-//        return Formatter.formatFileSize(this, size);
-//    }
-
-
-    // 해당 path의 mount 여부를 return
-    private boolean isUSBStorageAvailable(String path) {
-        return StorageUtil.isStorageMounted(path);
-    }
-
-
-/*
-    private boolean isExternalStorageAvailable() {
-        return android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
-    }
-
-
-    private long getAvailableExternalStorageSize() {
-        if (isExternalStorageAvailable()) {
-            File path = Environment.getExternalStorageDirectory();
-            StatFs stat = new StatFs(path.getPath());
-            long blockSize = stat.getBlockSize();
-            long availableBlocks = stat.getAvailableBlocks();
-
-            if (DEBUG)  Log.d(TAG, "external Path : " + path);
-
-            return availableBlocks * blockSize;
-        }
-
-        return 0;
-    }
-
-
-    private long getTotalExternalStorageSize() {
-        if (isExternalStorageAvailable()) {
-            File path = Environment.getExternalStorageDirectory();
-            StatFs stat = new StatFs(path.getPath());
-            long blockSize = stat.getBlockSize();
-            long totalBlocks = stat.getBlockCount();
-
-            if (DEBUG)  Log.d(TAG, "external Path : " + path);
-
-            return totalBlocks * blockSize;
-        }
-
-        return 0;
-    }
-*/
-
-
-
-
-
-
-
-
-
-
-
-
-    // return Memory Resource
-    public MemResource getMemResource(Context context) {
-
-        ActivityManager activityManager = (ActivityManager) context.getSystemService(context.ACTIVITY_SERVICE);
-        ActivityManager.MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();
-        activityManager.getMemoryInfo(memoryInfo);
-
-        MemResource meminfo = new MemResource();
-        meminfo.setTotal(memoryInfo.totalMem);
-        meminfo.setAvail(memoryInfo.availMem);
-
-        return meminfo;
-    }
-
-
-    public class MemResource {
-        private long mAvailSize;
-        private long mTotalSize;
-
-        public long getAvail() {
-            // return changeHumanValue(mAvailSize);
-            return mAvailSize;
-        }
-
-        public void setAvail(long avail) {
-            this.mAvailSize = avail;
-        }
-
-        public long getUsed() {
-            //return changeHumanValue(total);
-            return (mTotalSize - mAvailSize);
-        }
-
-        public long getTotal() {
-            //return changeHumanValue(mTotalSize);
-            return mTotalSize;
-        }
-
-        public void setTotal(long total) {
-            this.mTotalSize = total;
-        }
-
-        // value를 Mega or Giga 로 변환하여 return
-        private String changeHumanValue(long value) {
-            String humanValue;
-            value = (int)(value / (1000 * 1000));
-            if (value > 1024) {
-                humanValue = (int)(value / 1024) + "";
-                humanValue += "." + value % 1024 + "G";
-            } else {
-                humanValue = value + "M";
-            }
-            return humanValue;
-        }
-    }
-
-
-
-}
+package com.artncore.managersetting.ui.fragments;
+
+import android.app.Activity;
+import android.app.ActivityManager;
+import android.content.Context;
+import android.os.Bundle;
+//import android.support.v4.app.Fragment;
+import androidx.fragment.app.Fragment;
+import androidx.core.view.MotionEventCompat;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.View.OnTouchListener;
+import android.widget.ScrollView;
+import android.widget.TextView;
+
+
+import com.artncore.managersetting.domain.Const;
+import com.artncore.managersetting.ui.activities.MainActivity;
+import com.artncore.managersetting.util.StorageUtil;
+import com.artncore.managersetting.util.StringUtil;
+import com.artncore.managersetting.R;
+
+/**
+ * A list fragment representing a list of Items. This fragment also supports
+ * tablet devices by allowing list items to be given an 'activated' state upon
+ * selection. This helps indicate which item is currently being viewed in a
+ * {link ItemDetailFragment}.
+ * <p>
+ * Activities containing this fragment MUST implement the {link Callbacks}
+ * interface.
+ */
+public class QueryStorageInfoFragment extends Fragment {
+    private static final String TAG = "QueryStorageInfoFragment";
+
+    private final boolean DEBUG = true;
+
+    public final int INFO_TYPE_STORAGE_BASE =           Const.COMMON_TYPE_BASE;
+    public final int INFO_TYPE_INTERNAL_STORAGE_TOTAL_SIZE =        INFO_TYPE_STORAGE_BASE + 0;
+    public final int INFO_TYPE_INTERNAL_STORAGE_USED_SIZE =         INFO_TYPE_STORAGE_BASE + 1;
+    public final int INFO_TYPE_INTERNAL_STORAGE_AVAILABLE_SIZE =    INFO_TYPE_STORAGE_BASE + 2;
+
+    public final int INFO_TYPE_USB_STORAGE_0_TOTAL_SIZE =           INFO_TYPE_STORAGE_BASE + 3;
+    public final int INFO_TYPE_USB_STORAGE_0_USED_SIZE =            INFO_TYPE_STORAGE_BASE + 4;
+    public final int INFO_TYPE_USB_STORAGE_0_AVAILABLE_SIZE =       INFO_TYPE_STORAGE_BASE + 5;
+
+    public final int INFO_TYPE_MEMORY_TOTAL_SIZE =                  INFO_TYPE_STORAGE_BASE + 6;
+    public final int INFO_TYPE_MEMORY_USED_SIZE =                   INFO_TYPE_STORAGE_BASE + 7;
+    public final int INFO_TYPE_MEMORY_AVAILABLE_SIZE =              INFO_TYPE_STORAGE_BASE + 8;
+
+    public final String USB_STORAGE_0_PATH = "/storage/usb0";
+
+    private Activity mActivity;
+    private TextView mTV_Result;
+    private int mNumber = 1;
+
+
+    // constructor
+    public QueryStorageInfoFragment() {
+    }
+
+    @Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+
+        mActivity = activity;
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        if (DEBUG)  Log.d(TAG, "onCreate() ");
+
+        super.onCreate(savedInstanceState);
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+                             Bundle savedInstanceState) {
+        View rootView = (View) inflater.inflate(R.layout.version_info_container,
+                container, false);
+
+        return (View)rootView;
+    }
+
+    @Override
+    public void onViewCreated(View view, Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+
+        if (savedInstanceState != null) {}
+
+        mTV_Result = (TextView) view.findViewById(R.id.tv_version_info);
+
+        ScrollView mScrollView = (ScrollView) view.findViewById(R.id.tv_version_scrollview);
+        mScrollView.setOnTouchListener(new OnTouchListener() {
+
+            @Override
+            public boolean onTouch(View v, MotionEvent event) {
+                switch (MotionEventCompat.getActionMasked(event)) {
+
+                    case MotionEvent.ACTION_UP:
+                        MainActivity.setFinishTimerReset();
+                        break;
+
+                    default:
+                        break;
+                }
+                return false;
+            }
+        });
+
+        getStorageInfo();
+    }
+
+    @Override
+    public void onDetach() {
+        super.onDetach();
+    }
+
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+    }
+
+
+
+    // show all StorageInfo
+    private void getStorageInfo() {
+        String title = mActivity.getString(R.string.storage_info_interanl_storage) + "\n";
+        mTV_Result.append(title);
+
+        showVersionInfo(INFO_TYPE_INTERNAL_STORAGE_TOTAL_SIZE);
+        showVersionInfo(INFO_TYPE_INTERNAL_STORAGE_USED_SIZE);
+        showVersionInfo(INFO_TYPE_INTERNAL_STORAGE_AVAILABLE_SIZE);
+
+
+        title = "\n\n" + mActivity.getString(R.string.storage_info_usb_storage) + " ";
+        if (isUSBStorageAvailable(USB_STORAGE_0_PATH)) {
+            title += mActivity.getString(R.string.storage_info_mounted);
+        }
+        else {
+            title += mActivity.getString(R.string.storage_info_unmounted);
+        }
+        title += "\n";
+        mTV_Result.append(title);
+
+        showVersionInfo(INFO_TYPE_USB_STORAGE_0_TOTAL_SIZE);
+        showVersionInfo(INFO_TYPE_USB_STORAGE_0_USED_SIZE);
+        showVersionInfo(INFO_TYPE_USB_STORAGE_0_AVAILABLE_SIZE);
+
+
+        title = "\n\n" + mActivity.getString(R.string.storage_info_memory) + "\n";
+        mTV_Result.append(title);
+
+        showVersionInfo(INFO_TYPE_MEMORY_TOTAL_SIZE);
+        showVersionInfo(INFO_TYPE_MEMORY_USED_SIZE);
+        showVersionInfo(INFO_TYPE_MEMORY_AVAILABLE_SIZE);
+
+    }
+
+
+    // show StorageInfo
+    private void showVersionInfo(int type) {
+        StringBuilder result = new StringBuilder();
+        String title = String.valueOf(mNumber++) + ". " ;
+
+        switch (type) {
+            case INFO_TYPE_INTERNAL_STORAGE_TOTAL_SIZE:
+                title += mActivity.getString(R.string.storage_info_storage_total);
+                result.append(title + queryStorageInfo(type));
+                break;
+
+            case INFO_TYPE_INTERNAL_STORAGE_USED_SIZE:
+                title += mActivity.getString(R.string.storage_info_storage_used);
+                result.append(title + queryStorageInfo(type));
+                break;
+
+            case INFO_TYPE_INTERNAL_STORAGE_AVAILABLE_SIZE:
+                title += mActivity.getString(R.string.storage_info_storage_available);
+                result.append(title + queryStorageInfo(type));
+                break;
+
+            case INFO_TYPE_USB_STORAGE_0_TOTAL_SIZE:
+                title += mActivity.getString(R.string.storage_info_storage_total);
+                result.append(title + queryStorageInfo(type));
+                break;
+
+            case INFO_TYPE_USB_STORAGE_0_USED_SIZE:
+                title += mActivity.getString(R.string.storage_info_storage_used);
+                result.append(title + queryStorageInfo(type));
+                break;
+
+            case INFO_TYPE_USB_STORAGE_0_AVAILABLE_SIZE:
+                title += mActivity.getString(R.string.storage_info_storage_available);
+                result.append(title + queryStorageInfo(type));
+                break;
+
+            case INFO_TYPE_MEMORY_TOTAL_SIZE:
+                title += mActivity.getString(R.string.storage_info_storage_total);
+                result.append(title + queryStorageInfo(type));
+                break;
+
+            case INFO_TYPE_MEMORY_USED_SIZE:
+                title += mActivity.getString(R.string.storage_info_storage_used);
+                result.append(title + queryStorageInfo(type));
+                break;
+
+            case INFO_TYPE_MEMORY_AVAILABLE_SIZE:
+                title += mActivity.getString(R.string.storage_info_storage_available);
+                result.append(title + queryStorageInfo(type));
+                break;
+
+            default:
+                break;
+        }
+
+        mTV_Result.append(result + "\n");
+    }
+
+
+    // query StorageInfo
+    private String queryStorageInfo(int type) {
+        StringBuilder result = new StringBuilder();
+
+        switch(type) {
+            case INFO_TYPE_INTERNAL_STORAGE_TOTAL_SIZE:
+                result.append(StringUtil.formatSize(StorageUtil.getTotalInternalStorageSize()));
+                break;
+
+            case INFO_TYPE_INTERNAL_STORAGE_USED_SIZE:
+                result.append(StringUtil.formatSize(StorageUtil.getTotalInternalStorageSize() - StorageUtil.getAvailableInternalStorageSize()));
+                break;
+
+            case INFO_TYPE_INTERNAL_STORAGE_AVAILABLE_SIZE:
+                result.append(StringUtil.formatSize(StorageUtil.getAvailableInternalStorageSize()));
+                break;
+
+            case INFO_TYPE_USB_STORAGE_0_TOTAL_SIZE:
+                result.append(StringUtil.formatSize(StorageUtil.getTotalUSBStorageSize(USB_STORAGE_0_PATH)));
+                break;
+
+            case INFO_TYPE_USB_STORAGE_0_USED_SIZE:
+                result.append(StringUtil.formatSize(StorageUtil.getTotalUSBStorageSize(USB_STORAGE_0_PATH) - StorageUtil.getAvailableUSBStorageSize(USB_STORAGE_0_PATH)));
+                break;
+
+            case INFO_TYPE_USB_STORAGE_0_AVAILABLE_SIZE:
+                result.append(StringUtil.formatSize(StorageUtil.getAvailableUSBStorageSize(USB_STORAGE_0_PATH)));
+                break;
+
+            case INFO_TYPE_MEMORY_TOTAL_SIZE:
+                result.append(StringUtil.formatSize(getMemResource(mActivity).getTotal()));
+                break;
+
+            case INFO_TYPE_MEMORY_USED_SIZE:
+                result.append(StringUtil.formatSize(getMemResource(mActivity).getUsed()));
+                break;
+
+            case INFO_TYPE_MEMORY_AVAILABLE_SIZE:
+                result.append(StringUtil.formatSize(getMemResource(mActivity).getAvail()));
+                break;
+        }
+
+        return result.toString();
+    }
+
+
+
+
+//    private String formatSize(long size) {
+//        return Formatter.formatFileSize(this, size);
+//    }
+
+
+    // 해당 path의 mount 여부를 return
+    private boolean isUSBStorageAvailable(String path) {
+        return StorageUtil.isStorageMounted(path);
+    }
+
+
+/*
+    private boolean isExternalStorageAvailable() {
+        return android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
+    }
+
+
+    private long getAvailableExternalStorageSize() {
+        if (isExternalStorageAvailable()) {
+            File path = Environment.getExternalStorageDirectory();
+            StatFs stat = new StatFs(path.getPath());
+            long blockSize = stat.getBlockSize();
+            long availableBlocks = stat.getAvailableBlocks();
+
+            if (DEBUG)  Log.d(TAG, "external Path : " + path);
+
+            return availableBlocks * blockSize;
+        }
+
+        return 0;
+    }
+
+
+    private long getTotalExternalStorageSize() {
+        if (isExternalStorageAvailable()) {
+            File path = Environment.getExternalStorageDirectory();
+            StatFs stat = new StatFs(path.getPath());
+            long blockSize = stat.getBlockSize();
+            long totalBlocks = stat.getBlockCount();
+
+            if (DEBUG)  Log.d(TAG, "external Path : " + path);
+
+            return totalBlocks * blockSize;
+        }
+
+        return 0;
+    }
+*/
+
+
+
+
+
+
+
+
+
+
+
+
+    // return Memory Resource
+    public MemResource getMemResource(Context context) {
+
+        ActivityManager activityManager = (ActivityManager) context.getSystemService(context.ACTIVITY_SERVICE);
+        ActivityManager.MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();
+        activityManager.getMemoryInfo(memoryInfo);
+
+        MemResource meminfo = new MemResource();
+        meminfo.setTotal(memoryInfo.totalMem);
+        meminfo.setAvail(memoryInfo.availMem);
+
+        return meminfo;
+    }
+
+
+    public class MemResource {
+        private long mAvailSize;
+        private long mTotalSize;
+
+        public long getAvail() {
+            // return changeHumanValue(mAvailSize);
+            return mAvailSize;
+        }
+
+        public void setAvail(long avail) {
+            this.mAvailSize = avail;
+        }
+
+        public long getUsed() {
+            //return changeHumanValue(total);
+            return (mTotalSize - mAvailSize);
+        }
+
+        public long getTotal() {
+            //return changeHumanValue(mTotalSize);
+            return mTotalSize;
+        }
+
+        public void setTotal(long total) {
+            this.mTotalSize = total;
+        }
+
+        // value를 Mega or Giga 로 변환하여 return
+        private String changeHumanValue(long value) {
+            String humanValue;
+            value = (int)(value / (1000 * 1000));
+            if (value > 1024) {
+                humanValue = (int)(value / 1024) + "";
+                humanValue += "." + value % 1024 + "G";
+            } else {
+                humanValue = value + "M";
+            }
+            return humanValue;
+        }
+    }
+
+
+
+}

+ 943 - 953
ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/QueryVersionInfoFragment.java

@@ -1,953 +1,943 @@
-package com.artncore.managersetting.ui.fragments;
-
-import java.net.Inet4Address;
-import java.net.Inet6Address;
-import java.net.InetAddress;
-import java.net.NetworkInterface;
-import java.net.SocketException;
-import java.util.Enumeration;
-
-import kr.co.icontrols.wallpadsupport.Version;
-
-import android.annotation.SuppressLint;
-import android.app.Activity;
-import android.os.Build;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-//import android.support.v4.app.Fragment;
-import androidx.fragment.app.Fragment;
-import androidx.core.view.MotionEventCompat;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.View.OnTouchListener;
-import android.view.ViewGroup;
-import android.widget.ScrollView;
-import android.widget.TextView;
-
-import com.artncore.WallPadDataMgr.WallpadDeviceSet;
-import com.artncore.WallPadDataMgr.WallpadStatusData;
-import com.artncore.WallPadDataMgr.wallpaddbmgr;
-import com.artncore.WallPadDataMgr.wallpaddbmgr.AddressSet;
-import com.artncore.WallPadDataMgr.wallpaddbmgr.AddressSetBackup;
-import com.artncore.managersetting.dao.MainDatabaseManager;
-import com.artncore.managersetting.domain.Const;
-import com.artncore.managersetting.ui.activities.MainActivity;
-import com.artncore.managersetting.util.NetworkUtil;
-import com.artncore.managersetting.R;
-import com.artncore.wallpadapi.IGW200dAPI;
-import com.artncore.wallpadapi.WallPadAPI;
-import com.util.LogUtil;
-
-/**
- * A list fragment representing a list of Items. This fragment also supports
- * tablet devices by allowing list items to be given an 'activated' state upon
- * selection. This helps indicate which item is currently being viewed in a
- * {link ItemDetailFragment}.
- * <p>
- * Activities containing this fragment MUST implement the {link Callbacks}
- * interface.
- */
-public class QueryVersionInfoFragment extends Fragment {
-    private static final String TAG = "QueryVersionInfoFragment";
-
-    private final boolean DEBUG = true;
-
-    public final int INFO_TYPE_VERSION_BASE =   Const.COMMON_TYPE_BASE;
-    public final int INFO_TYPE_DONGHO =         INFO_TYPE_VERSION_BASE + 0;
-    public final int INFO_TYPE_IP =             INFO_TYPE_VERSION_BASE + 1;
-    public final int INFO_TYPE_SUBNET_MASK =    INFO_TYPE_VERSION_BASE + 2;
-    public final int INFO_TYPE_GATEWAY_IP =     INFO_TYPE_VERSION_BASE + 3;
-    public final int INFO_TYPE_SITE_CODE =      INFO_TYPE_VERSION_BASE + 4;
-
-
-
-    public final int INFO_TYPE_OS =             INFO_TYPE_VERSION_BASE + 100;
-    public final int INFO_TYPE_APPS =           INFO_TYPE_VERSION_BASE + 101;
-
-
-    public final int INFO_TYPE_APPS_MAIN =              INFO_TYPE_VERSION_BASE + 102;
-    public final int INFO_TYPE_APPS_CALL =              INFO_TYPE_VERSION_BASE + 103;
-    //    public final int INFO_TYPE_APPS_SIP_CALL =          INFO_TYPE_VERSION_BASE + 104;
-    public final int INFO_TYPE_APPS_MANAGER =           INFO_TYPE_VERSION_BASE + 105;
-
-    public final int INFO_TYPE_APPS_WALLPADCONFIG =     INFO_TYPE_VERSION_BASE + 106;
-    public final int INFO_TYPE_APPS_DEVICESERVICE =     INFO_TYPE_VERSION_BASE + 107;
-    public final int INFO_TYPE_APPS_WALLPADEMERGENCY =  INFO_TYPE_VERSION_BASE + 108;
-    public final int INFO_TYPE_APPS_WALLPADENERGYCTRL = INFO_TYPE_VERSION_BASE + 109;
-    public final int INFO_TYPE_APPS_WALLPADHOMECTRL =   INFO_TYPE_VERSION_BASE + 110;
-    public final int INFO_TYPE_APPS_WALLPADOUTMODERUN = INFO_TYPE_VERSION_BASE + 111;
-    public final int INFO_TYPE_APPS_WALLPADSECURITY =   INFO_TYPE_VERSION_BASE + 112;
-    public final int INFO_TYPE_APPS_WALLPADADDSERVICE = INFO_TYPE_VERSION_BASE + 113;
-    public final int INFO_TYPE_APPS_WALLPADAUTOPICTURE = INFO_TYPE_VERSION_BASE + 114;
-
-    public final int INFO_TYPE_APPS_LOGOUTPUT = INFO_TYPE_VERSION_BASE + 115;
-    public final int INFO_TYPE_APPS_UPDATER = INFO_TYPE_VERSION_BASE + 116;
-    public final int INFO_TYPE_APPS_APPUPDATER = INFO_TYPE_VERSION_BASE + 117;
-
-
-
-    public final int INFO_TYPE_SETTING_VER =    INFO_TYPE_VERSION_BASE + 201;
-    public final int INFO_TYPE_NOTICE_VER =     INFO_TYPE_VERSION_BASE + 202;
-    public final int INFO_TYPE_WEATHER_VER =    INFO_TYPE_VERSION_BASE + 203;
-
-    public final int INFO_TYPE_ADDITIONAL_VER = INFO_TYPE_VERSION_BASE + 204;
-
-    public final int INFO_TYPE_SUB_BOARD_VER =  INFO_TYPE_VERSION_BASE + 205;
-    public final int INFO_TYPE_HEARTBEAT_GATEWAY_VER =  INFO_TYPE_VERSION_BASE + 206;
-    public final int INFO_TYPE_NEWS_VER =       INFO_TYPE_VERSION_BASE + 207;
-    public final int INFO_TYPE_GATEWAY_VER =    INFO_TYPE_VERSION_BASE + 208;
-
-    public final int INFO_TYPE_LH_GATEWAY_INFO = INFO_TYPE_VERSION_BASE + 209;
-
-    public final int INFO_TYPE_MODEL_NAME = INFO_TYPE_VERSION_BASE + 210;
-
-    private Activity mActivity;
-    private MainDatabaseManager mMainDatabaseManager;
-
-    private TextView mTV_Result;
-    private int mNumber = 1;
-
-    private int ModelType = Version.getModelType();
-    //private int ModelType = Version.MODEL_TYPE.IHN_1020B_A;
-
-    private IGW200dAPI iGW200dAPI = null;
-    private WallPadAPI m_wpapi = null;
-
-    // constructor
-    public QueryVersionInfoFragment() {
-    }
-
-    @Override
-    public void onAttach(Activity activity) {
-        super.onAttach(activity);
-
-        mActivity = activity;
-        mMainDatabaseManager = MainActivity.getMainDatabaseManager();
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState)
-    {
-        if (DEBUG) Log.d(TAG, "onCreate() ");
-        super.onCreate(savedInstanceState);
-
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-        View rootView = (View) inflater.inflate(R.layout.version_info_container,
-                container, false);
-
-        return (View) rootView;
-    }
-
-    @Override
-    public void onViewCreated(View view, Bundle savedInstanceState) {
-        super.onViewCreated(view, savedInstanceState);
-
-        if (savedInstanceState != null) {
-        }
-
-        mTV_Result = (TextView) view.findViewById(R.id.tv_version_info);
-
-        ScrollView mScrollView = (ScrollView) view.findViewById(R.id.tv_version_scrollview);
-        mScrollView.setOnTouchListener(new OnTouchListener() {
-
-            @Override
-            public boolean onTouch(View v, MotionEvent event) {
-                switch (MotionEventCompat.getActionMasked(event)) {
-
-                    case MotionEvent.ACTION_UP:
-                        MainActivity.setFinishTimerReset();
-                        break;
-
-                    default:
-                        break;
-                }
-                return false;
-            }
-        });
-
-
-    }
-
-
-    @Override
-    public void onResume() {
-        if (DEBUG) Log.d(TAG, "onResume() ");
-
-        super.onResume();
-
-        mTV_Result.setText("");
-        mNumber = 1;
-
-        getVersionInfo();
-    }
-
-
-    @Override
-    public void onPause() {
-        if (DEBUG) Log.d(TAG, "onPause() ");
-
-        super.onPause();
-    }
-
-
-    @Override
-    public void onDetach() {
-        super.onDetach();
-    }
-
-
-    @Override
-    public void onSaveInstanceState(Bundle outState) {
-        super.onSaveInstanceState(outState);
-    }
-
-    // show all VersionInfo
-    private void getVersionInfo() {
-
-        if (ModelType == Version.MODEL_TYPE.IHN_1020GL)
-        {
-            m_wpapi = MainActivity.getWallPadAPI();
-            mIntDriverCheckHandler.sendEmptyMessage(0);
-        }
-
-        showVersionInfo(INFO_TYPE_DONGHO);
-        showVersionInfo(INFO_TYPE_IP);
-        showVersionInfo(INFO_TYPE_SUBNET_MASK);
-        showVersionInfo(INFO_TYPE_GATEWAY_IP);
-
-        showVersionInfo(INFO_TYPE_SITE_CODE);
-        showVersionInfo(INFO_TYPE_MODEL_NAME);
-
-        showVersionInfo(INFO_TYPE_OS);
-        showVersionInfo(INFO_TYPE_APPS);
-
-        showVersionInfo(INFO_TYPE_APPS_MAIN);
-        showVersionInfo(INFO_TYPE_APPS_CALL);
-//        showVersionInfo(INFO_TYPE_APPS_SIP_CALL);
-        showVersionInfo(INFO_TYPE_APPS_MANAGER);
-        showVersionInfo(INFO_TYPE_APPS_WALLPADCONFIG);
-        showVersionInfo(INFO_TYPE_APPS_DEVICESERVICE);
-        showVersionInfo(INFO_TYPE_APPS_WALLPADEMERGENCY);
-        showVersionInfo(INFO_TYPE_APPS_WALLPADENERGYCTRL);
-        showVersionInfo(INFO_TYPE_APPS_WALLPADHOMECTRL);
-        showVersionInfo(INFO_TYPE_APPS_WALLPADOUTMODERUN);
-        showVersionInfo(INFO_TYPE_APPS_WALLPADSECURITY);
-        showVersionInfo(INFO_TYPE_APPS_WALLPADADDSERVICE);
-
-        showVersionInfo(INFO_TYPE_APPS_WALLPADAUTOPICTURE);
-        showVersionInfo(INFO_TYPE_APPS_LOGOUTPUT);
-        showVersionInfo(INFO_TYPE_APPS_UPDATER);
-        showVersionInfo(INFO_TYPE_APPS_APPUPDATER);
-
-        showVersionInfo(INFO_TYPE_SETTING_VER);
-        showVersionInfo(INFO_TYPE_NOTICE_VER);
-        showVersionInfo(INFO_TYPE_WEATHER_VER);
-        showVersionInfo(INFO_TYPE_ADDITIONAL_VER);
-
-
-        showVersionInfo(INFO_TYPE_SUB_BOARD_VER);
-        showVersionInfo(INFO_TYPE_HEARTBEAT_GATEWAY_VER);
-        showVersionInfo(INFO_TYPE_NEWS_VER);
-
-        if (ModelType == Version.MODEL_TYPE.IHN_1020GL)
-        {
-            showVersionInfo(INFO_TYPE_GATEWAY_VER);
-        }
-
-        if (ModelType == Version.MODEL_TYPE.IHN_1020SA_A)
-        {
-            showVersionInfo(INFO_TYPE_LH_GATEWAY_INFO);
-        }
-
-        WallpadDeviceSet devSet = new WallpadDeviceSet(mActivity.getApplicationContext());
-        String[] DBinfo = devSet.GetSettingData("게이트웨이");
-        devSet.closeDB();
-        if (DBinfo != null)
-        {
-            if (DBinfo[1].indexOf("사용함") > 0)
-            {
-                showVersionInfo(INFO_TYPE_LH_GATEWAY_INFO);
-            }
-        }
-
-    }
-
-
-    // show VersionInfo
-    private void showVersionInfo(int type) {
-        StringBuilder result = new StringBuilder();
-        String title = String.valueOf(mNumber++) + ". ";
-
-        switch (type) {
-            case INFO_TYPE_DONGHO:
-                title += "";
-                result.append(title + queryDongHo());
-                break;
-
-            case INFO_TYPE_IP:
-                title += mActivity.getString(R.string.version_info_ip);
-                result.append(title + getIPAddress()); //getLocalIPAddress();
-                break;
-
-            case INFO_TYPE_SUBNET_MASK:
-                title += mActivity.getString(R.string.version_info_subnet_mask);
-                result.append(title + getSubnetMask());
-                break;
-
-            case INFO_TYPE_GATEWAY_IP:
-                title += mActivity.getString(R.string.version_info_gateway_ip);
-                result.append(title + getGateWayIP());
-                break;
-
-            case INFO_TYPE_SITE_CODE:
-                title += mActivity.getString(R.string.version_info_site_code);
-                result.append(title + getSiteCodeVersion());
-                result.append("\n");
-                break;
-
-
-            case INFO_TYPE_OS:
-                title += mActivity.getString(R.string.version_info_os_ver);
-                result.append(title + getOSVersion());
-                break;
-
-            case INFO_TYPE_APPS:
-                title += mActivity.getString(R.string.version_info_apps_ver);
-                result.append(title + getAppsVersion(MainDatabaseManager.SETTING_ITEM_APP_WALLPADMAIN));
-                result.append("\n");
-                break;
-
-            case INFO_TYPE_APPS_MAIN:
-                title += mActivity.getString(R.string.version_info_apps_main_ver);
-                result.append(title + getAppsVersion(MainDatabaseManager.SETTING_ITEM_APP_WALLPADMAIN));
-                break;
-
-            case INFO_TYPE_APPS_CALL:
-                title += mActivity.getString(R.string.version_info_apps_call_ver);
-                result.append(title + getAppsVersion(MainDatabaseManager.SETTING_ITEM_APP_IC_WALLPAD));
-                break;
-
-/*
-            case INFO_TYPE_APPS_SIP_CALL:
-                title += mActivity.getString(R.string.version_info_apps_sip_call_ver);
-                result.append(title + getAppsVersion(type));
-                break;
-*/
-            case INFO_TYPE_APPS_MANAGER:
-                title += mActivity.getString(R.string.version_info_apps_manager_ver);
-                result.append(title + getAppsVersion(MainDatabaseManager.SETTING_ITEM_APP_MANAGERSETTING));
-                break;
-
-
-            case INFO_TYPE_APPS_WALLPADCONFIG:
-                title += mActivity.getString(R.string.version_info_apps_wallpadconfig_ver);
-                result.append(title + getAppsVersion(MainDatabaseManager.SETTING_ITEM_APP_WALLPADCONFIG));
-                break;
-
-            case INFO_TYPE_APPS_DEVICESERVICE:
-                title += mActivity.getString(R.string.version_info_apps_deviceservice_ver);
-                result.append(title + getAppsVersion(MainDatabaseManager.SETTING_ITEM_APP_DEVICESERVICE));
-                break;
-
-            case INFO_TYPE_APPS_WALLPADEMERGENCY:
-                title += mActivity.getString(R.string.version_info_apps_wallpademergency_ver);
-                result.append(title + getAppsVersion(MainDatabaseManager.SETTING_ITEM_APP_WALLPADEMERGENCY));
-                break;
-
-            case INFO_TYPE_APPS_WALLPADENERGYCTRL:
-                title += mActivity.getString(R.string.version_info_apps_wallpadenergyctrl_ver);
-                result.append(title + getAppsVersion(MainDatabaseManager.SETTING_ITEM_APP_WALLPADENERGYCTRL));
-                break;
-
-            case INFO_TYPE_APPS_WALLPADHOMECTRL:
-                title += mActivity.getString(R.string.version_info_apps_wallpadhomectrl_ver);
-                result.append(title + getAppsVersion(MainDatabaseManager.SETTING_ITEM_APP_WALLPADHOMECTRL));
-                break;
-
-            case INFO_TYPE_APPS_WALLPADOUTMODERUN:
-                title += mActivity.getString(R.string.version_info_apps_wallpadoutmoderun_ver);
-                result.append(title + getAppsVersion(MainDatabaseManager.SETTING_ITEM_APP_WALLPADOUTMODERUN));
-                break;
-
-            case INFO_TYPE_APPS_WALLPADSECURITY:
-                title += mActivity.getString(R.string.version_info_apps_wallpadsecurity_ver);
-                result.append(title + getAppsVersion(MainDatabaseManager.SETTING_ITEM_APP_WALLPADSECURITY));
-                break;
-
-            case INFO_TYPE_APPS_WALLPADADDSERVICE:
-                title += mActivity.getString(R.string.version_info_apps_wallpadaddservice_ver);
-                result.append(title + getAppsVersion(MainDatabaseManager.SETTING_ITEM_APP_WALLPADADDSERVICE));
-                break;
-
-            case INFO_TYPE_APPS_WALLPADAUTOPICTURE:
-                title += mActivity.getString(R.string.version_info_apps_wallpadautopicture_ver);
-                result.append(title + getAppsVersion(MainDatabaseManager.SETTING_ITEM_APP_WALLPADAUTOPICTURE));
-                break;
-
-            case INFO_TYPE_APPS_LOGOUTPUT:
-                title += mActivity.getString(R.string.version_info_apps_wallpadlogoutput_ver);
-                result.append(title + getAppsVersion(MainDatabaseManager.SETTING_ITEM_APP_WALLPADLOGOUTPUT));
-                result.append("\n");
-                break;
-
-            case INFO_TYPE_APPS_UPDATER:
-                title += mActivity.getString(R.string.version_info_apps_wallpadupdater_ver);
-                result.append(title + getAppsVersion(MainDatabaseManager.SETTING_ITEM_APP_WALLPADUPDATER));
-                break;
-
-            case INFO_TYPE_APPS_APPUPDATER:
-                title += mActivity.getString(R.string.version_info_apps_wallpadapp_updater_ver);
-                result.append(title + getAppsVersion(MainDatabaseManager.SETTING_ITEM_APP_WALLPADAPPUPDATER));
-                result.append("\n");
-                break;
-
-
-            case INFO_TYPE_SETTING_VER:
-                title += mActivity.getString(R.string.version_info_setting_ver);
-                result.append(title + getSettingVersion());
-                break;
-
-            case INFO_TYPE_NOTICE_VER:
-                title += mActivity.getString(R.string.version_info_notice_ver);
-                result.append(title + getNoticeVersion());
-                break;
-
-            case INFO_TYPE_WEATHER_VER:
-                title += mActivity.getString(R.string.version_info_weather_ver);
-                result.append(title + getWeatherVersion());
-                break;
-
-            case INFO_TYPE_ADDITIONAL_VER:
-                title += mActivity.getString(R.string.version_info_additional_value_ver);
-                result.append(title + getAdditionalVersion());
-                break;
-
-            case INFO_TYPE_SUB_BOARD_VER:
-                title += mActivity.getString(R.string.version_info_sub_board_ver);
-                result.append(title + getSubBoardVersion());
-                break;
-
-            case INFO_TYPE_HEARTBEAT_GATEWAY_VER:
-                title += mActivity.getString(R.string.version_info_heartbeat_gateway_ver);
-                result.append(title + getHeartBeatGatewayVersion());
-                break;
-
-            case INFO_TYPE_NEWS_VER:
-                title += mActivity.getString(R.string.version_info_news_ver);
-                result.append(title + getNewsVersion());
-                result.append("\n");
-                break;
-
-            case INFO_TYPE_GATEWAY_VER:
-                title += mActivity.getString(R.string.version_info_device_gateway_ver);
-                result.append(title + "잠시만 기다려주세요....");
-                break;
-
-            case INFO_TYPE_LH_GATEWAY_INFO:
-                title += mActivity.getString(R.string.version_info_device_lh_gateway_ver);
-
-                wallpaddbmgr WallpadDBMGR = null;
-                WallpadDBMGR = new wallpaddbmgr(mActivity);
-                String Temp = WallpadDBMGR.GetLH_Gateway();
-                WallpadDBMGR.closeDB();
-
-                if (Temp == null)
-                {
-                    result.append(title + "DB에러 다시 시도하세요");
-                }
-                else
-                {
-                    result.append(title + "\r\n" + Temp);
-                }
-                break;
-
-            case INFO_TYPE_MODEL_NAME:
-                title += mActivity.getString(R.string.version_info_model_name_ver);
-
-                String ModelName = Build.MODEL;
-
-                if (ModelName != null)
-                {
-                    result.append(title + ModelName);
-                }
-
-                break;
-
-            default:
-                break;
-        }
-
-        mTV_Result.append(result + "\n");
-    }
-
-    // 현재 동/호를 return
-    private String queryDongHo() {
-        StringBuilder result = new StringBuilder();
-
-        wallpaddbmgr dbmgr = new wallpaddbmgr(mActivity);
-        AddressSet addc = dbmgr.getAddressMGR();
-        AddressSetBackup addc_Backup = dbmgr.getAddressMGR_Backup();
-        dbmgr.closeDB();
-
-        result.append(addc.Dong + " " + mActivity.getString(R.string.dong)
-                + " "
-                + addc.Ho + " " + mActivity.getString(R.string.ho)
-                + " (백업 정보: " + addc_Backup.Dong + " " + mActivity.getString(R.string.dong)
-                + " "
-                + addc_Backup.Ho + " " + mActivity.getString(R.string.ho) + ")");
-
-        if (DEBUG) Log.d(TAG, "Dong : " + addc.Dong
-                + "\n" + ", Ho : " + addc.Ho
-                + "\n" + ", IP : " + addc.IPAddress
-        );
-
-        return result.toString();
-    }
-
-
-    public final static int INET4ADDRESS = 1;
-    public final static int INET6ADDRESS = 2;
-
-    // device에 설정된 IP를 return
-    public String getLocalIPAddress(/*int type*/) {
-        StringBuilder result = new StringBuilder();
-        final int type = INET4ADDRESS;
-
-        try {
-            for (Enumeration en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements(); ) {
-                NetworkInterface intf = (NetworkInterface) en.nextElement();
-                for (Enumeration enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) {
-                    InetAddress inetAddress = (InetAddress) enumIpAddr.nextElement();
-                    if (!inetAddress.isLoopbackAddress()) {
-                        switch (type) {
-                            case INET6ADDRESS:
-                                if (inetAddress instanceof Inet6Address) {
-                                    return inetAddress.getHostAddress().toString();
-                                }
-                                break;
-
-                            case INET4ADDRESS:
-                                if (inetAddress instanceof Inet4Address) {
-                                    return inetAddress.getHostAddress().toString();
-                                }
-                                break;
-                        }
-
-                    }
-                }
-            }
-        } catch (SocketException ex) {
-            Log.d(TAG, "SocketException");
-        }
-
-        return result.toString();
-    }
-
-
-    // DB에 저장된 IP를 return
-    public String getIPAddress() {
-        StringBuilder result = new StringBuilder();
-
-        wallpaddbmgr dbmgr = new wallpaddbmgr(mActivity);
-        AddressSet addc = dbmgr.getAddressMGR();
-        dbmgr.closeDB();
-
-//      addc.setAddress(Dong, Ho);
-//      addc.setIPAddress(IPAddress);
-
-        result.append(addc.IPAddress);
-
-        if (DEBUG) Log.d(TAG, "Dong : " + addc.Dong
-                + "\n" + ", Ho : " + addc.Ho
-                + "\n" + ", IP : " + addc.IPAddress
-        );
-
-
-        return result.toString();
-    }
-
-
-    // DB에 저장된 SubnetMask를 return
-    public String getSubnetMask() {
-        StringBuilder result = new StringBuilder();
-
-        result.append(Const.SUBNET_MASK);
-
-        if (DEBUG) Log.d(TAG, "SubnetMask : " + result);
-
-        return result.toString();
-    }
-
-
-    // DB에 저장된 GateWayIP를 return
-    public String getGateWayIP() {
-        StringBuilder result = new StringBuilder();
-
-        result.append(NetworkUtil.getGatewayAddr(mActivity).IP);
-
-        if (DEBUG) Log.d(TAG, "GateWay : " + result);
-
-        return result.toString();
-    }
-
-
-    // DB에 저장된 SiteCode를 return
-    public String getSiteCodeVersion() {
-        StringBuilder result = new StringBuilder();
-
-        String strSiteCode = mMainDatabaseManager.getSettingData(MainDatabaseManager.SETTING_ITEM_SITE_CODE);
-        result.append(strSiteCode);
-
-        if (DEBUG) Log.d(TAG, "Site Code : " + result);
-
-        return result.toString();
-    }
-
-
-
-
-
-/*
-    private void getProperty(String desc, String property, StringBuffer tBuffer)
-    {
-        tBuffer.append(desc);
-        tBuffer.append(" : ");
-        tBuffer.append(System.getProperty(property));
-        tBuffer.append("\n");
-    }
-
-    private void getDeviceInfo(String desc, String deviceInfo, StringBuffer tBuffer)
-    {
-        tBuffer.append(desc);
-        tBuffer.append(" : ");
-        tBuffer.append(deviceInfo);
-        tBuffer.append("\n");
-    }
-*/
-
-
-    // get OSVersion
-    public String getOSVersion() {
-        final String OS_VERION_PROPERTY = "os.version";
-        StringBuilder result = new StringBuilder();
-
-/**/
-        StringBuffer sysInfoBuffer = new StringBuffer();
-//        getProperty("os.name", "os.name", sysInfoBuffer);
-//        getProperty("os.version", "os.version", sysInfoBuffer);
-
-/*
-        getProperty("java.vendor.url", "java.vendor.url", sysInfoBuffer);
-        getProperty("java.version", "java.version", sysInfoBuffer);
-        getProperty("java.class.path", "java.class.path", sysInfoBuffer);
-        getProperty("java.class.version", "java.class.version", sysInfoBuffer);
-        getProperty("java.vendor", "java.vendor", sysInfoBuffer);
-        getProperty("java.home", "java.home", sysInfoBuffer);
-        getProperty("user.name", "user.name", sysInfoBuffer);
-        getProperty("user.home", "user.home", sysInfoBuffer);
-        getProperty("user.dir", "user.dir", sysInfoBuffer);
-*/
-
-//        getProperty("ro.build.date", "ro.build.date", sysInfoBuffer);
-
-
-//        getDeviceInfo("Build.BOARD", Build.BOARD, sysInfoBuffer);
-//        getDeviceInfo("Build.BOOTLOADER", Build.BOARD, sysInfoBuffer);
-//        getDeviceInfo("Build.BRAND", Build.BRAND, sysInfoBuffer);
-//        getDeviceInfo("Build.CPU_ABI", Build.CPU_ABI, sysInfoBuffer);
-//        getDeviceInfo("Build.DEVICE", Build.DEVICE, sysInfoBuffer);
-
-//        getDeviceInfo("Build.DISPLAY", Build.DISPLAY, sysInfoBuffer);
-        sysInfoBuffer.append(Build.DISPLAY);
-//        getDeviceInfo("Build.FINGERPRINT", Build.FINGERPRINT, sysInfoBuffer);
-
-//        getDeviceInfo("Build.HARDWARE", Build.HARDWARE, sysInfoBuffer);
-//        getDeviceInfo("Build.HOST", Build.HOST, sysInfoBuffer);
-//        getDeviceInfo("Build.ID", Build.ID, sysInfoBuffer);
-//        getDeviceInfo("Build.MANUFACTURER", Build.MANUFACTURER, sysInfoBuffer);
-//        getDeviceInfo("Build.MODEL", Build.MODEL, sysInfoBuffer);
-
-//        getDeviceInfo("Build.PRODUCT", Build.PRODUCT, sysInfoBuffer);
-//        getDeviceInfo("Build.SERIAL", Build.SERIAL, sysInfoBuffer);
-//        getDeviceInfo("Build.TAGS", Build.TAGS, sysInfoBuffer);
-//        getDeviceInfo("Build.TIME", String.valueOf(Build.TIME), sysInfoBuffer);
-//        getDeviceInfo("Build.TYPE", Build.TYPE, sysInfoBuffer);
-//        getDeviceInfo("Build.USER", Build.USER, sysInfoBuffer);
-
-
-//        getDeviceInfo("Build.VERSION.INCREMENTAL", Build.VERSION.INCREMENTAL, sysInfoBuffer);
-//        getDeviceInfo("Build.VERSION.RELEASE", Build.VERSION.RELEASE, sysInfoBuffer);
-//        getDeviceInfo("Build.VERSION.SDK_INT", String.valueOf(Build.VERSION.SDK_INT), sysInfoBuffer);
-//        getDeviceInfo("Build.VERSION.CODENAME", Build.VERSION.CODENAME, sysInfoBuffer);
-
-        result.append(sysInfoBuffer.toString());
-/**/
-
-//        result.append(System.getProperty(OS_VERION_PROPERTY));
-
-        Log.i("BOARD", Build.BOARD);
-        Log.i("BRAND", Build.BRAND);
-        Log.i("CPU_ABI", Build.CPU_ABI);
-        Log.i("DEVICE", Build.DEVICE);
-        Log.i("DISPLAY", Build.DISPLAY);
-        Log.i("FINGERPRINT", Build.FINGERPRINT);
-        Log.i("HOST", Build.HOST);
-        Log.i("ID", Build.ID);
-        Log.i("MANUFACTURER", Build.MANUFACTURER);
-        Log.i("MODEL", Build.MODEL);
-        Log.i("PRODUCT", Build.PRODUCT);
-        Log.i("TAGS", Build.TAGS);
-        Log.i("TYPE", Build.TYPE);
-        Log.i("USER", Build.USER);
-
-        return result.toString();
-    }
-
-
-    // get AppsVersion
-    public String getAppsVersion() {
-        StringBuilder result = new StringBuilder();
-
-        WallpadStatusData wallpadStatusData = new WallpadStatusData(mActivity);
-        result.append(wallpadStatusData.GetAPPVer());
-        wallpadStatusData.closeDB();
-
-        return result.toString();
-    }
-
-
-    // get AppsVersion
-    public String getAppsVersion(int appType) {
-        StringBuilder result = new StringBuilder();
-        String strAppVer = null;
-        try {
-            strAppVer = mMainDatabaseManager.getSettingData(appType);
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
-        } catch (Exception e) {
-            if (DEBUG) Log.d(TAG, "Error : " + e.toString());
-        }
-
-        if (strAppVer != null)
-            result.append(strAppVer);
-
-        if (DEBUG) Log.d(TAG, "appType : " + appType + ", strAppVer : " + result);
-
-        return result.toString();
-    }
-
-
-    // get SettingVersion
-    public String getSettingVersion() {
-        StringBuilder result = new StringBuilder();
-
-        WallpadStatusData wallpadStatusData = new WallpadStatusData(mActivity);
-        result.append(wallpadStatusData.GetSettingVer());
-        wallpadStatusData.closeDB();
-
-        return result.toString();
-    }
-
-    // get NoticeVersion
-    public String getNoticeVersion() {
-        StringBuilder result = new StringBuilder();
-
-        WallpadStatusData wallpadStatusData = new WallpadStatusData(mActivity);
-        result.append(wallpadStatusData.GetNoticeVer());
-        wallpadStatusData.closeDB();
-
-        return result.toString();
-    }
-
-    // get WeatherVersion
-    public String getWeatherVersion() {
-        StringBuilder result = new StringBuilder();
-
-        WallpadStatusData wallpadStatusData = new WallpadStatusData(mActivity);
-        String strWeatherInfo = wallpadStatusData.GetWeatherVer();
-        wallpadStatusData.closeDB();
-        if ((strWeatherInfo != null) && (strWeatherInfo.length() > 13))
-            strWeatherInfo = strWeatherInfo.substring(0, 13);
-
-        result.append(strWeatherInfo);
-
-        return result.toString();
-    }
-
-
-    // get AdditionalVersion
-    public String getAdditionalVersion() {
-        StringBuilder result = new StringBuilder();
-
-        // TO DO
-
-        return result.toString();
-    }
-
-
-    // get SubBoardVersion
-    public String getSubBoardVersion() {
-        StringBuilder result = new StringBuilder();
-
-        // TO DO
-
-        return result.toString();
-    }
-
-
-    // get HeartBeatGatewayVersion
-    public String getHeartBeatGatewayVersion() {
-        StringBuilder result = new StringBuilder();
-
-        return result.toString();
-    }
-
-
-    // get NewsVersion
-    public String getNewsVersion() {
-        StringBuilder result = new StringBuilder();
-
-        // TO DO
-
-        return result.toString();
-    }
-
-    /**
-     * (임시코드) 실시간검침기 드라이버 초기생성시 Connect 에 시간이 걸리며, <br>
-     * 실시간검침기 드라이버 초기화후 바로  API 를 가져올수 없기에, <br>
-     * 본 딜레이 코드를 임시로 적용한다.
-     */
-    @SuppressLint("HandlerLeak")
-    protected Handler mIntDriverCheckHandler = new Handler() {
-        @SuppressLint("HandlerLeak")
-        @Override
-        public void handleMessage(Message msg) {
-            if (msg.what == 0) {
-                if (Device_ApiLoad(m_wpapi) >= 0) {
-                    Device_Update(false);
-                    mIntDriverCheckHandler.sendEmptyMessageDelayed(1, 10);
-                } else {
-                    Log.d(TAG, "mIntDriverCheckHandler --> iGW200dAPI == null");
-                    mIntDriverCheckHandler.sendEmptyMessageDelayed(0, 1000);
-                }
-            } else if (msg.what == 1) {
-                Log.d(TAG, "mIntDriverCheckHandler == succes");
-
-                /**
-                 * 게이트웨이 버전을 가져온다.
-                 *
-                 * @return (String) <br>
-                 *         Program 상태 - BootLoader '1' or App '2' <br>
-                 *         BOOT 펌웨어 버전정보 - Main <br>
-                 *         BOOT 펌웨어 버전정보 - Sub <br>
-                 *         APP 펌웨어 버전정보 - Main <br>
-                 *         APP 펌웨어 버전정보 - Sub <br>
-                 *         APP 펌웨어 Build Date - Year <br>
-                 *         APP 펌웨어 Build Date - Month <br>
-                 *         APP 펌웨어 Build Date - Day <br>
-                 *         Protocol 버전정보 - Main <br>
-                 *         Protocol 버전정보 - Sub <br>
-                 *         각 정보의 구분자는 "/" 이다.
-                 */
-
-                String[] iGW_Version_array;
-                String iGW_Version = "";
-                String tempString = iGW200dAPI.GetVer();
-                if (tempString != null) {
-                    iGW_Version_array = tempString.split("/");
-                    if (iGW_Version_array.length == 10) {
-                        iGW_Version += "       Boot F/W Version: " + iGW_Version_array[1] + "." + iGW_Version_array[2] + "\n";
-                        iGW_Version += "       APP  F/W Version: " + iGW_Version_array[3] + "." + iGW_Version_array[4] + "\n";
-                        iGW_Version += "       APP  Build Date   : " + iGW_Version_array[5] + "." + iGW_Version_array[6] + "." + iGW_Version_array[7] + "\n";
-                        iGW_Version += "       Protocol Version : " + iGW_Version_array[8] + "." + iGW_Version_array[9] + "\n";
-
-                        mTV_Result.append(iGW_Version + "\n");
-                    } else {
-                        mTV_Result.append("       디바이스 연결 오류. 잠시 후에 다시 시도해 주세요." + "\n");
-                    }
-                }
-            }
-        }
-    };
-
-    /**
-     * 제어기 상태를 가져온다.
-     *
-     * @param real - (boolean) true : 실시간 , false : 가장최근
-     * @return (int) - >=0 : 성공, <0 : 실패
-     */
-    @SuppressWarnings("unused")
-    private int Device_Update(boolean real) {
-        //DebugLogOutput("[Device_Update] - Start   (real : " + real + ")");
-
-        // 1. Api Load Check
-        if (iGW200dAPI == null) {
-            Log.e(TAG, "[Device_Update] - remoteMeterApi unload !!!");
-            return -1;
-        }
-
-        // 2. reflash
-        try {
-            int ret = iGW200dAPI.Refresh(real);
-            if (ret < 0) {
-                Log.e(TAG, "[Device_Update] - iGW200dAPI.Refresh - ret (" + ret + ")" + iGW200dAPI.ErrorCode.ErrStr());
-                return -2;
-            }
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
-        } catch (Exception e) {
-            Log.e(TAG, "[Device_Update] - [Exception Error] iGW200dAPI.Refresh(" + real + ")");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
-            return -100;
-        }
-
-        return 0;
-    }
-
-    /**
-     * 디바이스 API 를 Load 한다.
-     *
-     * @param wpapi - 생성시 전달받은 WallPadAPI
-     * @return (int) - >=0 : 성공, <0 : 실패
-     */
-    private int Device_ApiLoad(WallPadAPI wpapi) {
-        Log.d(TAG, "[Device_ApiLoad] - Start");
-
-        // 1. wpapi Check
-        if (wpapi == null) {
-            Log.e(TAG, "[Device_ApiLoad] - wpapi is null");
-            return -2;
-        }
-
-        // 3. Load API
-        Log.d(TAG, "[Device_ApiLoad] - Step1 :iGW200dAPI Load...");
-
-        try {
-            iGW200dAPI = wpapi.Get_IGW200dController();
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
-        } catch (Exception e) {
-            Log.e(TAG, "[Device_ApiLoad] - [Exception Error] wpapi.Get_IGW200dController");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
-            return -100;
-        }
-        if (iGW200dAPI == null) {
-            Log.e(TAG, "[Device_ApiLoad] - iGW200dAPI is null");
-            return -4;
-        }
-
-        Log.d(TAG, "[Device_ApiLoad] - OK");
-
-        return 0;
-    }
-
-}
+package com.artncore.managersetting.ui.fragments;
+
+import java.net.Inet4Address;
+import java.net.Inet6Address;
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.net.SocketException;
+import java.util.Enumeration;
+
+import kr.co.icontrols.wallpadsupport.Version;
+
+import android.annotation.SuppressLint;
+import android.app.Activity;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+//import android.support.v4.app.Fragment;
+import androidx.fragment.app.Fragment;
+import androidx.core.view.MotionEventCompat;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.View.OnTouchListener;
+import android.view.ViewGroup;
+import android.widget.ScrollView;
+import android.widget.TextView;
+
+import com.artncore.WallPadDataMgr.WallpadDeviceSet;
+import com.artncore.WallPadDataMgr.WallpadStatusData;
+import com.artncore.WallPadDataMgr.wallpaddbmgr;
+import com.artncore.WallPadDataMgr.wallpaddbmgr.AddressSet;
+import com.artncore.WallPadDataMgr.wallpaddbmgr.AddressSetBackup;
+import com.artncore.managersetting.dao.MainDatabaseManager;
+import com.artncore.managersetting.domain.Const;
+import com.artncore.managersetting.ui.activities.MainActivity;
+import com.artncore.managersetting.util.NetworkUtil;
+import com.artncore.managersetting.R;
+import com.artncore.wallpadapi.IGW200dAPI;
+import com.artncore.wallpadapi.WallPadAPI;
+
+/**
+ * A list fragment representing a list of Items. This fragment also supports
+ * tablet devices by allowing list items to be given an 'activated' state upon
+ * selection. This helps indicate which item is currently being viewed in a
+ * {link ItemDetailFragment}.
+ * <p>
+ * Activities containing this fragment MUST implement the {link Callbacks}
+ * interface.
+ */
+public class QueryVersionInfoFragment extends Fragment {
+    private static final String TAG = "QueryVersionInfoFragment";
+
+    private final boolean DEBUG = true;
+
+    public final int INFO_TYPE_VERSION_BASE =   Const.COMMON_TYPE_BASE;
+    public final int INFO_TYPE_DONGHO =         INFO_TYPE_VERSION_BASE + 0;
+    public final int INFO_TYPE_IP =             INFO_TYPE_VERSION_BASE + 1;
+    public final int INFO_TYPE_SUBNET_MASK =    INFO_TYPE_VERSION_BASE + 2;
+    public final int INFO_TYPE_GATEWAY_IP =     INFO_TYPE_VERSION_BASE + 3;
+    public final int INFO_TYPE_SITE_CODE =      INFO_TYPE_VERSION_BASE + 4;
+
+
+
+    public final int INFO_TYPE_OS =             INFO_TYPE_VERSION_BASE + 100;
+    public final int INFO_TYPE_APPS =           INFO_TYPE_VERSION_BASE + 101;
+
+
+    public final int INFO_TYPE_APPS_MAIN =              INFO_TYPE_VERSION_BASE + 102;
+    public final int INFO_TYPE_APPS_CALL =              INFO_TYPE_VERSION_BASE + 103;
+    //    public final int INFO_TYPE_APPS_SIP_CALL =          INFO_TYPE_VERSION_BASE + 104;
+    public final int INFO_TYPE_APPS_MANAGER =           INFO_TYPE_VERSION_BASE + 105;
+
+    public final int INFO_TYPE_APPS_WALLPADCONFIG =     INFO_TYPE_VERSION_BASE + 106;
+    public final int INFO_TYPE_APPS_DEVICESERVICE =     INFO_TYPE_VERSION_BASE + 107;
+    public final int INFO_TYPE_APPS_WALLPADEMERGENCY =  INFO_TYPE_VERSION_BASE + 108;
+    public final int INFO_TYPE_APPS_WALLPADENERGYCTRL = INFO_TYPE_VERSION_BASE + 109;
+    public final int INFO_TYPE_APPS_WALLPADHOMECTRL =   INFO_TYPE_VERSION_BASE + 110;
+    public final int INFO_TYPE_APPS_WALLPADOUTMODERUN = INFO_TYPE_VERSION_BASE + 111;
+    public final int INFO_TYPE_APPS_WALLPADSECURITY =   INFO_TYPE_VERSION_BASE + 112;
+    public final int INFO_TYPE_APPS_WALLPADADDSERVICE = INFO_TYPE_VERSION_BASE + 113;
+    public final int INFO_TYPE_APPS_WALLPADAUTOPICTURE = INFO_TYPE_VERSION_BASE + 114;
+
+    public final int INFO_TYPE_APPS_LOGOUTPUT = INFO_TYPE_VERSION_BASE + 115;
+    public final int INFO_TYPE_APPS_UPDATER = INFO_TYPE_VERSION_BASE + 116;
+    public final int INFO_TYPE_APPS_APPUPDATER = INFO_TYPE_VERSION_BASE + 117;
+
+
+
+    public final int INFO_TYPE_SETTING_VER =    INFO_TYPE_VERSION_BASE + 201;
+    public final int INFO_TYPE_NOTICE_VER =     INFO_TYPE_VERSION_BASE + 202;
+    public final int INFO_TYPE_WEATHER_VER =    INFO_TYPE_VERSION_BASE + 203;
+
+    public final int INFO_TYPE_ADDITIONAL_VER = INFO_TYPE_VERSION_BASE + 204;
+
+    public final int INFO_TYPE_SUB_BOARD_VER =  INFO_TYPE_VERSION_BASE + 205;
+    public final int INFO_TYPE_HEARTBEAT_GATEWAY_VER =  INFO_TYPE_VERSION_BASE + 206;
+    public final int INFO_TYPE_NEWS_VER =       INFO_TYPE_VERSION_BASE + 207;
+    public final int INFO_TYPE_GATEWAY_VER =    INFO_TYPE_VERSION_BASE + 208;
+
+    public final int INFO_TYPE_LH_GATEWAY_INFO = INFO_TYPE_VERSION_BASE + 209;
+
+    public final int INFO_TYPE_MODEL_NAME = INFO_TYPE_VERSION_BASE + 210;
+
+    private Activity mActivity;
+    private MainDatabaseManager mMainDatabaseManager;
+
+    private TextView mTV_Result;
+    private int mNumber = 1;
+
+    private int ModelType = Version.getModelType();
+    //private int ModelType = Version.MODEL_TYPE.IHN_1020B_A;
+
+    private IGW200dAPI iGW200dAPI = null;
+    private WallPadAPI m_wpapi = null;
+
+    // constructor
+    public QueryVersionInfoFragment() {
+    }
+
+    @Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+
+        mActivity = activity;
+        mMainDatabaseManager = MainActivity.getMainDatabaseManager();
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState)
+    {
+        if (DEBUG) Log.d(TAG, "onCreate() ");
+        super.onCreate(savedInstanceState);
+
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+                             Bundle savedInstanceState) {
+        View rootView = (View) inflater.inflate(R.layout.version_info_container,
+                container, false);
+
+        return (View) rootView;
+    }
+
+    @Override
+    public void onViewCreated(View view, Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+
+        if (savedInstanceState != null) {
+        }
+
+        mTV_Result = (TextView) view.findViewById(R.id.tv_version_info);
+
+        ScrollView mScrollView = (ScrollView) view.findViewById(R.id.tv_version_scrollview);
+        mScrollView.setOnTouchListener(new OnTouchListener() {
+
+            @Override
+            public boolean onTouch(View v, MotionEvent event) {
+                switch (MotionEventCompat.getActionMasked(event)) {
+
+                    case MotionEvent.ACTION_UP:
+                        MainActivity.setFinishTimerReset();
+                        break;
+
+                    default:
+                        break;
+                }
+                return false;
+            }
+        });
+
+
+    }
+
+
+    @Override
+    public void onResume() {
+        if (DEBUG) Log.d(TAG, "onResume() ");
+
+        super.onResume();
+
+        mTV_Result.setText("");
+        mNumber = 1;
+
+        getVersionInfo();
+    }
+
+
+    @Override
+    public void onPause() {
+        if (DEBUG) Log.d(TAG, "onPause() ");
+
+        super.onPause();
+    }
+
+
+    @Override
+    public void onDetach() {
+        super.onDetach();
+    }
+
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+    }
+
+    // show all VersionInfo
+    private void getVersionInfo() {
+
+        if (ModelType == Version.MODEL_TYPE.IHN_1020GL)
+        {
+            m_wpapi = MainActivity.getWallPadAPI();
+            mIntDriverCheckHandler.sendEmptyMessage(0);
+        }
+
+        showVersionInfo(INFO_TYPE_DONGHO);
+        showVersionInfo(INFO_TYPE_IP);
+        showVersionInfo(INFO_TYPE_SUBNET_MASK);
+        showVersionInfo(INFO_TYPE_GATEWAY_IP);
+
+        showVersionInfo(INFO_TYPE_SITE_CODE);
+        showVersionInfo(INFO_TYPE_MODEL_NAME);
+
+        showVersionInfo(INFO_TYPE_OS);
+        showVersionInfo(INFO_TYPE_APPS);
+
+        showVersionInfo(INFO_TYPE_APPS_MAIN);
+        showVersionInfo(INFO_TYPE_APPS_CALL);
+//        showVersionInfo(INFO_TYPE_APPS_SIP_CALL);
+        showVersionInfo(INFO_TYPE_APPS_MANAGER);
+        showVersionInfo(INFO_TYPE_APPS_WALLPADCONFIG);
+        showVersionInfo(INFO_TYPE_APPS_DEVICESERVICE);
+        showVersionInfo(INFO_TYPE_APPS_WALLPADEMERGENCY);
+        showVersionInfo(INFO_TYPE_APPS_WALLPADENERGYCTRL);
+        showVersionInfo(INFO_TYPE_APPS_WALLPADHOMECTRL);
+        showVersionInfo(INFO_TYPE_APPS_WALLPADOUTMODERUN);
+        showVersionInfo(INFO_TYPE_APPS_WALLPADSECURITY);
+        showVersionInfo(INFO_TYPE_APPS_WALLPADADDSERVICE);
+
+        showVersionInfo(INFO_TYPE_APPS_WALLPADAUTOPICTURE);
+        showVersionInfo(INFO_TYPE_APPS_LOGOUTPUT);
+        showVersionInfo(INFO_TYPE_APPS_UPDATER);
+        showVersionInfo(INFO_TYPE_APPS_APPUPDATER);
+
+        showVersionInfo(INFO_TYPE_SETTING_VER);
+        showVersionInfo(INFO_TYPE_NOTICE_VER);
+        showVersionInfo(INFO_TYPE_WEATHER_VER);
+        showVersionInfo(INFO_TYPE_ADDITIONAL_VER);
+
+
+        showVersionInfo(INFO_TYPE_SUB_BOARD_VER);
+        showVersionInfo(INFO_TYPE_HEARTBEAT_GATEWAY_VER);
+        showVersionInfo(INFO_TYPE_NEWS_VER);
+
+        if (ModelType == Version.MODEL_TYPE.IHN_1020GL)
+        {
+            showVersionInfo(INFO_TYPE_GATEWAY_VER);
+        }
+
+        if (ModelType == Version.MODEL_TYPE.IHN_1020SA_A)
+        {
+            showVersionInfo(INFO_TYPE_LH_GATEWAY_INFO);
+        }
+
+        WallpadDeviceSet devSet = new WallpadDeviceSet(mActivity.getApplicationContext());
+        String[] DBinfo = devSet.GetSettingData("게이트웨이");
+        devSet.closeDB();
+        if (DBinfo != null)
+        {
+            if (DBinfo[1].indexOf("사용함") > 0)
+            {
+                showVersionInfo(INFO_TYPE_LH_GATEWAY_INFO);
+            }
+        }
+
+    }
+
+
+    // show VersionInfo
+    private void showVersionInfo(int type) {
+        StringBuilder result = new StringBuilder();
+        String title = String.valueOf(mNumber++) + ". ";
+
+        switch (type) {
+            case INFO_TYPE_DONGHO:
+                title += "";
+                result.append(title + queryDongHo());
+                break;
+
+            case INFO_TYPE_IP:
+                title += mActivity.getString(R.string.version_info_ip);
+                result.append(title + getIPAddress()); //getLocalIPAddress();
+                break;
+
+            case INFO_TYPE_SUBNET_MASK:
+                title += mActivity.getString(R.string.version_info_subnet_mask);
+                result.append(title + getSubnetMask());
+                break;
+
+            case INFO_TYPE_GATEWAY_IP:
+                title += mActivity.getString(R.string.version_info_gateway_ip);
+                result.append(title + getGateWayIP());
+                break;
+
+            case INFO_TYPE_SITE_CODE:
+                title += mActivity.getString(R.string.version_info_site_code);
+                result.append(title + getSiteCodeVersion());
+                result.append("\n");
+                break;
+
+
+            case INFO_TYPE_OS:
+                title += mActivity.getString(R.string.version_info_os_ver);
+                result.append(title + getOSVersion());
+                break;
+
+            case INFO_TYPE_APPS:
+                title += mActivity.getString(R.string.version_info_apps_ver);
+                result.append(title + getAppsVersion(MainDatabaseManager.SETTING_ITEM_APP_WALLPADMAIN));
+                result.append("\n");
+                break;
+
+            case INFO_TYPE_APPS_MAIN:
+                title += mActivity.getString(R.string.version_info_apps_main_ver);
+                result.append(title + getAppsVersion(MainDatabaseManager.SETTING_ITEM_APP_WALLPADMAIN));
+                break;
+
+            case INFO_TYPE_APPS_CALL:
+                title += mActivity.getString(R.string.version_info_apps_call_ver);
+                result.append(title + getAppsVersion(MainDatabaseManager.SETTING_ITEM_APP_IC_WALLPAD));
+                break;
+
+/*
+            case INFO_TYPE_APPS_SIP_CALL:
+                title += mActivity.getString(R.string.version_info_apps_sip_call_ver);
+                result.append(title + getAppsVersion(type));
+                break;
+*/
+            case INFO_TYPE_APPS_MANAGER:
+                title += mActivity.getString(R.string.version_info_apps_manager_ver);
+                result.append(title + getAppsVersion(MainDatabaseManager.SETTING_ITEM_APP_MANAGERSETTING));
+                break;
+
+
+            case INFO_TYPE_APPS_WALLPADCONFIG:
+                title += mActivity.getString(R.string.version_info_apps_wallpadconfig_ver);
+                result.append(title + getAppsVersion(MainDatabaseManager.SETTING_ITEM_APP_WALLPADCONFIG));
+                break;
+
+            case INFO_TYPE_APPS_DEVICESERVICE:
+                title += mActivity.getString(R.string.version_info_apps_deviceservice_ver);
+                result.append(title + getAppsVersion(MainDatabaseManager.SETTING_ITEM_APP_DEVICESERVICE));
+                break;
+
+            case INFO_TYPE_APPS_WALLPADEMERGENCY:
+                title += mActivity.getString(R.string.version_info_apps_wallpademergency_ver);
+                result.append(title + getAppsVersion(MainDatabaseManager.SETTING_ITEM_APP_WALLPADEMERGENCY));
+                break;
+
+            case INFO_TYPE_APPS_WALLPADENERGYCTRL:
+                title += mActivity.getString(R.string.version_info_apps_wallpadenergyctrl_ver);
+                result.append(title + getAppsVersion(MainDatabaseManager.SETTING_ITEM_APP_WALLPADENERGYCTRL));
+                break;
+
+            case INFO_TYPE_APPS_WALLPADHOMECTRL:
+                title += mActivity.getString(R.string.version_info_apps_wallpadhomectrl_ver);
+                result.append(title + getAppsVersion(MainDatabaseManager.SETTING_ITEM_APP_WALLPADHOMECTRL));
+                break;
+
+            case INFO_TYPE_APPS_WALLPADOUTMODERUN:
+                title += mActivity.getString(R.string.version_info_apps_wallpadoutmoderun_ver);
+                result.append(title + getAppsVersion(MainDatabaseManager.SETTING_ITEM_APP_WALLPADOUTMODERUN));
+                break;
+
+            case INFO_TYPE_APPS_WALLPADSECURITY:
+                title += mActivity.getString(R.string.version_info_apps_wallpadsecurity_ver);
+                result.append(title + getAppsVersion(MainDatabaseManager.SETTING_ITEM_APP_WALLPADSECURITY));
+                break;
+
+            case INFO_TYPE_APPS_WALLPADADDSERVICE:
+                title += mActivity.getString(R.string.version_info_apps_wallpadaddservice_ver);
+                result.append(title + getAppsVersion(MainDatabaseManager.SETTING_ITEM_APP_WALLPADADDSERVICE));
+                break;
+
+            case INFO_TYPE_APPS_WALLPADAUTOPICTURE:
+                title += mActivity.getString(R.string.version_info_apps_wallpadautopicture_ver);
+                result.append(title + getAppsVersion(MainDatabaseManager.SETTING_ITEM_APP_WALLPADAUTOPICTURE));
+                break;
+
+            case INFO_TYPE_APPS_LOGOUTPUT:
+                title += mActivity.getString(R.string.version_info_apps_wallpadlogoutput_ver);
+                result.append(title + getAppsVersion(MainDatabaseManager.SETTING_ITEM_APP_WALLPADLOGOUTPUT));
+                result.append("\n");
+                break;
+
+            case INFO_TYPE_APPS_UPDATER:
+                title += mActivity.getString(R.string.version_info_apps_wallpadupdater_ver);
+                result.append(title + getAppsVersion(MainDatabaseManager.SETTING_ITEM_APP_WALLPADUPDATER));
+                break;
+
+            case INFO_TYPE_APPS_APPUPDATER:
+                title += mActivity.getString(R.string.version_info_apps_wallpadapp_updater_ver);
+                result.append(title + getAppsVersion(MainDatabaseManager.SETTING_ITEM_APP_WALLPADAPPUPDATER));
+                result.append("\n");
+                break;
+
+
+            case INFO_TYPE_SETTING_VER:
+                title += mActivity.getString(R.string.version_info_setting_ver);
+                result.append(title + getSettingVersion());
+                break;
+
+            case INFO_TYPE_NOTICE_VER:
+                title += mActivity.getString(R.string.version_info_notice_ver);
+                result.append(title + getNoticeVersion());
+                break;
+
+            case INFO_TYPE_WEATHER_VER:
+                title += mActivity.getString(R.string.version_info_weather_ver);
+                result.append(title + getWeatherVersion());
+                break;
+
+            case INFO_TYPE_ADDITIONAL_VER:
+                title += mActivity.getString(R.string.version_info_additional_value_ver);
+                result.append(title + getAdditionalVersion());
+                break;
+
+            case INFO_TYPE_SUB_BOARD_VER:
+                title += mActivity.getString(R.string.version_info_sub_board_ver);
+                result.append(title + getSubBoardVersion());
+                break;
+
+            case INFO_TYPE_HEARTBEAT_GATEWAY_VER:
+                title += mActivity.getString(R.string.version_info_heartbeat_gateway_ver);
+                result.append(title + getHeartBeatGatewayVersion());
+                break;
+
+            case INFO_TYPE_NEWS_VER:
+                title += mActivity.getString(R.string.version_info_news_ver);
+                result.append(title + getNewsVersion());
+                result.append("\n");
+                break;
+
+            case INFO_TYPE_GATEWAY_VER:
+                title += mActivity.getString(R.string.version_info_device_gateway_ver);
+                result.append(title + "잠시만 기다려주세요....");
+                break;
+
+            case INFO_TYPE_LH_GATEWAY_INFO:
+                title += mActivity.getString(R.string.version_info_device_lh_gateway_ver);
+
+                wallpaddbmgr WallpadDBMGR = null;
+                WallpadDBMGR = new wallpaddbmgr(mActivity);
+                String Temp = WallpadDBMGR.GetLH_Gateway();
+                WallpadDBMGR.closeDB();
+
+                if (Temp == null)
+                {
+                    result.append(title + "DB에러 다시 시도하세요");
+                }
+                else
+                {
+                    result.append(title + "\r\n" + Temp);
+                }
+                break;
+
+            case INFO_TYPE_MODEL_NAME:
+                title += mActivity.getString(R.string.version_info_model_name_ver);
+
+                String ModelName = Build.MODEL;
+
+                if (ModelName != null)
+                {
+                    result.append(title + ModelName);
+                }
+
+                break;
+
+            default:
+                break;
+        }
+
+        mTV_Result.append(result + "\n");
+    }
+
+    // 현재 동/호를 return
+    private String queryDongHo() {
+        StringBuilder result = new StringBuilder();
+
+        wallpaddbmgr dbmgr = new wallpaddbmgr(mActivity);
+        AddressSet addc = dbmgr.getAddressMGR();
+        AddressSetBackup addc_Backup = dbmgr.getAddressMGR_Backup();
+        dbmgr.closeDB();
+
+        result.append(addc.Dong + " " + mActivity.getString(R.string.dong)
+                + " "
+                + addc.Ho + " " + mActivity.getString(R.string.ho)
+                + " (백업 정보: " + addc_Backup.Dong + " " + mActivity.getString(R.string.dong)
+                + " "
+                + addc_Backup.Ho + " " + mActivity.getString(R.string.ho) + ")");
+
+        if (DEBUG) Log.d(TAG, "Dong : " + addc.Dong
+                + "\n" + ", Ho : " + addc.Ho
+                + "\n" + ", IP : " + addc.IPAddress
+        );
+
+        return result.toString();
+    }
+
+
+    public final static int INET4ADDRESS = 1;
+    public final static int INET6ADDRESS = 2;
+
+    // device에 설정된 IP를 return
+    public String getLocalIPAddress(/*int type*/) {
+        StringBuilder result = new StringBuilder();
+        final int type = INET4ADDRESS;
+
+        try {
+            for (Enumeration en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements(); ) {
+                NetworkInterface intf = (NetworkInterface) en.nextElement();
+                for (Enumeration enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) {
+                    InetAddress inetAddress = (InetAddress) enumIpAddr.nextElement();
+                    if (!inetAddress.isLoopbackAddress()) {
+                        switch (type) {
+                            case INET6ADDRESS:
+                                if (inetAddress instanceof Inet6Address) {
+                                    return inetAddress.getHostAddress().toString();
+                                }
+                                break;
+
+                            case INET4ADDRESS:
+                                if (inetAddress instanceof Inet4Address) {
+                                    return inetAddress.getHostAddress().toString();
+                                }
+                                break;
+                        }
+
+                    }
+                }
+            }
+        } catch (SocketException ex) {
+        }
+
+        return result.toString();
+    }
+
+
+    // DB에 저장된 IP를 return
+    public String getIPAddress() {
+        StringBuilder result = new StringBuilder();
+
+        wallpaddbmgr dbmgr = new wallpaddbmgr(mActivity);
+        AddressSet addc = dbmgr.getAddressMGR();
+        dbmgr.closeDB();
+
+//      addc.setAddress(Dong, Ho);
+//      addc.setIPAddress(IPAddress);
+
+        result.append(addc.IPAddress);
+
+        if (DEBUG) Log.d(TAG, "Dong : " + addc.Dong
+                + "\n" + ", Ho : " + addc.Ho
+                + "\n" + ", IP : " + addc.IPAddress
+        );
+
+
+        return result.toString();
+    }
+
+
+    // DB에 저장된 SubnetMask를 return
+    public String getSubnetMask() {
+        StringBuilder result = new StringBuilder();
+
+        result.append(Const.SUBNET_MASK);
+
+        if (DEBUG) Log.d(TAG, "SubnetMask : " + result);
+
+        return result.toString();
+    }
+
+
+    // DB에 저장된 GateWayIP를 return
+    public String getGateWayIP() {
+        StringBuilder result = new StringBuilder();
+
+        result.append(NetworkUtil.getGatewayAddr(mActivity).IP);
+
+        if (DEBUG) Log.d(TAG, "GateWay : " + result);
+
+        return result.toString();
+    }
+
+
+    // DB에 저장된 SiteCode를 return
+    public String getSiteCodeVersion() {
+        StringBuilder result = new StringBuilder();
+
+        String strSiteCode = mMainDatabaseManager.getSettingData(MainDatabaseManager.SETTING_ITEM_SITE_CODE);
+        result.append(strSiteCode);
+
+        if (DEBUG) Log.d(TAG, "Site Code : " + result);
+
+        return result.toString();
+    }
+
+
+
+
+
+/*
+    private void getProperty(String desc, String property, StringBuffer tBuffer)
+    {
+        tBuffer.append(desc);
+        tBuffer.append(" : ");
+        tBuffer.append(System.getProperty(property));
+        tBuffer.append("\n");
+    }
+
+    private void getDeviceInfo(String desc, String deviceInfo, StringBuffer tBuffer)
+    {
+        tBuffer.append(desc);
+        tBuffer.append(" : ");
+        tBuffer.append(deviceInfo);
+        tBuffer.append("\n");
+    }
+*/
+
+
+    // get OSVersion
+    public String getOSVersion() {
+        final String OS_VERION_PROPERTY = "os.version";
+        StringBuilder result = new StringBuilder();
+
+/**/
+        StringBuffer sysInfoBuffer = new StringBuffer();
+//        getProperty("os.name", "os.name", sysInfoBuffer);
+//        getProperty("os.version", "os.version", sysInfoBuffer);
+
+/*
+        getProperty("java.vendor.url", "java.vendor.url", sysInfoBuffer);
+        getProperty("java.version", "java.version", sysInfoBuffer);
+        getProperty("java.class.path", "java.class.path", sysInfoBuffer);
+        getProperty("java.class.version", "java.class.version", sysInfoBuffer);
+        getProperty("java.vendor", "java.vendor", sysInfoBuffer);
+        getProperty("java.home", "java.home", sysInfoBuffer);
+        getProperty("user.name", "user.name", sysInfoBuffer);
+        getProperty("user.home", "user.home", sysInfoBuffer);
+        getProperty("user.dir", "user.dir", sysInfoBuffer);
+*/
+
+//        getProperty("ro.build.date", "ro.build.date", sysInfoBuffer);
+
+
+//        getDeviceInfo("Build.BOARD", Build.BOARD, sysInfoBuffer);
+//        getDeviceInfo("Build.BOOTLOADER", Build.BOARD, sysInfoBuffer);
+//        getDeviceInfo("Build.BRAND", Build.BRAND, sysInfoBuffer);
+//        getDeviceInfo("Build.CPU_ABI", Build.CPU_ABI, sysInfoBuffer);
+//        getDeviceInfo("Build.DEVICE", Build.DEVICE, sysInfoBuffer);
+
+//        getDeviceInfo("Build.DISPLAY", Build.DISPLAY, sysInfoBuffer);
+        sysInfoBuffer.append(Build.DISPLAY);
+//        getDeviceInfo("Build.FINGERPRINT", Build.FINGERPRINT, sysInfoBuffer);
+
+//        getDeviceInfo("Build.HARDWARE", Build.HARDWARE, sysInfoBuffer);
+//        getDeviceInfo("Build.HOST", Build.HOST, sysInfoBuffer);
+//        getDeviceInfo("Build.ID", Build.ID, sysInfoBuffer);
+//        getDeviceInfo("Build.MANUFACTURER", Build.MANUFACTURER, sysInfoBuffer);
+//        getDeviceInfo("Build.MODEL", Build.MODEL, sysInfoBuffer);
+
+//        getDeviceInfo("Build.PRODUCT", Build.PRODUCT, sysInfoBuffer);
+//        getDeviceInfo("Build.SERIAL", Build.SERIAL, sysInfoBuffer);
+//        getDeviceInfo("Build.TAGS", Build.TAGS, sysInfoBuffer);
+//        getDeviceInfo("Build.TIME", String.valueOf(Build.TIME), sysInfoBuffer);
+//        getDeviceInfo("Build.TYPE", Build.TYPE, sysInfoBuffer);
+//        getDeviceInfo("Build.USER", Build.USER, sysInfoBuffer);
+
+
+//        getDeviceInfo("Build.VERSION.INCREMENTAL", Build.VERSION.INCREMENTAL, sysInfoBuffer);
+//        getDeviceInfo("Build.VERSION.RELEASE", Build.VERSION.RELEASE, sysInfoBuffer);
+//        getDeviceInfo("Build.VERSION.SDK_INT", String.valueOf(Build.VERSION.SDK_INT), sysInfoBuffer);
+//        getDeviceInfo("Build.VERSION.CODENAME", Build.VERSION.CODENAME, sysInfoBuffer);
+
+        result.append(sysInfoBuffer.toString());
+/**/
+
+//        result.append(System.getProperty(OS_VERION_PROPERTY));
+
+        Log.i("BOARD", Build.BOARD);
+        Log.i("BRAND", Build.BRAND);
+        Log.i("CPU_ABI", Build.CPU_ABI);
+        Log.i("DEVICE", Build.DEVICE);
+        Log.i("DISPLAY", Build.DISPLAY);
+        Log.i("FINGERPRINT", Build.FINGERPRINT);
+        Log.i("HOST", Build.HOST);
+        Log.i("ID", Build.ID);
+        Log.i("MANUFACTURER", Build.MANUFACTURER);
+        Log.i("MODEL", Build.MODEL);
+        Log.i("PRODUCT", Build.PRODUCT);
+        Log.i("TAGS", Build.TAGS);
+        Log.i("TYPE", Build.TYPE);
+        Log.i("USER", Build.USER);
+
+        return result.toString();
+    }
+
+
+    // get AppsVersion
+    public String getAppsVersion() {
+        StringBuilder result = new StringBuilder();
+
+        WallpadStatusData wallpadStatusData = new WallpadStatusData(mActivity);
+        result.append(wallpadStatusData.GetAPPVer());
+        wallpadStatusData.closeDB();
+
+        return result.toString();
+    }
+
+
+    // get AppsVersion
+    public String getAppsVersion(int appType) {
+        StringBuilder result = new StringBuilder();
+        String strAppVer = null;
+        try {
+            strAppVer = mMainDatabaseManager.getSettingData(appType);
+        } catch (Exception e) {
+            if (DEBUG) Log.d(TAG, "Error : " + e.toString());
+        }
+
+        if (strAppVer != null)
+            result.append(strAppVer);
+
+        if (DEBUG) Log.d(TAG, "appType : " + appType + ", strAppVer : " + result);
+
+        return result.toString();
+    }
+
+
+    // get SettingVersion
+    public String getSettingVersion() {
+        StringBuilder result = new StringBuilder();
+
+        WallpadStatusData wallpadStatusData = new WallpadStatusData(mActivity);
+        result.append(wallpadStatusData.GetSettingVer());
+        wallpadStatusData.closeDB();
+
+        return result.toString();
+    }
+
+    // get NoticeVersion
+    public String getNoticeVersion() {
+        StringBuilder result = new StringBuilder();
+
+        WallpadStatusData wallpadStatusData = new WallpadStatusData(mActivity);
+        result.append(wallpadStatusData.GetNoticeVer());
+        wallpadStatusData.closeDB();
+
+        return result.toString();
+    }
+
+    // get WeatherVersion
+    public String getWeatherVersion() {
+        StringBuilder result = new StringBuilder();
+
+        WallpadStatusData wallpadStatusData = new WallpadStatusData(mActivity);
+        String strWeatherInfo = wallpadStatusData.GetWeatherVer();
+        wallpadStatusData.closeDB();
+        if ((strWeatherInfo != null) && (strWeatherInfo.length() > 13))
+            strWeatherInfo = strWeatherInfo.substring(0, 13);
+
+        result.append(strWeatherInfo);
+
+        return result.toString();
+    }
+
+
+    // get AdditionalVersion
+    public String getAdditionalVersion() {
+        StringBuilder result = new StringBuilder();
+
+        // TO DO
+
+        return result.toString();
+    }
+
+
+    // get SubBoardVersion
+    public String getSubBoardVersion() {
+        StringBuilder result = new StringBuilder();
+
+        // TO DO
+
+        return result.toString();
+    }
+
+
+    // get HeartBeatGatewayVersion
+    public String getHeartBeatGatewayVersion() {
+        StringBuilder result = new StringBuilder();
+
+        return result.toString();
+    }
+
+
+    // get NewsVersion
+    public String getNewsVersion() {
+        StringBuilder result = new StringBuilder();
+
+        // TO DO
+
+        return result.toString();
+    }
+
+    /**
+     * (임시코드) 실시간검침기 드라이버 초기생성시 Connect 에 시간이 걸리며, <br>
+     * 실시간검침기 드라이버 초기화후 바로  API 를 가져올수 없기에, <br>
+     * 본 딜레이 코드를 임시로 적용한다.
+     */
+    @SuppressLint("HandlerLeak")
+    protected Handler mIntDriverCheckHandler = new Handler() {
+        @SuppressLint("HandlerLeak")
+        @Override
+        public void handleMessage(Message msg) {
+            if (msg.what == 0) {
+                if (Device_ApiLoad(m_wpapi) >= 0) {
+                    Device_Update(false);
+                    mIntDriverCheckHandler.sendEmptyMessageDelayed(1, 10);
+                } else {
+                    Log.d(TAG, "mIntDriverCheckHandler --> iGW200dAPI == null");
+                    mIntDriverCheckHandler.sendEmptyMessageDelayed(0, 1000);
+                }
+            } else if (msg.what == 1) {
+                Log.d(TAG, "mIntDriverCheckHandler == succes");
+
+                /**
+                 * 게이트웨이 버전을 가져온다.
+                 *
+                 * @return (String) <br>
+                 *         Program 상태 - BootLoader '1' or App '2' <br>
+                 *         BOOT 펌웨어 버전정보 - Main <br>
+                 *         BOOT 펌웨어 버전정보 - Sub <br>
+                 *         APP 펌웨어 버전정보 - Main <br>
+                 *         APP 펌웨어 버전정보 - Sub <br>
+                 *         APP 펌웨어 Build Date - Year <br>
+                 *         APP 펌웨어 Build Date - Month <br>
+                 *         APP 펌웨어 Build Date - Day <br>
+                 *         Protocol 버전정보 - Main <br>
+                 *         Protocol 버전정보 - Sub <br>
+                 *         각 정보의 구분자는 "/" 이다.
+                 */
+
+                String[] iGW_Version_array;
+                String iGW_Version = "";
+                String tempString = iGW200dAPI.GetVer();
+                if (tempString != null) {
+                    iGW_Version_array = tempString.split("/");
+                    if (iGW_Version_array.length == 10) {
+                        iGW_Version += "       Boot F/W Version: " + iGW_Version_array[1] + "." + iGW_Version_array[2] + "\n";
+                        iGW_Version += "       APP  F/W Version: " + iGW_Version_array[3] + "." + iGW_Version_array[4] + "\n";
+                        iGW_Version += "       APP  Build Date   : " + iGW_Version_array[5] + "." + iGW_Version_array[6] + "." + iGW_Version_array[7] + "\n";
+                        iGW_Version += "       Protocol Version : " + iGW_Version_array[8] + "." + iGW_Version_array[9] + "\n";
+
+                        mTV_Result.append(iGW_Version + "\n");
+                    } else {
+                        mTV_Result.append("       디바이스 연결 오류. 잠시 후에 다시 시도해 주세요." + "\n");
+                    }
+                }
+            }
+        }
+    };
+
+    /**
+     * 제어기 상태를 가져온다.
+     *
+     * @param real - (boolean) true : 실시간 , false : 가장최근
+     * @return (int) - >=0 : 성공, <0 : 실패
+     */
+    @SuppressWarnings("unused")
+    private int Device_Update(boolean real) {
+        //DebugLogOutput("[Device_Update] - Start   (real : " + real + ")");
+
+        // 1. Api Load Check
+        if (iGW200dAPI == null) {
+            Log.e(TAG, "[Device_Update] - remoteMeterApi unload !!!");
+            return -1;
+        }
+
+        // 2. reflash
+        try {
+            int ret = iGW200dAPI.Refresh(real);
+            if (ret < 0) {
+                Log.e(TAG, "[Device_Update] - iGW200dAPI.Refresh - ret (" + ret + ")" + iGW200dAPI.ErrorCode.ErrStr());
+                return -2;
+            }
+        } catch (Exception e) {
+            Log.e(TAG, "[Device_Update] - [Exception Error] iGW200dAPI.Refresh(" + real + ")");
+            e.printStackTrace();
+            return -100;
+        }
+
+        return 0;
+    }
+
+    /**
+     * 디바이스 API 를 Load 한다.
+     *
+     * @param wpapi - 생성시 전달받은 WallPadAPI
+     * @return (int) - >=0 : 성공, <0 : 실패
+     */
+    private int Device_ApiLoad(WallPadAPI wpapi) {
+        Log.d(TAG, "[Device_ApiLoad] - Start");
+
+        // 1. wpapi Check
+        if (wpapi == null) {
+            Log.e(TAG, "[Device_ApiLoad] - wpapi is null");
+            return -2;
+        }
+
+        // 3. Load API
+        Log.d(TAG, "[Device_ApiLoad] - Step1 :iGW200dAPI Load...");
+
+        try {
+            iGW200dAPI = wpapi.Get_IGW200dController();
+        } catch (Exception e) {
+            Log.e(TAG, "[Device_ApiLoad] - [Exception Error] wpapi.Get_IGW200dController");
+            e.printStackTrace();
+            return -100;
+        }
+        if (iGW200dAPI == null) {
+            Log.e(TAG, "[Device_ApiLoad] - iGW200dAPI is null");
+            return -4;
+        }
+
+        Log.d(TAG, "[Device_ApiLoad] - OK");
+
+        return 0;
+    }
+
+}

+ 113 - 113
ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/SetDeveloperPage.java

@@ -1,113 +1,113 @@
-package com.artncore.managersetting.ui.fragments;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import kr.co.icontrols.wallpadsupport.WpadSound;
-
-import android.app.Activity;
-import android.os.Bundle;
-//import android.support.v4.app.Fragment;
-import androidx.fragment.app.Fragment;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-
-import com.artncore.managersetting.ui.activities.MainActivity;
-import com.artncore.wallpadapi.WallPadAPI;
-
-import com.artncore.managersetting.R;
-
-/**
- * A list fragment representing a list of Items. This fragment also supports
- * tablet devices by allowing list items to be given an 'activated' state upon
- * selection. This helps indicate which item is currently being viewed in a
- * {link ItemDetailFragment}.
- * <p>
- * Activities containing this fragment MUST implement the {link Callbacks}
- * interface.
- */
-public class SetDeveloperPage extends Fragment {
-    private static final String TAG = "SetDeveloperPage";
-
-    private final boolean DEBUG = true;
-
-    private Activity mActivity;
-    private WpadSound mWpadSound;
-    private WallPadAPI mWallPadAPI;
-    private List<String> mNetworkAddrList = new ArrayList<String>();
-
-
-
-
-
-
-
-
-
-    private TextView mSelectedView = null;
-
-    private int mSelectedIdx = -1;
-
-    // constructor
-    public SetDeveloperPage() {
-    }
-
-    @Override
-    public void onAttach(Activity activity) {
-        super.onAttach(activity);
-
-        mActivity = activity;
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        if (DEBUG)  Log.d(TAG, "onCreate() ");
-
-        super.onCreate(savedInstanceState);
-
-        mWallPadAPI = MainActivity.getWallPadAPI();
-        mWpadSound = MainActivity.getWpadSound();
-
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-            Bundle savedInstanceState) {
-
-        View rootView = (View) inflater.inflate(R.layout.empty_page,
-                container, false);
-
-        return (View)rootView;
-        
-    }
-
-    @Override
-    public void onViewCreated(View view, Bundle savedInstanceState) {
-        super.onViewCreated(view, savedInstanceState);
-
-        if (savedInstanceState != null) {}
-
-        
-    }
-
-    @Override
-    public void onDetach() {
-        super.onDetach();
-
-        mWallPadAPI = null;
-    }
-
-
-    @Override
-    public void onSaveInstanceState(Bundle outState) {
-        super.onSaveInstanceState(outState);
-    }
-
-
-
-
-}
+package com.artncore.managersetting.ui.fragments;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import kr.co.icontrols.wallpadsupport.WpadSound;
+
+import android.app.Activity;
+import android.os.Bundle;
+//import android.support.v4.app.Fragment;
+import androidx.fragment.app.Fragment;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+
+import com.artncore.managersetting.ui.activities.MainActivity;
+import com.artncore.wallpadapi.WallPadAPI;
+
+import com.artncore.managersetting.R;
+
+/**
+ * A list fragment representing a list of Items. This fragment also supports
+ * tablet devices by allowing list items to be given an 'activated' state upon
+ * selection. This helps indicate which item is currently being viewed in a
+ * {link ItemDetailFragment}.
+ * <p>
+ * Activities containing this fragment MUST implement the {link Callbacks}
+ * interface.
+ */
+public class SetDeveloperPage extends Fragment {
+    private static final String TAG = "SetDeveloperPage";
+
+    private final boolean DEBUG = true;
+
+    private Activity mActivity;
+    private WpadSound mWpadSound;
+    private WallPadAPI mWallPadAPI;
+    private List<String> mNetworkAddrList = new ArrayList<String>();
+
+
+
+
+
+
+
+
+
+    private TextView mSelectedView = null;
+
+    private int mSelectedIdx = -1;
+
+    // constructor
+    public SetDeveloperPage() {
+    }
+
+    @Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+
+        mActivity = activity;
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        if (DEBUG)  Log.d(TAG, "onCreate() ");
+
+        super.onCreate(savedInstanceState);
+
+        mWallPadAPI = MainActivity.getWallPadAPI();
+        mWpadSound = MainActivity.getWpadSound();
+
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+            Bundle savedInstanceState) {
+
+        View rootView = (View) inflater.inflate(R.layout.empty_page,
+                container, false);
+
+        return (View)rootView;
+        
+    }
+
+    @Override
+    public void onViewCreated(View view, Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+
+        if (savedInstanceState != null) {}
+
+        
+    }
+
+    @Override
+    public void onDetach() {
+        super.onDetach();
+
+        mWallPadAPI = null;
+    }
+
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+    }
+
+
+
+
+}

+ 752 - 752
ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/SetSeverIPFragment.java

@@ -1,752 +1,752 @@
-package com.artncore.managersetting.ui.fragments;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import kr.co.icontrols.wallpadsupport.WpadSound;
-import kr.co.icontrols.wallpadsupport.WpadSound.SND;
-
-import android.app.Activity;
-import android.content.DialogInterface;
-import android.os.Bundle;
-//import android.support.v4.app.Fragment;
-import androidx.fragment.app.Fragment;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.Button;
-import android.widget.TextView;
-
-
-import com.artncore.WallPadDataMgr.WallpadStatusData;
-
-import com.artncore.managersetting.domain.Const;
-import com.artncore.managersetting.ui.activities.MainActivity;
-import com.artncore.managersetting.util.DialogUtil;
-import com.artncore.managersetting.util.NetworkUtil;
-import com.artncore.managersetting.util.StringUtil;
-import com.artncore.wallpadapi.WallPadAPI;
-
-import com.artncore.managersetting.R;
-
-/**
- * A list fragment representing a list of Items. This fragment also supports
- * tablet devices by allowing list items to be given an 'activated' state upon
- * selection. This helps indicate which item is currently being viewed in a
- * {link ItemDetailFragment}.
- * <p>
- * Activities containing this fragment MUST implement the {link Callbacks}
- * interface.
- */
-public class SetSeverIPFragment extends Fragment {
-    private static final String TAG = "SetIPFragment";
-
-    private final boolean DEBUG = true;
-
-    public final int SETIP_TYPE_BASE =         Const.COMMON_TYPE_BASE;
-    public final int SETIP_TYPE_SET_SERVER_IP =         SETIP_TYPE_BASE + 0;
-    public final int SETIP_TYPE_SET_MANAGE_PC_IP =      SETIP_TYPE_BASE + 1;
-    public final int SETIP_TYPE_SET_FTP_IP =            SETIP_TYPE_BASE + 2;
-
-
-    private Activity mActivity;
-    private WpadSound mWpadSound;
-    private WallPadAPI mWallPadAPI;
-    private List<String> mNetworkAddrList = new ArrayList<String>();
-
-
-    private TextView tvServerIP_1;
-    private TextView tvServerIP_2;
-    private TextView tvServerIP_3;
-    private TextView tvServerIP_4;
-    private TextView tvServerPort;
-
-
-    private TextView tvManagePCIP_1;
-    private TextView tvManagePCIP_2;
-    private TextView tvManagePCIP_3;
-    private TextView tvManagePCIP_4;
-    private TextView tvManagePCPort;
-
-
-    private TextView tvFTPServerIP_1;
-    private TextView tvFTPServerIP_2;
-    private TextView tvFTPServerIP_3;
-    private TextView tvFTPServerIP_4;
-
-
-
-
-
-
-
-    private TextView mSelectedView = null;
-
-    private int mSelectedIdx = -1;
-
-    // constructor
-    public SetSeverIPFragment() {
-    }
-
-    @Override
-    public void onAttach(Activity activity) {
-        super.onAttach(activity);
-
-        mActivity = activity;
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        if (DEBUG)  Log.d(TAG, "onCreate() ");
-
-        super.onCreate(savedInstanceState);
-
-        mWallPadAPI = MainActivity.getWallPadAPI();
-        mWpadSound = MainActivity.getWpadSound();
-
-        mNetworkAddrList.add(mActivity.getString(R.string.check_network_apts_server));
-        mNetworkAddrList.add(mActivity.getString(R.string.check_network_apts_manage_pc));
-        mNetworkAddrList.add(mActivity.getString(R.string.check_network_ftp_server));
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-        View rootView = (View) inflater.inflate(R.layout.set_server_ip_manually_container,
-                container, false);
-
-        return (View)rootView;
-    }
-
-    @Override
-    public void onViewCreated(View view, Bundle savedInstanceState) {
-        super.onViewCreated(view, savedInstanceState);
-
-        if (savedInstanceState != null) {}
-
-
-        tvServerIP_1 = (TextView)view.findViewById(R.id.tv_server_ip_1);
-        tvServerIP_2 = (TextView)view.findViewById(R.id.tv_server_ip_2);
-        tvServerIP_3 = (TextView)view.findViewById(R.id.tv_server_ip_3);
-        tvServerIP_4 = (TextView)view.findViewById(R.id.tv_server_ip_4);
-        tvServerPort = (TextView)view.findViewById(R.id.tv_server_port);
-
-        tvServerIP_1.setOnClickListener(mButtonClick);
-        tvServerIP_2.setOnClickListener(mButtonClick);
-        tvServerIP_3.setOnClickListener(mButtonClick);
-        tvServerIP_4.setOnClickListener(mButtonClick);
-        tvServerPort.setOnClickListener(mButtonClick);
-
-        Button btnUpdateServerIP = (Button)view.findViewById(R.id.btn_update_server_ip);
-        btnUpdateServerIP.setOnClickListener(mButtonClick);
-
-        String serverIP = NetworkUtil.getAptsServerAddr(mActivity).IP;
-        String[] arrServerIPString = StringUtil.split(serverIP, ".");
-        if (arrServerIPString!=null && arrServerIPString.length > 3) {
-            if (DEBUG)  Log.d(TAG, "server_ip : "
-                    + arrServerIPString[0] + "."
-                    + arrServerIPString[1] + "."
-                    + arrServerIPString[2] + "."
-                    + arrServerIPString[3] + "."
-            );
-
-            tvServerIP_1.setText(arrServerIPString[0]);
-            tvServerIP_2.setText(arrServerIPString[1]);
-            tvServerIP_3.setText(arrServerIPString[2]);
-            tvServerIP_4.setText(arrServerIPString[3]);
-        }
-
-        int serverPort = NetworkUtil.getAptsServerPort(mActivity);
-        if (DEBUG)  Log.d(TAG, "serverPort : " + serverPort);
-        tvServerPort.setText(String.valueOf(serverPort));
-
-
-
-
-
-
-        tvManagePCIP_1 = (TextView)view.findViewById(R.id.tv_manage_pc_ip_1);
-        tvManagePCIP_2 = (TextView)view.findViewById(R.id.tv_manage_pc_ip_2);
-        tvManagePCIP_3 = (TextView)view.findViewById(R.id.tv_manage_pc_ip_3);
-        tvManagePCIP_4 = (TextView)view.findViewById(R.id.tv_manage_pc_ip_4);
-        tvManagePCPort = (TextView)view.findViewById(R.id.tv_manage_pc_port);
-
-        tvManagePCIP_1.setOnClickListener(mButtonClick);
-        tvManagePCIP_2.setOnClickListener(mButtonClick);
-        tvManagePCIP_3.setOnClickListener(mButtonClick);
-        tvManagePCIP_4.setOnClickListener(mButtonClick);
-        tvManagePCPort.setOnClickListener(mButtonClick);
-
-        Button btnUpdateManagePCIP = (Button)view.findViewById(R.id.btn_update_manage_pc_ip);
-        btnUpdateManagePCIP.setOnClickListener(mButtonClick);
-
-        String managePCIP = NetworkUtil.getManagePCAddr(mActivity).IP;
-        String[] arrString = StringUtil.split(managePCIP, ".");
-        if (arrString!=null && arrString.length > 3) {
-            if (DEBUG)  Log.d(TAG, "manage pc ip : "
-                    + arrString[0] + "."
-                    + arrString[1] + "."
-                    + arrString[2] + "."
-                    + arrString[3] + "."
-            );
-
-            tvManagePCIP_1.setText(arrString[0]);
-            tvManagePCIP_2.setText(arrString[1]);
-            tvManagePCIP_3.setText(arrString[2]);
-            tvManagePCIP_4.setText(arrString[3]);
-        }
-
-        WallpadStatusData wallpadStatusData = new WallpadStatusData(mActivity);
-        int manageIPPCPort = wallpadStatusData.GetManagePCPort();
-
-        if (DEBUG)  Log.d(TAG, "serverPort : " + manageIPPCPort);
-        tvManagePCPort.setText(String.valueOf(manageIPPCPort));
-
-
-
-
-
-
-        tvFTPServerIP_1 = (TextView)view.findViewById(R.id.tv_ftp_server_ip_1);
-        tvFTPServerIP_2 = (TextView)view.findViewById(R.id.tv_ftp_server_ip_2);
-        tvFTPServerIP_3 = (TextView)view.findViewById(R.id.tv_ftp_server_ip_3);
-        tvFTPServerIP_4 = (TextView)view.findViewById(R.id.tv_ftp_server_ip_4);
-
-        tvFTPServerIP_1.setOnClickListener(mButtonClick);
-        tvFTPServerIP_2.setOnClickListener(mButtonClick);
-        tvFTPServerIP_3.setOnClickListener(mButtonClick);
-        tvFTPServerIP_4.setOnClickListener(mButtonClick);
-
-        Button btnUpdateFTPServerIP = (Button)view.findViewById(R.id.btn_update_ftp_server_ip);
-        btnUpdateFTPServerIP.setOnClickListener(mButtonClick);
-
-        String FTPServerIP = wallpadStatusData.GetFTPIP();
-        wallpadStatusData.closeDB();
-
-        String[] arrFTPIPString = StringUtil.split(FTPServerIP, ".");
-/**/
-    if (arrFTPIPString!=null && arrFTPIPString.length > 3) {
-            if (DEBUG)  Log.d(TAG, "FTP server ip : "
-                    + arrFTPIPString[0] + "."
-                    + arrFTPIPString[1] + "."
-                    + arrFTPIPString[2] + "."
-                    + arrFTPIPString[3] + "."
-            );
-
-            tvFTPServerIP_1.setText(arrFTPIPString[0]);
-            tvFTPServerIP_2.setText(arrFTPIPString[1]);
-            tvFTPServerIP_3.setText(arrFTPIPString[2]);
-            tvFTPServerIP_4.setText(arrFTPIPString[3]);
-        }
-/**/
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-        Button btnNum1 = (Button)view.findViewById(R.id.num1);
-        Button btnNum2 = (Button)view.findViewById(R.id.num2);
-        Button btnNum3 = (Button)view.findViewById(R.id.num3);
-        Button btnNum4 = (Button)view.findViewById(R.id.num4);
-        Button btnNum5 = (Button)view.findViewById(R.id.num5);
-        Button btnNum6 = (Button)view.findViewById(R.id.num6);
-        Button btnNum7 = (Button)view.findViewById(R.id.num7);
-        Button btnNum8 = (Button)view.findViewById(R.id.num8);
-        Button btnNum9 = (Button)view.findViewById(R.id.num9);
-        Button btnNum0 = (Button)view.findViewById(R.id.num0);
-        Button btnDot = (Button)view.findViewById(R.id.dot);
-        Button btnEraser = (Button)view.findViewById(R.id.btn_eraser);
-
-        btnNum1.setOnClickListener(mNumButtonClick);
-        btnNum2.setOnClickListener(mNumButtonClick);
-        btnNum3.setOnClickListener(mNumButtonClick);
-        btnNum4.setOnClickListener(mNumButtonClick);
-        btnNum5.setOnClickListener(mNumButtonClick);
-        btnNum6.setOnClickListener(mNumButtonClick);
-        btnNum7.setOnClickListener(mNumButtonClick);
-        btnNum8.setOnClickListener(mNumButtonClick);
-        btnNum9.setOnClickListener(mNumButtonClick);
-        btnNum0.setOnClickListener(mNumButtonClick);
-        btnDot.setOnClickListener(mNumButtonClick);
-        btnEraser.setOnClickListener(mNumButtonClick);
-    }
-
-    @Override
-    public void onDetach() {
-        super.onDetach();
-
-        mWallPadAPI = null;
-    }
-
-
-    @Override
-    public void onSaveInstanceState(Bundle outState) {
-        super.onSaveInstanceState(outState);
-    }
-
-
-
-    private View.OnClickListener mButtonClick = new View.OnClickListener() {
-        @Override
-        public void onClick(View v) {
-
-            MainActivity.setFinishTimerReset();
-
-            mWpadSound.Play(SND.effect.TOUCH_LATCHED);
-            switch(v.getId())
-            {
-                case R.id.tv_server_ip_1:
-                case R.id.tv_server_ip_2:
-                case R.id.tv_server_ip_3:
-                case R.id.tv_server_ip_4:
-                case R.id.tv_server_port:
-
-                case R.id.tv_manage_pc_ip_1:
-                case R.id.tv_manage_pc_ip_2:
-                case R.id.tv_manage_pc_ip_3:
-                case R.id.tv_manage_pc_ip_4:
-                case R.id.tv_manage_pc_port:
-
-                case R.id.tv_ftp_server_ip_1:
-                case R.id.tv_ftp_server_ip_2:
-                case R.id.tv_ftp_server_ip_3:
-                case R.id.tv_ftp_server_ip_4:
-                {
-                    if (mSelectedView != null) {
-                        mSelectedView.setBackgroundColor(mActivity.getResources().getColor(R.color.textview_default));
-                    }
-
-                    mSelectedView = (TextView)v;
-                    v.setBackgroundColor(mActivity.getResources().getColor(R.color.textview_selected));
-                }
-                break;
-
-                case R.id.btn_update_server_ip:
-                {
-                    if (DEBUG)  Log.d(TAG, "onClick() btn_update_server_ip" );
-
-                    //String controllerName = mNetworkAddrList.get(mSelectedIdx);
-                    //if (DEBUG)    Toast.makeText(mActivity, controllerName + " test", Toast.LENGTH_SHORT).show();
-
-                    doUpdateIP(SETIP_TYPE_SET_SERVER_IP);
-                }
-                break;
-
-                case R.id.btn_update_manage_pc_ip:
-                {
-                    if (DEBUG)  Log.d(TAG, "onClick() btn_update_manage_pc_ip" );
-
-                    //String controllerName = mNetworkAddrList.get(mSelectedIdx);
-                    //if (DEBUG)    Toast.makeText(mActivity, controllerName + " test", Toast.LENGTH_SHORT).show();
-
-                    doUpdateIP(SETIP_TYPE_SET_MANAGE_PC_IP);
-                }
-                break;
-
-                case R.id.btn_update_ftp_server_ip:
-                {
-                    if (DEBUG)  Log.d(TAG, "onClick() btn_update_fpt_server_ip" );
-
-                    //String controllerName = mNetworkAddrList.get(mSelectedIdx);
-                    //if (DEBUG)    Toast.makeText(mActivity, controllerName + " test", Toast.LENGTH_SHORT).show();
-
-                    doUpdateIP(SETIP_TYPE_SET_FTP_IP);
-                }
-                break;
-
-                default:
-                    break;
-            }
-
-        }
-    };
-
-
-    private View.OnClickListener mNumButtonClick = new View.OnClickListener() {
-        @Override
-        public void onClick(View v) {
-
-            mWpadSound.Play(SND.effect.TOUCH_LATCHED);
-
-            int getnum = -1;
-            switch(v.getId())
-            {
-                case R.id.num1: getnum = 1;
-                    break;
-                case R.id.num2: getnum = 2;
-                    break;
-                case R.id.num3: getnum = 3;
-                    break;
-                case R.id.num4: getnum = 4;
-                    break;
-                case R.id.num5: getnum = 5;
-                    break;
-                case R.id.num6: getnum = 6;
-                    break;
-                case R.id.num7: getnum = 7;
-                    break;
-                case R.id.num8: getnum = 8;
-                    break;
-                case R.id.num9: getnum = 9;
-                    break;
-                case R.id.num0: getnum = 0;
-                    break;
-
-                case R.id.dot:
-                    break;
-
-                case R.id.btn_eraser:
-                    eraseProc();
-                    break;
-
-                //            case R.id.btn_dong:
-                //                set_mode((byte)0);
-                //                break;
-
-    /*
-                case R.id.btn_set:
-                {
-                    if (mHo.length() < 3 || mDong.length() < 3)
-                    {
-                        String title = getString(R.string.menu_title_set_dongho);
-                        String message = "동/호 입력 값을 확인 바랍니다. 길이 오류";
-                        openDialog(title, message);
-
-                        return;
-                    }
-
-                    int secNum =  Integer.parseInt(mDong.substring(mDong.length()-2));
-                    int thirdNum = Integer.parseInt(mHo.substring(0, mHo.length()-2));
-                    int forthNum = Integer.parseInt(mHo.substring(mHo.length()-2));
-                    if (thirdNum > 125 || forthNum > 30)
-                    {
-                        String title = getString(R.string.menu_title_set_dongho);
-                        String message = "동/호 입력 값을 확인 바랍니다. IP 생성 오류";
-                        openDialog(title, message);
-                    }
-                    else
-                    {
-                        //setNetworkAddr(secNum, thirdNum, forthNum);
-
-                        String title = getString(R.string.menu_title_set_dongho);
-                        String message = mDong + getString(R.string.dong) + " "
-                                            + mHo+ getString(R.string.ho) + " "
-                                            +" 로 설정하시겠습니까?";
-                        openSetDongHoDialog(title, message, secNum, thirdNum, forthNum);
-                    }
-                }
-                break;
-    */
-
-            }
-
-            if (getnum>-1)
-                addProc(getnum);
-        }
-    };
-
-
-    // 마지막 입력문자 제거
-    private void eraseProc()
-    {
-        if (mSelectedView == null)  return;
-
-        String selectText = mSelectedView.getText().toString();
-        if (selectText.length() == 0) return;
-
-        selectText = selectText.substring(0,selectText.length()-1);
-        mSelectedView.setText(selectText);
-    }
-
-
-    // 입력문자 추가
-    private void addProc(int getNum)
-    {
-        if (mSelectedView == null)  return;
-
-        String selectText = mSelectedView.getText().toString();
-
-        selectText += String.valueOf(getNum);
-
-        mSelectedView.setText(selectText);
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-
-    // IP confirm dialog
-    private void doUpdateIP(int type) {
-        switch (type) {
-            case SETIP_TYPE_SET_SERVER_IP:
-            {
-                String strFirstNum =   tvServerIP_1.getText().toString();
-                String strSecondNum = tvServerIP_2.getText().toString();
-                String strThirtNum =   tvServerIP_3.getText().toString();
-                String strFouthNum =   tvServerIP_4.getText().toString();
-                String strPortNum =    tvServerPort.getText().toString();
-
-                if ((strFirstNum.length() < 1)
-                        || (strSecondNum.length() < 1)
-                        || (strThirtNum.length() < 1)
-                        || (strFouthNum.length() < 1)
-                        || (strPortNum.length() < 1)
-                        ) {
-                    return;
-                }
-
-                int firstNum =  Integer.parseInt(strFirstNum);
-                int secNum =  Integer.parseInt(strSecondNum);
-                int thirdNum = Integer.parseInt(strThirtNum);
-                int forthNum = Integer.parseInt(strFouthNum);
-                int portNum = Integer.parseInt(strPortNum);
-                if (firstNum > 255 || secNum > 255 || thirdNum > 255 || forthNum > 255)
-                {
-                    String title = getString(R.string.check_network_apts_server);
-                    String message = "동/호 입력 값을 확인 바랍니다. IP 생성 오류";
-                    openDialog(title, message);
-                }
-                else
-                {
-                    String strIP = strFirstNum
-                            + "." + strSecondNum
-                            + "." + strThirtNum
-                            + "." + strFouthNum;
-
-                    String title = "Set Server IP & port";
-                    String message = "IP : " + strFirstNum + "."
-                            + strSecondNum + "."
-                            + strThirtNum + "."
-                            + strFouthNum
-                            + ", Port : " + strPortNum;
-                    openSetIPDialog(type, title, message, strIP, portNum);
-                }
-            }
-            break;
-
-            case SETIP_TYPE_SET_MANAGE_PC_IP:
-            {
-                String strFirstNum =   tvManagePCIP_1.getText().toString();
-                String strSecondNum = tvManagePCIP_2.getText().toString();
-                String strThirtNum =   tvManagePCIP_3.getText().toString();
-                String strFouthNum =   tvManagePCIP_4.getText().toString();
-                String strPortNum =    tvManagePCPort.getText().toString();
-
-                if ((strFirstNum.length() < 1)
-                        || (strSecondNum.length() < 1)
-                        || (strThirtNum.length() < 1)
-                        || (strFouthNum.length() < 1)
-                        || (strPortNum.length() < 1)
-                        ) {
-                    return;
-                }
-
-                int firstNum =  Integer.parseInt(strFirstNum);
-                int secNum =  Integer.parseInt(strSecondNum);
-                int thirdNum = Integer.parseInt(strThirtNum);
-                int forthNum = Integer.parseInt(strFouthNum);
-                int portNum = Integer.parseInt(strPortNum);
-                if (firstNum > 255 || secNum > 255 || thirdNum > 255 || forthNum > 255)
-                {
-                    String title = getString(R.string.check_network_apts_manage_pc);
-                    String message = "동/호 입력 값을 확인 바랍니다. IP 생성 오류";
-                    openDialog(title, message);
-                }
-                else
-                {
-                    String strIP = strFirstNum
-                            + "." + strSecondNum
-                            + "." + strThirtNum
-                            + "." + strFouthNum;
-
-                    String title = "Set ManagePC IP & port";
-                    String message = "IP : " + strFirstNum + "."
-                            + strSecondNum + "."
-                            + strThirtNum + "."
-                            + strFouthNum
-                            + ", Port : " + strPortNum;
-                    openSetIPDialog(type, title, message, strIP, portNum);
-                }
-            }
-            break;
-
-            case SETIP_TYPE_SET_FTP_IP:
-            {
-                String strFirstNum =   tvFTPServerIP_1.getText().toString();
-                String strSecondNum = tvFTPServerIP_2.getText().toString();
-                String strThirtNum =   tvFTPServerIP_3.getText().toString();
-                String strFouthNum =   tvFTPServerIP_4.getText().toString();
-
-                if ((strFirstNum.length() < 1)
-                        || (strSecondNum.length() < 1)
-                        || (strThirtNum.length() < 1)
-                        || (strFouthNum.length() < 1)
-                        ) {
-                    return;
-                }
-
-                int firstNum =  Integer.parseInt(strFirstNum);
-                int secNum =  Integer.parseInt(strSecondNum);
-                int thirdNum = Integer.parseInt(strThirtNum);
-                int forthNum = Integer.parseInt(strFouthNum);
-                if (firstNum > 255 || secNum > 255 || thirdNum > 255 || forthNum > 255)
-                {
-                    String title = getString(R.string.check_network_ftp_server);
-                    String message = "동/호 입력 값을 확인 바랍니다. IP 생성 오류";
-                    openDialog(title, message);
-                }
-                else
-                {
-                    String strIP = strFirstNum
-                            + "." + strSecondNum
-                            + "." + strThirtNum
-                            + "." + strFouthNum;
-
-                    String title = "Set FTPServer IP & port";
-                    String message = "IP : " + strFirstNum + "."
-                            + strSecondNum + "."
-                            + strThirtNum + "."
-                            + strFouthNum;
-                    openSetIPDialog(type, title, message, strIP, -1);
-                }
-            }
-            break;
-
-
-            default:
-                break;
-        }
-    }
-
-
-
-    private DialogUtil mDialog;
-    // open dialog
-    public void openDialog(final String title, final String message) {
-        mDialog = new DialogUtil(mActivity);
-
-        DialogInterface.OnClickListener positiveListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        dialog.dismiss();
-                        MainActivity.setFinishTimerReset();
-                    }
-                };
-
-        mDialog.openCommonDialog(title, message, positiveListener, null);
-    }
-
-    // open FinishDialog
-    public void openFinishDialog(final String title, final String message) {
-        mDialog = new DialogUtil(mActivity);
-
-        DialogInterface.OnClickListener positiveListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        //finish();
-                        MainActivity.setFinishTimerReset();
-                    }
-                };
-
-        mDialog.openCommonDialog(title, message, positiveListener, null);
-    }
-
-
-    // open SetIPDialog
-    public void openSetIPDialog(final int type, final String title, final String message
-            , final String strIP, final int portNum) {
-        mDialog = new DialogUtil(mActivity);
-
-        DialogInterface.OnClickListener positiveListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        dialog.dismiss();
-                        MainActivity.setFinishTimerReset();
-                        setNetworkAddr(type, strIP, portNum); ;
-                    }
-                };
-
-        DialogInterface.OnClickListener negativeListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        dialog.dismiss();
-                        MainActivity.setFinishTimerReset();
-                    }
-                };
-
-        mDialog.openCommonDialog(title, message, positiveListener, negativeListener);
-    }
-
-    // 입력된 type의 IP를 update
-    private void setNetworkAddr(final int type, final String strIP, final int portNum) {
-        switch (type) {
-            case SETIP_TYPE_SET_SERVER_IP:
-            {
-                WallpadStatusData wallpadStatusData = new WallpadStatusData(mActivity);
-                wallpadStatusData.SetServerIP(strIP, portNum);
-                wallpadStatusData.closeDB();
-
-                String title = getString(R.string.check_network_apts_server);
-                String message = "IP : " + strIP
-                        + "\n port : " + portNum
-                        + "\n 로 설정되었습니다.";
-                openFinishDialog(title, message);
-            }
-            break;
-
-            case SETIP_TYPE_SET_MANAGE_PC_IP:
-            {
-                WallpadStatusData wallpadStatusData = new WallpadStatusData(mActivity);
-                wallpadStatusData.SetManagePC(strIP, portNum);
-                wallpadStatusData.closeDB();
-
-                String title = getString(R.string.check_network_apts_manage_pc);
-                String message = "IP : " + strIP
-                        + "\n port : " + portNum
-                        + "\n 로 설정되었습니다.";
-                openFinishDialog(title, message);
-            }
-            break;
-
-            case SETIP_TYPE_SET_FTP_IP:
-            {
-                WallpadStatusData wallpadStatusData = new WallpadStatusData(mActivity);
-                wallpadStatusData.SetFTPIP(strIP);
-                wallpadStatusData.closeDB();
-
-                String title = getString(R.string.check_network_ftp_server);
-                String message = "IP : " + strIP
-                        + "\n 로 설정되었습니다.";
-                openFinishDialog(title, message);
-            }
-            break;
-
-            default:
-                break;
-        }
-    }
-
-
-}
+package com.artncore.managersetting.ui.fragments;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import kr.co.icontrols.wallpadsupport.WpadSound;
+import kr.co.icontrols.wallpadsupport.WpadSound.SND;
+
+import android.app.Activity;
+import android.content.DialogInterface;
+import android.os.Bundle;
+//import android.support.v4.app.Fragment;
+import androidx.fragment.app.Fragment;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.TextView;
+
+
+import com.artncore.WallPadDataMgr.WallpadStatusData;
+
+import com.artncore.managersetting.domain.Const;
+import com.artncore.managersetting.ui.activities.MainActivity;
+import com.artncore.managersetting.util.DialogUtil;
+import com.artncore.managersetting.util.NetworkUtil;
+import com.artncore.managersetting.util.StringUtil;
+import com.artncore.wallpadapi.WallPadAPI;
+
+import com.artncore.managersetting.R;
+
+/**
+ * A list fragment representing a list of Items. This fragment also supports
+ * tablet devices by allowing list items to be given an 'activated' state upon
+ * selection. This helps indicate which item is currently being viewed in a
+ * {link ItemDetailFragment}.
+ * <p>
+ * Activities containing this fragment MUST implement the {link Callbacks}
+ * interface.
+ */
+public class SetSeverIPFragment extends Fragment {
+    private static final String TAG = "SetIPFragment";
+
+    private final boolean DEBUG = true;
+
+    public final int SETIP_TYPE_BASE =         Const.COMMON_TYPE_BASE;
+    public final int SETIP_TYPE_SET_SERVER_IP =         SETIP_TYPE_BASE + 0;
+    public final int SETIP_TYPE_SET_MANAGE_PC_IP =      SETIP_TYPE_BASE + 1;
+    public final int SETIP_TYPE_SET_FTP_IP =            SETIP_TYPE_BASE + 2;
+
+
+    private Activity mActivity;
+    private WpadSound mWpadSound;
+    private WallPadAPI mWallPadAPI;
+    private List<String> mNetworkAddrList = new ArrayList<String>();
+
+
+    private TextView tvServerIP_1;
+    private TextView tvServerIP_2;
+    private TextView tvServerIP_3;
+    private TextView tvServerIP_4;
+    private TextView tvServerPort;
+
+
+    private TextView tvManagePCIP_1;
+    private TextView tvManagePCIP_2;
+    private TextView tvManagePCIP_3;
+    private TextView tvManagePCIP_4;
+    private TextView tvManagePCPort;
+
+
+    private TextView tvFTPServerIP_1;
+    private TextView tvFTPServerIP_2;
+    private TextView tvFTPServerIP_3;
+    private TextView tvFTPServerIP_4;
+
+
+
+
+
+
+
+    private TextView mSelectedView = null;
+
+    private int mSelectedIdx = -1;
+
+    // constructor
+    public SetSeverIPFragment() {
+    }
+
+    @Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+
+        mActivity = activity;
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        if (DEBUG)  Log.d(TAG, "onCreate() ");
+
+        super.onCreate(savedInstanceState);
+
+        mWallPadAPI = MainActivity.getWallPadAPI();
+        mWpadSound = MainActivity.getWpadSound();
+
+        mNetworkAddrList.add(mActivity.getString(R.string.check_network_apts_server));
+        mNetworkAddrList.add(mActivity.getString(R.string.check_network_apts_manage_pc));
+        mNetworkAddrList.add(mActivity.getString(R.string.check_network_ftp_server));
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+                             Bundle savedInstanceState) {
+        View rootView = (View) inflater.inflate(R.layout.set_server_ip_manually_container,
+                container, false);
+
+        return (View)rootView;
+    }
+
+    @Override
+    public void onViewCreated(View view, Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+
+        if (savedInstanceState != null) {}
+
+
+        tvServerIP_1 = (TextView)view.findViewById(R.id.tv_server_ip_1);
+        tvServerIP_2 = (TextView)view.findViewById(R.id.tv_server_ip_2);
+        tvServerIP_3 = (TextView)view.findViewById(R.id.tv_server_ip_3);
+        tvServerIP_4 = (TextView)view.findViewById(R.id.tv_server_ip_4);
+        tvServerPort = (TextView)view.findViewById(R.id.tv_server_port);
+
+        tvServerIP_1.setOnClickListener(mButtonClick);
+        tvServerIP_2.setOnClickListener(mButtonClick);
+        tvServerIP_3.setOnClickListener(mButtonClick);
+        tvServerIP_4.setOnClickListener(mButtonClick);
+        tvServerPort.setOnClickListener(mButtonClick);
+
+        Button btnUpdateServerIP = (Button)view.findViewById(R.id.btn_update_server_ip);
+        btnUpdateServerIP.setOnClickListener(mButtonClick);
+
+        String serverIP = NetworkUtil.getAptsServerAddr(mActivity).IP;
+        String[] arrServerIPString = StringUtil.split(serverIP, ".");
+        if (arrServerIPString.length > 3) {
+            if (DEBUG)  Log.d(TAG, "server_ip : "
+                    + arrServerIPString[0] + "."
+                    + arrServerIPString[1] + "."
+                    + arrServerIPString[2] + "."
+                    + arrServerIPString[3] + "."
+            );
+
+            tvServerIP_1.setText(arrServerIPString[0]);
+            tvServerIP_2.setText(arrServerIPString[1]);
+            tvServerIP_3.setText(arrServerIPString[2]);
+            tvServerIP_4.setText(arrServerIPString[3]);
+        }
+
+        int serverPort = NetworkUtil.getAptsServerPort(mActivity);
+        if (DEBUG)  Log.d(TAG, "serverPort : " + serverPort);
+        tvServerPort.setText(String.valueOf(serverPort));
+
+
+
+
+
+
+        tvManagePCIP_1 = (TextView)view.findViewById(R.id.tv_manage_pc_ip_1);
+        tvManagePCIP_2 = (TextView)view.findViewById(R.id.tv_manage_pc_ip_2);
+        tvManagePCIP_3 = (TextView)view.findViewById(R.id.tv_manage_pc_ip_3);
+        tvManagePCIP_4 = (TextView)view.findViewById(R.id.tv_manage_pc_ip_4);
+        tvManagePCPort = (TextView)view.findViewById(R.id.tv_manage_pc_port);
+
+        tvManagePCIP_1.setOnClickListener(mButtonClick);
+        tvManagePCIP_2.setOnClickListener(mButtonClick);
+        tvManagePCIP_3.setOnClickListener(mButtonClick);
+        tvManagePCIP_4.setOnClickListener(mButtonClick);
+        tvManagePCPort.setOnClickListener(mButtonClick);
+
+        Button btnUpdateManagePCIP = (Button)view.findViewById(R.id.btn_update_manage_pc_ip);
+        btnUpdateManagePCIP.setOnClickListener(mButtonClick);
+
+        String managePCIP = NetworkUtil.getManagePCAddr(mActivity).IP;
+        String[] arrString = StringUtil.split(managePCIP, ".");
+        if (arrString.length > 3) {
+            if (DEBUG)  Log.d(TAG, "manage pc ip : "
+                    + arrString[0] + "."
+                    + arrString[1] + "."
+                    + arrString[2] + "."
+                    + arrString[3] + "."
+            );
+
+            tvManagePCIP_1.setText(arrString[0]);
+            tvManagePCIP_2.setText(arrString[1]);
+            tvManagePCIP_3.setText(arrString[2]);
+            tvManagePCIP_4.setText(arrString[3]);
+        }
+
+        WallpadStatusData wallpadStatusData = new WallpadStatusData(mActivity);
+        int manageIPPCPort = wallpadStatusData.GetManagePCPort();
+
+        if (DEBUG)  Log.d(TAG, "serverPort : " + manageIPPCPort);
+        tvManagePCPort.setText(String.valueOf(manageIPPCPort));
+
+
+
+
+
+
+        tvFTPServerIP_1 = (TextView)view.findViewById(R.id.tv_ftp_server_ip_1);
+        tvFTPServerIP_2 = (TextView)view.findViewById(R.id.tv_ftp_server_ip_2);
+        tvFTPServerIP_3 = (TextView)view.findViewById(R.id.tv_ftp_server_ip_3);
+        tvFTPServerIP_4 = (TextView)view.findViewById(R.id.tv_ftp_server_ip_4);
+
+        tvFTPServerIP_1.setOnClickListener(mButtonClick);
+        tvFTPServerIP_2.setOnClickListener(mButtonClick);
+        tvFTPServerIP_3.setOnClickListener(mButtonClick);
+        tvFTPServerIP_4.setOnClickListener(mButtonClick);
+
+        Button btnUpdateFTPServerIP = (Button)view.findViewById(R.id.btn_update_ftp_server_ip);
+        btnUpdateFTPServerIP.setOnClickListener(mButtonClick);
+
+        String FTPServerIP = wallpadStatusData.GetFTPIP();
+        wallpadStatusData.closeDB();
+
+        String[] arrFTPIPString = StringUtil.split(FTPServerIP, ".");
+/**/
+        if (arrFTPIPString.length > 3) {
+            if (DEBUG)  Log.d(TAG, "FTP server ip : "
+                    + arrFTPIPString[0] + "."
+                    + arrFTPIPString[1] + "."
+                    + arrFTPIPString[2] + "."
+                    + arrFTPIPString[3] + "."
+            );
+
+            tvFTPServerIP_1.setText(arrFTPIPString[0]);
+            tvFTPServerIP_2.setText(arrFTPIPString[1]);
+            tvFTPServerIP_3.setText(arrFTPIPString[2]);
+            tvFTPServerIP_4.setText(arrFTPIPString[3]);
+        }
+/**/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+        Button btnNum1 = (Button)view.findViewById(R.id.num1);
+        Button btnNum2 = (Button)view.findViewById(R.id.num2);
+        Button btnNum3 = (Button)view.findViewById(R.id.num3);
+        Button btnNum4 = (Button)view.findViewById(R.id.num4);
+        Button btnNum5 = (Button)view.findViewById(R.id.num5);
+        Button btnNum6 = (Button)view.findViewById(R.id.num6);
+        Button btnNum7 = (Button)view.findViewById(R.id.num7);
+        Button btnNum8 = (Button)view.findViewById(R.id.num8);
+        Button btnNum9 = (Button)view.findViewById(R.id.num9);
+        Button btnNum0 = (Button)view.findViewById(R.id.num0);
+        Button btnDot = (Button)view.findViewById(R.id.dot);
+        Button btnEraser = (Button)view.findViewById(R.id.btn_eraser);
+
+        btnNum1.setOnClickListener(mNumButtonClick);
+        btnNum2.setOnClickListener(mNumButtonClick);
+        btnNum3.setOnClickListener(mNumButtonClick);
+        btnNum4.setOnClickListener(mNumButtonClick);
+        btnNum5.setOnClickListener(mNumButtonClick);
+        btnNum6.setOnClickListener(mNumButtonClick);
+        btnNum7.setOnClickListener(mNumButtonClick);
+        btnNum8.setOnClickListener(mNumButtonClick);
+        btnNum9.setOnClickListener(mNumButtonClick);
+        btnNum0.setOnClickListener(mNumButtonClick);
+        btnDot.setOnClickListener(mNumButtonClick);
+        btnEraser.setOnClickListener(mNumButtonClick);
+    }
+
+    @Override
+    public void onDetach() {
+        super.onDetach();
+
+        mWallPadAPI = null;
+    }
+
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+    }
+
+
+
+    private View.OnClickListener mButtonClick = new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+
+            MainActivity.setFinishTimerReset();
+
+            mWpadSound.Play(SND.effect.TOUCH_LATCHED);
+            switch(v.getId())
+            {
+                case R.id.tv_server_ip_1:
+                case R.id.tv_server_ip_2:
+                case R.id.tv_server_ip_3:
+                case R.id.tv_server_ip_4:
+                case R.id.tv_server_port:
+
+                case R.id.tv_manage_pc_ip_1:
+                case R.id.tv_manage_pc_ip_2:
+                case R.id.tv_manage_pc_ip_3:
+                case R.id.tv_manage_pc_ip_4:
+                case R.id.tv_manage_pc_port:
+
+                case R.id.tv_ftp_server_ip_1:
+                case R.id.tv_ftp_server_ip_2:
+                case R.id.tv_ftp_server_ip_3:
+                case R.id.tv_ftp_server_ip_4:
+                {
+                    if (mSelectedView != null) {
+                        mSelectedView.setBackgroundColor(mActivity.getResources().getColor(R.color.textview_default));
+                    }
+
+                    mSelectedView = (TextView)v;
+                    v.setBackgroundColor(mActivity.getResources().getColor(R.color.textview_selected));
+                }
+                break;
+
+                case R.id.btn_update_server_ip:
+                {
+                    if (DEBUG)  Log.d(TAG, "onClick() btn_update_server_ip" );
+
+                    //String controllerName = mNetworkAddrList.get(mSelectedIdx);
+                    //if (DEBUG)    Toast.makeText(mActivity, controllerName + " test", Toast.LENGTH_SHORT).show();
+
+                    doUpdateIP(SETIP_TYPE_SET_SERVER_IP);
+                }
+                break;
+
+                case R.id.btn_update_manage_pc_ip:
+                {
+                    if (DEBUG)  Log.d(TAG, "onClick() btn_update_manage_pc_ip" );
+
+                    //String controllerName = mNetworkAddrList.get(mSelectedIdx);
+                    //if (DEBUG)    Toast.makeText(mActivity, controllerName + " test", Toast.LENGTH_SHORT).show();
+
+                    doUpdateIP(SETIP_TYPE_SET_MANAGE_PC_IP);
+                }
+                break;
+
+                case R.id.btn_update_ftp_server_ip:
+                {
+                    if (DEBUG)  Log.d(TAG, "onClick() btn_update_fpt_server_ip" );
+
+                    //String controllerName = mNetworkAddrList.get(mSelectedIdx);
+                    //if (DEBUG)    Toast.makeText(mActivity, controllerName + " test", Toast.LENGTH_SHORT).show();
+
+                    doUpdateIP(SETIP_TYPE_SET_FTP_IP);
+                }
+                break;
+
+                default:
+                    break;
+            }
+
+        }
+    };
+
+
+    private View.OnClickListener mNumButtonClick = new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+
+            mWpadSound.Play(SND.effect.TOUCH_LATCHED);
+
+            int getnum = -1;
+            switch(v.getId())
+            {
+                case R.id.num1: getnum = 1;
+                    break;
+                case R.id.num2: getnum = 2;
+                    break;
+                case R.id.num3: getnum = 3;
+                    break;
+                case R.id.num4: getnum = 4;
+                    break;
+                case R.id.num5: getnum = 5;
+                    break;
+                case R.id.num6: getnum = 6;
+                    break;
+                case R.id.num7: getnum = 7;
+                    break;
+                case R.id.num8: getnum = 8;
+                    break;
+                case R.id.num9: getnum = 9;
+                    break;
+                case R.id.num0: getnum = 0;
+                    break;
+
+                case R.id.dot:
+                    break;
+
+                case R.id.btn_eraser:
+                    eraseProc();
+                    break;
+
+                //            case R.id.btn_dong:
+                //                set_mode((byte)0);
+                //                break;
+
+    /*
+                case R.id.btn_set:
+                {
+                    if (mHo.length() < 3 || mDong.length() < 3)
+                    {
+                        String title = getString(R.string.menu_title_set_dongho);
+                        String message = "동/호 입력 값을 확인 바랍니다. 길이 오류";
+                        openDialog(title, message);
+
+                        return;
+                    }
+
+                    int secNum =  Integer.parseInt(mDong.substring(mDong.length()-2));
+                    int thirdNum = Integer.parseInt(mHo.substring(0, mHo.length()-2));
+                    int forthNum = Integer.parseInt(mHo.substring(mHo.length()-2));
+                    if (thirdNum > 125 || forthNum > 30)
+                    {
+                        String title = getString(R.string.menu_title_set_dongho);
+                        String message = "동/호 입력 값을 확인 바랍니다. IP 생성 오류";
+                        openDialog(title, message);
+                    }
+                    else
+                    {
+                        //setNetworkAddr(secNum, thirdNum, forthNum);
+
+                        String title = getString(R.string.menu_title_set_dongho);
+                        String message = mDong + getString(R.string.dong) + " "
+                                            + mHo+ getString(R.string.ho) + " "
+                                            +" 로 설정하시겠습니까?";
+                        openSetDongHoDialog(title, message, secNum, thirdNum, forthNum);
+                    }
+                }
+                break;
+    */
+
+            }
+
+            if (getnum>-1)
+                addProc(getnum);
+        }
+    };
+
+
+    // 마지막 입력문자 제거
+    private void eraseProc()
+    {
+        if (mSelectedView == null)  return;
+
+        String selectText = mSelectedView.getText().toString();
+        if (selectText.length() == 0) return;
+
+        selectText = selectText.substring(0,selectText.length()-1);
+        mSelectedView.setText(selectText);
+    }
+
+
+    // 입력문자 추가
+    private void addProc(int getNum)
+    {
+        if (mSelectedView == null)  return;
+
+        String selectText = mSelectedView.getText().toString();
+
+        selectText += String.valueOf(getNum);
+
+        mSelectedView.setText(selectText);
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+    // IP confirm dialog
+    private void doUpdateIP(int type) {
+        switch (type) {
+            case SETIP_TYPE_SET_SERVER_IP:
+            {
+                String strFirstNum =   tvServerIP_1.getText().toString();
+                String strSecondNum = tvServerIP_2.getText().toString();
+                String strThirtNum =   tvServerIP_3.getText().toString();
+                String strFouthNum =   tvServerIP_4.getText().toString();
+                String strPortNum =    tvServerPort.getText().toString();
+
+                if ((strFirstNum.length() < 1)
+                        || (strSecondNum.length() < 1)
+                        || (strThirtNum.length() < 1)
+                        || (strFouthNum.length() < 1)
+                        || (strPortNum.length() < 1)
+                        ) {
+                    return;
+                }
+
+                int firstNum =  Integer.parseInt(strFirstNum);
+                int secNum =  Integer.parseInt(strSecondNum);
+                int thirdNum = Integer.parseInt(strThirtNum);
+                int forthNum = Integer.parseInt(strFouthNum);
+                int portNum = Integer.parseInt(strPortNum);
+                if (firstNum > 255 || secNum > 255 || thirdNum > 255 || forthNum > 255)
+                {
+                    String title = getString(R.string.check_network_apts_server);
+                    String message = "동/호 입력 값을 확인 바랍니다. IP 생성 오류";
+                    openDialog(title, message);
+                }
+                else
+                {
+                    String strIP = strFirstNum
+                            + "." + strSecondNum
+                            + "." + strThirtNum
+                            + "." + strFouthNum;
+
+                    String title = "Set Server IP & port";
+                    String message = "IP : " + strFirstNum + "."
+                            + strSecondNum + "."
+                            + strThirtNum + "."
+                            + strFouthNum
+                            + ", Port : " + strPortNum;
+                    openSetIPDialog(type, title, message, strIP, portNum);
+                }
+            }
+            break;
+
+            case SETIP_TYPE_SET_MANAGE_PC_IP:
+            {
+                String strFirstNum =   tvManagePCIP_1.getText().toString();
+                String strSecondNum = tvManagePCIP_2.getText().toString();
+                String strThirtNum =   tvManagePCIP_3.getText().toString();
+                String strFouthNum =   tvManagePCIP_4.getText().toString();
+                String strPortNum =    tvManagePCPort.getText().toString();
+
+                if ((strFirstNum.length() < 1)
+                        || (strSecondNum.length() < 1)
+                        || (strThirtNum.length() < 1)
+                        || (strFouthNum.length() < 1)
+                        || (strPortNum.length() < 1)
+                        ) {
+                    return;
+                }
+
+                int firstNum =  Integer.parseInt(strFirstNum);
+                int secNum =  Integer.parseInt(strSecondNum);
+                int thirdNum = Integer.parseInt(strThirtNum);
+                int forthNum = Integer.parseInt(strFouthNum);
+                int portNum = Integer.parseInt(strPortNum);
+                if (firstNum > 255 || secNum > 255 || thirdNum > 255 || forthNum > 255)
+                {
+                    String title = getString(R.string.check_network_apts_manage_pc);
+                    String message = "동/호 입력 값을 확인 바랍니다. IP 생성 오류";
+                    openDialog(title, message);
+                }
+                else
+                {
+                    String strIP = strFirstNum
+                            + "." + strSecondNum
+                            + "." + strThirtNum
+                            + "." + strFouthNum;
+
+                    String title = "Set ManagePC IP & port";
+                    String message = "IP : " + strFirstNum + "."
+                            + strSecondNum + "."
+                            + strThirtNum + "."
+                            + strFouthNum
+                            + ", Port : " + strPortNum;
+                    openSetIPDialog(type, title, message, strIP, portNum);
+                }
+            }
+            break;
+
+            case SETIP_TYPE_SET_FTP_IP:
+            {
+                String strFirstNum =   tvFTPServerIP_1.getText().toString();
+                String strSecondNum = tvFTPServerIP_2.getText().toString();
+                String strThirtNum =   tvFTPServerIP_3.getText().toString();
+                String strFouthNum =   tvFTPServerIP_4.getText().toString();
+
+                if ((strFirstNum.length() < 1)
+                        || (strSecondNum.length() < 1)
+                        || (strThirtNum.length() < 1)
+                        || (strFouthNum.length() < 1)
+                        ) {
+                    return;
+                }
+
+                int firstNum =  Integer.parseInt(strFirstNum);
+                int secNum =  Integer.parseInt(strSecondNum);
+                int thirdNum = Integer.parseInt(strThirtNum);
+                int forthNum = Integer.parseInt(strFouthNum);
+                if (firstNum > 255 || secNum > 255 || thirdNum > 255 || forthNum > 255)
+                {
+                    String title = getString(R.string.check_network_ftp_server);
+                    String message = "동/호 입력 값을 확인 바랍니다. IP 생성 오류";
+                    openDialog(title, message);
+                }
+                else
+                {
+                    String strIP = strFirstNum
+                            + "." + strSecondNum
+                            + "." + strThirtNum
+                            + "." + strFouthNum;
+
+                    String title = "Set FTPServer IP & port";
+                    String message = "IP : " + strFirstNum + "."
+                            + strSecondNum + "."
+                            + strThirtNum + "."
+                            + strFouthNum;
+                    openSetIPDialog(type, title, message, strIP, -1);
+                }
+            }
+            break;
+
+
+            default:
+                break;
+        }
+    }
+
+
+
+    private DialogUtil mDialog;
+    // open dialog
+    public void openDialog(final String title, final String message) {
+        mDialog = new DialogUtil(mActivity);
+
+        DialogInterface.OnClickListener positiveListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        dialog.dismiss();
+                        MainActivity.setFinishTimerReset();
+                    }
+                };
+
+        mDialog.openCommonDialog(title, message, positiveListener, null);
+    }
+
+    // open FinishDialog
+    public void openFinishDialog(final String title, final String message) {
+        mDialog = new DialogUtil(mActivity);
+
+        DialogInterface.OnClickListener positiveListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        //finish();
+                        MainActivity.setFinishTimerReset();
+                    }
+                };
+
+        mDialog.openCommonDialog(title, message, positiveListener, null);
+    }
+
+
+    // open SetIPDialog
+    public void openSetIPDialog(final int type, final String title, final String message
+            , final String strIP, final int portNum) {
+        mDialog = new DialogUtil(mActivity);
+
+        DialogInterface.OnClickListener positiveListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        dialog.dismiss();
+                        MainActivity.setFinishTimerReset();
+                        setNetworkAddr(type, strIP, portNum); ;
+                    }
+                };
+
+        DialogInterface.OnClickListener negativeListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        dialog.dismiss();
+                        MainActivity.setFinishTimerReset();
+                    }
+                };
+
+        mDialog.openCommonDialog(title, message, positiveListener, negativeListener);
+    }
+
+    // 입력된 type의 IP를 update
+    private void setNetworkAddr(final int type, final String strIP, final int portNum) {
+        switch (type) {
+            case SETIP_TYPE_SET_SERVER_IP:
+            {
+                WallpadStatusData wallpadStatusData = new WallpadStatusData(mActivity);
+                wallpadStatusData.SetServerIP(strIP, portNum);
+                wallpadStatusData.closeDB();
+
+                String title = getString(R.string.check_network_apts_server);
+                String message = "IP : " + strIP
+                        + "\n port : " + portNum
+                        + "\n 로 설정되었습니다.";
+                openFinishDialog(title, message);
+            }
+            break;
+
+            case SETIP_TYPE_SET_MANAGE_PC_IP:
+            {
+                WallpadStatusData wallpadStatusData = new WallpadStatusData(mActivity);
+                wallpadStatusData.SetManagePC(strIP, portNum);
+                wallpadStatusData.closeDB();
+
+                String title = getString(R.string.check_network_apts_manage_pc);
+                String message = "IP : " + strIP
+                        + "\n port : " + portNum
+                        + "\n 로 설정되었습니다.";
+                openFinishDialog(title, message);
+            }
+            break;
+
+            case SETIP_TYPE_SET_FTP_IP:
+            {
+                WallpadStatusData wallpadStatusData = new WallpadStatusData(mActivity);
+                wallpadStatusData.SetFTPIP(strIP);
+                wallpadStatusData.closeDB();
+
+                String title = getString(R.string.check_network_ftp_server);
+                String message = "IP : " + strIP
+                        + "\n 로 설정되었습니다.";
+                openFinishDialog(title, message);
+            }
+            break;
+
+            default:
+                break;
+        }
+    }
+
+
+}

+ 702 - 702
ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/SettingAdditionalFunctionFragment.java

@@ -1,702 +1,702 @@
-package com.artncore.managersetting.ui.fragments;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import kr.co.icontrols.wallpadsupport.Version;
-import android.app.Activity;
-import android.os.Bundle;
-//import android.support.v4.app.Fragment;
-import androidx.fragment.app.Fragment;
-import androidx.core.view.MotionEventCompat;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.View.OnTouchListener;
-import android.widget.ListView;
-
-
-import com.artncore.managersetting.dao.MainDatabaseManager;
-import com.artncore.managersetting.domain.Const;
-import com.artncore.managersetting.domain.ControllerVO;
-import com.artncore.managersetting.ui.ControllerListAdapter;
-import com.artncore.managersetting.ui.activities.MainActivity;
-import com.artncore.wallpadapi.WallPadAPI;
-import com.artncore.managersetting.MainApplication;
-import com.artncore.managersetting.R;
-
-/**
- * A list fragment representing a list of Items. This fragment also supports
- * tablet devices by allowing list items to be given an 'activated' state upon
- * selection. This helps indicate which item is currently being viewed in a
- * {link ItemDetailFragment}.
- * <p>
- * Activities containing this fragment MUST implement the {link Callbacks}
- * interface.
- */
-public class SettingAdditionalFunctionFragment extends Fragment
-        implements ControllerListAdapter.ItemChangedListener {
-
-    private static final String TAG = "SettingAdditionalFunctionFragment";
-
-    private final boolean DEBUG = true;
-
-    public final int ADDITIONAL_TYPE_BASE =         Const.COMMON_TYPE_BASE;
-    public final int ADDITIONAL_TYPE_NOTICE =                       ADDITIONAL_TYPE_BASE + 0;
-    public final int ADDITIONAL_TYPE_ELECTRONIC_PICTURE_FRAMES =    ADDITIONAL_TYPE_BASE + 1;
-    public final int ADDITIONAL_TYPE_WEATHER =                      ADDITIONAL_TYPE_BASE + 2;
-    public final int ADDITIONAL_TYPE_MENO =                         ADDITIONAL_TYPE_BASE + 3;
-    public final int ADDITIONAL_TYPE_SCHEDULE =                     ADDITIONAL_TYPE_BASE + 4;
-    public final int ADDITIONAL_TYPE_CCTV =                         ADDITIONAL_TYPE_BASE + 5;
-    public final int ADDITIONAL_TYPE_PARKING =                      ADDITIONAL_TYPE_BASE + 6;
-    public final int ADDITIONAL_TYPE_ELECTRIC_CAR =                 ADDITIONAL_TYPE_BASE + 7;
-    public final int ADDITIONAL_TYPE_LH_ADD_FUNCTION =              ADDITIONAL_TYPE_BASE + 8;
-    public final int ADDITIONAL_TYPE_LH_U_CITY =                    ADDITIONAL_TYPE_BASE + 9;
-    public final int ADDITIONAL_TYPE_HANDICAPPED =                  ADDITIONAL_TYPE_BASE + 10;
-    public final int ADDITIONAL_TYPE_CARGUEST =                     ADDITIONAL_TYPE_BASE + 11;
-    public final int ADDITIONAL_TYPE_BAND_LOCATION =                ADDITIONAL_TYPE_BASE + 12;
-    public final int ADDITIONAL_TYPE_SAFESTREETLIGHT =              ADDITIONAL_TYPE_BASE + 13;
-
-
-    public final int ADDITIONAL_TYPE_NOTICE_DEFAULT_VALUE =                       Const.CONTROLLER_SETTING_DO_USED_INDEX;
-    public final int ADDITIONAL_TYPE_ELECTRONIC_PICTURE_FRAMES_DEFAULT_VALUE =    Const.CONTROLLER_SETTING_DO_USED_INDEX;
-    public final int ADDITIONAL_TYPE_WEATHER_DEFAULT_VALUE =                      Const.CONTROLLER_SETTING_DO_USED_INDEX;
-    public final int ADDITIONAL_TYPE_MENO_DEFAULT_VALUE =                         Const.CONTROLLER_SETTING_DO_USED_INDEX;
-    public final int ADDITIONAL_TYPE_SCHEDULE_DEFAULT_VALUE =                     Const.CONTROLLER_SETTING_DO_USED_INDEX;
-    public final int ADDITIONAL_TYPE_CCTV_DEFAULT_VALUE =                         Const.CONTROLLER_SETTING_DO_USED_INDEX;
-    public final int ADDITIONAL_TYPE_PARKING_DEFAULT_VALUE =                      Const.CONTROLLER_SETTING_DO_USED_INDEX;
-    public final int ADDITIONAL_TYPE_ELECTRIC_CAR_DEFAULT_VALUE =                 Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-
-    public final int ADDITIONAL_TYPE_LH_ADD_FUNCTION_DEFAULT_VALUE =              Const.CONTROLLER_SETTING_DO_USED_INDEX;
-    public final int ADDITIONAL_TYPE_LH_U_CITY_DEFAULT_VALUE =                    Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-    public final int ADDITIONAL_TYPE_HANDICAPPED_DEFAULT_VALUE =                  Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-    public final int ADDITIONAL_TYPE_CARGUEST_DEFAULT_VALUE =                     Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-    public final int ADDITIONAL_TYPE_BAND_LOCATION_DEFAULT_VALUE =                Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-    public final int ADDITIONAL_TYPE_SAFESTREETLIGHT_DEFAULT_VALUE =              Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-
-    private Activity mActivity;
-    private WallPadAPI mWallPadAPI;
-    private MainDatabaseManager mMainDatabaseManager;
-
-    private ListView mControllerListView;
-    private List<ControllerVO> mControllerList = new ArrayList<ControllerVO>();
-    private int ModelType = Version.getModelType();
-    //private int ModelType = Version.MODEL_TYPE.IHN_1020GL;
-
-    // constructor
-    public SettingAdditionalFunctionFragment() {
-    }
-
-    @Override
-    public void onAttach(Activity activity) {
-        super.onAttach(activity);
-
-        mActivity = activity;
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        if (DEBUG)  Log.d(TAG, "onCreate() ");
-
-        super.onCreate(savedInstanceState);
-
-        mWallPadAPI = MainActivity.getWallPadAPI();
-        mMainDatabaseManager = MainActivity.getMainDatabaseManager();
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-        View rootView = (View) inflater.inflate(R.layout.controller_setting_container,
-                container, false);
-
-        return (View)rootView;
-    }
-
-    @Override
-    public void onViewCreated(View view, Bundle savedInstanceState) {
-        super.onViewCreated(view, savedInstanceState);
-
-        if (savedInstanceState != null) {}
-
-        mControllerListView = (ListView) view.findViewById(R.id.controller_list);
-
-        mControllerListView.setOnTouchListener(new OnTouchListener() {
-
-            @Override
-            public boolean onTouch(View v, MotionEvent event) {
-                switch (MotionEventCompat.getActionMasked(event)) {
-
-                    case MotionEvent.ACTION_UP:
-                        MainActivity.setFinishTimerReset();
-                        break;
-
-                    default:
-                        break;
-                }
-                return false;
-            }
-        });
-
-        initListView();
-    }
-
-    @Override
-    public void onDetach() {
-        super.onDetach();
-
-        mWallPadAPI = null;
-    }
-
-
-    @Override
-    public void onSaveInstanceState(Bundle outState) {
-        super.onSaveInstanceState(outState);
-    }
-
-
-    // init ListView
-    private void initListView() {
-        getControllerList();
-
-        ControllerListAdapter adapter = new ControllerListAdapter(mActivity
-                , R.layout.setting_controller_item
-                , mControllerList
-                , this);
-
-        mControllerListView.setAdapter(adapter);
-    }
-
-
-    // get ControllerList
-    private void getControllerList() {
-        if (mWallPadAPI != null) {
-            addControllerVO(ADDITIONAL_TYPE_NOTICE);
-            addControllerVO(ADDITIONAL_TYPE_ELECTRONIC_PICTURE_FRAMES);
-            addControllerVO(ADDITIONAL_TYPE_WEATHER);
-            addControllerVO(ADDITIONAL_TYPE_MENO);
-            addControllerVO(ADDITIONAL_TYPE_SCHEDULE);
-            addControllerVO(ADDITIONAL_TYPE_CCTV);
-            addControllerVO(ADDITIONAL_TYPE_PARKING);
-            addControllerVO(ADDITIONAL_TYPE_ELECTRIC_CAR);
-
-            if(ModelType == Version.MODEL_TYPE.IHN_1020SA_A)
-            {
-                addControllerVO(ADDITIONAL_TYPE_LH_ADD_FUNCTION);
-                addControllerVO(ADDITIONAL_TYPE_LH_U_CITY);
-            }
-            //addControllerVO(ADDITIONAL_TYPE_HANDICAPPED); //장애인모드로써 평상시에는 사용하지 않음. 나중에 기능 추가되면 그떄 주석 해제 예정
-            addControllerVO(ADDITIONAL_TYPE_CARGUEST);
-            if (ModelType == Version.MODEL_TYPE.IHN_D101 || ModelType == Version.MODEL_TYPE.IHN_D101_I
-                    || ModelType == Version.MODEL_TYPE.IHN_D101K || ModelType == Version.MODEL_TYPE.IHN_D101K_I) {
-                addControllerVO(ADDITIONAL_TYPE_BAND_LOCATION); // 일산3구역현장 - 밴드 위치 알림
-            }
-
-            if (ModelType == Version.MODEL_TYPE.IHN_HS101 || ModelType == Version.MODEL_TYPE.IHN_HS101_I) {
-                addControllerVO(ADDITIONAL_TYPE_SAFESTREETLIGHT); // 천안두정효성해링턴 현장
-            }
-        }
-    }
-
-
-    // add Controller to ControllerList
-    private void addControllerVO(int type) {
-        ControllerVO controllerVO = null;
-
-        switch (type) {
-            case ADDITIONAL_TYPE_NOTICE:
-            {
-                int noticeCount = Const.CONTROLLER_ONOFF_COUNT;
-                int noticeCurrent = ADDITIONAL_TYPE_NOTICE_DEFAULT_VALUE;
-
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_NOTICE);
-                if ((InfoList != null) && (InfoList.size() > 3)) {
-                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3))) {
-                        noticeCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                    }
-                }
-
-                if (DEBUG)  Log.d(TAG, "noticeCurrent : " + noticeCurrent);
-
-                String controllerName = mActivity.getString(R.string.setting_additional_notice);
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , noticeCount
-                        , noticeCurrent
-                );
-            }
-            break;
-
-            case ADDITIONAL_TYPE_ELECTRONIC_PICTURE_FRAMES:
-            {
-                int pictureFrameCount = Const.CONTROLLER_ONOFF_COUNT;
-                int pictureFrameCurrent = ADDITIONAL_TYPE_ELECTRONIC_PICTURE_FRAMES_DEFAULT_VALUE;
-
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ELECTRONIC_PICTURE_FRAMES);
-                if ((InfoList != null) && (InfoList.size() > 3)) {
-                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3))) {
-                        pictureFrameCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                    }
-                }
-
-                if (DEBUG)  Log.d(TAG, "pictureFrameCurrent : " + pictureFrameCurrent);
-
-                String controllerName = mActivity.getString(R.string.setting_additional_electronic_picture_frames);
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , pictureFrameCount
-                        , pictureFrameCurrent
-                );
-            }
-            break;
-
-            case ADDITIONAL_TYPE_WEATHER:
-            {
-                int weatherCount = Const.CONTROLLER_ONOFF_COUNT;
-                int weatherCurrent = ADDITIONAL_TYPE_WEATHER_DEFAULT_VALUE;
-
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_WEATHER);
-                if ((InfoList != null) && (InfoList.size() > 3)) {
-                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3))) {
-                        weatherCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                    }
-                }
-
-                if (DEBUG)  Log.d(TAG, "weatherCurrent : " + weatherCurrent);
-
-                String controllerName = mActivity.getString(R.string.setting_additional_weather);
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , weatherCount
-                        , weatherCurrent
-                );
-            }
-            break;
-
-            case ADDITIONAL_TYPE_MENO:
-            {
-                int memoCount = Const.CONTROLLER_ONOFF_COUNT;
-                int memoCurrent = ADDITIONAL_TYPE_MENO_DEFAULT_VALUE;
-
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_MENO);
-                if ((InfoList != null) && (InfoList.size() > 3)) {
-                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3))) {
-                        memoCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                    }
-                }
-
-                if (DEBUG)  Log.d(TAG, "memoCurrent : " + memoCurrent);
-
-                String controllerName = mActivity.getString(R.string.setting_additional_meno);
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , memoCount
-                        , memoCurrent
-                );
-            }
-            break;
-
-            case ADDITIONAL_TYPE_SCHEDULE:
-            {
-                int scheduleCount = Const.CONTROLLER_ONOFF_COUNT;
-                int scheduleCurrent = ADDITIONAL_TYPE_SCHEDULE_DEFAULT_VALUE;
-
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SCHEDULE);
-                if ((InfoList != null) && (InfoList.size() > 3)) {
-                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3))) {
-                        scheduleCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                    }
-                }
-
-                if (DEBUG)  Log.d(TAG, "scheduleCurrent : " + scheduleCurrent);
-
-                String controllerName = mActivity.getString(R.string.setting_additional_schedule);
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , scheduleCount
-                        , scheduleCurrent
-                );
-            }
-            break;
-
-            case ADDITIONAL_TYPE_CCTV:
-            {
-                int cctvCount = Const.CONTROLLER_ONOFF_COUNT;
-                int cctvCurrent = ADDITIONAL_TYPE_CCTV_DEFAULT_VALUE;
-
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_CCTV);
-                if ((InfoList != null) && (InfoList.size() > 3)) {
-                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3))) {
-                        cctvCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                    }
-                }
-
-                if (DEBUG)  Log.d(TAG, "cctvCurrent : " + cctvCurrent);
-
-                String controllerName = mActivity.getString(R.string.setting_additional_cctv);
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , cctvCount
-                        , cctvCurrent
-                );
-            }
-            break;
-
-            case ADDITIONAL_TYPE_PARKING:
-            {
-                int parkingCount = Const.CONTROLLER_ONOFF_COUNT;
-                int parkingCurrent = ADDITIONAL_TYPE_PARKING_DEFAULT_VALUE;
-
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_PARKING);
-                if ((InfoList != null) && (InfoList.size() > 3)) {
-                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3))) {
-                        parkingCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                    }
-                }
-
-                if (DEBUG)  Log.d(TAG, "parkingCurrent : " + parkingCurrent);
-
-                String controllerName = mActivity.getString(R.string.setting_additional_parking);
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , parkingCount
-                        , parkingCurrent
-                );
-            }
-            break;
-
-            case ADDITIONAL_TYPE_ELECTRIC_CAR:
-            {
-                int electricCarCount = Const.CONTROLLER_ONOFF_COUNT;
-                int electricCarCurrent = ADDITIONAL_TYPE_ELECTRIC_CAR_DEFAULT_VALUE;
-
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ELECTRIC_CAR);
-                if ((InfoList != null) && (InfoList.size() > 3)) {
-                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3)))
-                    {
-                        electricCarCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                    }
-                    else if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3)))
-                    {
-                        electricCarCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-                    }
-                }
-
-                if (DEBUG)  Log.d(TAG, "electricCarCurrent : " + electricCarCurrent);
-
-                String controllerName = mActivity.getString(R.string.setting_additional_electric_car);
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , electricCarCount
-                        , electricCarCurrent
-                );
-            }
-            break;
-
-            case ADDITIONAL_TYPE_LH_ADD_FUNCTION:
-            {
-                int LHAddFunctionCount = Const.CONTROLLER_ONOFF_COUNT;
-                int LHAddFunctionCurrent = ADDITIONAL_TYPE_LH_ADD_FUNCTION_DEFAULT_VALUE;
-
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LH_ADD_FUNCTION);
-                if ((InfoList != null) && (InfoList.size() > 3)) {
-                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3)))
-                    {
-                        LHAddFunctionCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                    }
-                    else if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3)))
-                    {
-                        LHAddFunctionCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-                    }
-                }
-
-                if (DEBUG)  Log.d(TAG, "LHAddFunctionCurrent : " + LHAddFunctionCurrent);
-
-                String controllerName = mActivity.getString(R.string.setting_additional_lh_addfunction);
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , LHAddFunctionCount
-                        , LHAddFunctionCurrent
-                );
-            }
-            break;
-
-            case ADDITIONAL_TYPE_LH_U_CITY:
-            {
-                int LH_UcityCount = Const.CONTROLLER_ONOFF_COUNT;
-                int LH_UcityCurrent = ADDITIONAL_TYPE_LH_U_CITY_DEFAULT_VALUE;
-
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LH_U_CITY);
-                if ((InfoList != null) && (InfoList.size() > 3)) {
-                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3)))
-                    {
-                        LH_UcityCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                    }
-                    else if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3)))
-                    {
-                        LH_UcityCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-                    }
-                }
-
-                if (DEBUG)  Log.d(TAG, "LHAddFunctionCurrent : " + LH_UcityCurrent);
-
-                String controllerName = mActivity.getString(R.string.setting_additional_lh_u_city);
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , LH_UcityCount
-                        , LH_UcityCurrent
-                );
-            }
-            break;
-
-            case ADDITIONAL_TYPE_HANDICAPPED:
-            {
-                int Count = Const.CONTROLLER_ONOFF_COUNT;
-                int Current = ADDITIONAL_TYPE_HANDICAPPED_DEFAULT_VALUE;
-
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_HANDICAPPED);
-                if ((InfoList != null) && (InfoList.size() > 3)) {
-                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3)))
-                    {
-                        Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                    }
-                    else if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3)))
-                    {
-                        Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-                    }
-                }
-
-                if (DEBUG)  Log.d(TAG, "Handicapped Current : " + Current);
-
-                String controllerName = mActivity.getString(R.string.setting_additional_handicapped);
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , Count
-                        , Current
-                );
-            }
-            break;
-
-            case ADDITIONAL_TYPE_CARGUEST:
-            {
-                int carGuestCount = Const.CONTROLLER_ONOFF_COUNT;
-                int carGuestCurrent = ADDITIONAL_TYPE_CARGUEST_DEFAULT_VALUE;
-
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_CARGUEST);
-                if ((InfoList != null) && (InfoList.size() > 3)) {
-                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3)))
-                    {
-                        carGuestCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                    }
-                    else if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3)))
-                    {
-                        carGuestCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-                    }
-                }
-
-                if (DEBUG)  Log.d(TAG, "carGuestCurrent : " + carGuestCurrent);
-
-                String controllerName = mActivity.getString(R.string.setting_additional_carguest);
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , carGuestCount
-                        , carGuestCurrent
-                );
-            }
-            break;
-
-            case ADDITIONAL_TYPE_BAND_LOCATION:
-            {
-                int bandLocCount = Const.CONTROLLER_ONOFF_COUNT;
-                int bandLocCurrent = ADDITIONAL_TYPE_BAND_LOCATION_DEFAULT_VALUE;
-
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_BAND_LOCATION);
-                if ((InfoList != null) && (InfoList.size() > 3)) {
-                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3)))
-                    {
-                        bandLocCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                    }
-                    else if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3)))
-                    {
-                        bandLocCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-                    }
-                }
-
-                if (DEBUG)  Log.d(TAG, "bandLocCurrent : " + bandLocCurrent);
-
-                String controllerName = mActivity.getString(R.string.setting_additional_band_location);
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , bandLocCount
-                        , bandLocCurrent
-                );
-            }
-            break;
-
-            case ADDITIONAL_TYPE_SAFESTREETLIGHT:
-            {
-                int safeStreetLightCount = Const.CONTROLLER_ONOFF_COUNT;
-                int safeStreetLightCurrent = ADDITIONAL_TYPE_SAFESTREETLIGHT_DEFAULT_VALUE;
-
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SAFESTREETLIGHT_USE);
-                if ((InfoList != null) && (InfoList.size() > 3)) {
-                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3)))
-                    {
-                        safeStreetLightCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                    }
-                    else if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3)))
-                    {
-                        safeStreetLightCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-                    }
-                }
-
-                if (DEBUG)  Log.d(TAG, "safeStreetLightCurrent : " + safeStreetLightCurrent);
-
-                String controllerName = mActivity.getString(R.string.setting_additional_safestreetlight_location);
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , safeStreetLightCount
-                        , safeStreetLightCurrent
-                );
-            }
-            break;
-
-            default:
-                break;
-        }
-
-        if (controllerVO != null)
-            mControllerList.add(controllerVO);
-    }
-
-    @Override
-    public void onItemChanged(final int controllerIdx, final int position, final String itemName) {
-        String controllerName = mControllerList.get(controllerIdx).getName();
-        String message = controllerName + " 를 " + (itemName) + "로 변경하였습니다.";
-
-
-        if (DEBUG)  Log.d(TAG, "onItemChanged() controllerIdx : " + controllerIdx
-                + ", position : " + position
-                + ", itemName : " + itemName
-        );
-        MainActivity.setFinishTimerReset();
-
-        //int type = ADDITIONAL_TYPE_BASE + controllerIdx;
-        int type = mControllerList.get(controllerIdx).getType();
-
-        ControllerVO controllerVO = mControllerList.get(controllerIdx);
-        if (controllerVO != null) {
-            controllerVO.setInitCount(position);
-        }
-
-        MainApplication.getApplication().setReboot();
-
-        switch (type) {
-            case ADDITIONAL_TYPE_NOTICE:
-            {
-                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_NOTICE, position);
-            }
-            break;
-
-            case ADDITIONAL_TYPE_ELECTRONIC_PICTURE_FRAMES:
-            {
-                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ELECTRONIC_PICTURE_FRAMES, position);
-            }
-            break;
-
-            case ADDITIONAL_TYPE_WEATHER:
-            {
-                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_WEATHER, position);
-            }
-            break;
-
-            case ADDITIONAL_TYPE_MENO:
-            {
-                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_MENO, position);
-            }
-            break;
-
-            case ADDITIONAL_TYPE_SCHEDULE:
-            {
-                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SCHEDULE, position);
-            }
-            break;
-
-            case ADDITIONAL_TYPE_CCTV:
-            {
-                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_CCTV, position);
-            }
-            break;
-
-            case ADDITIONAL_TYPE_PARKING:
-            {
-                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_PARKING, position);
-            }
-            break;
-
-            case ADDITIONAL_TYPE_ELECTRIC_CAR:
-            {
-                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ELECTRIC_CAR, position);
-            }
-            break;
-
-            case ADDITIONAL_TYPE_LH_ADD_FUNCTION:
-            {
-                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LH_ADD_FUNCTION, position);
-            }
-            break;
-
-            case ADDITIONAL_TYPE_LH_U_CITY:
-            {
-                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LH_U_CITY, position);
-            }
-            break;
-
-            case ADDITIONAL_TYPE_HANDICAPPED:
-            {
-                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_HANDICAPPED, position);
-            }
-            break;
-
-            case ADDITIONAL_TYPE_CARGUEST:
-            {
-                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_CARGUEST, position);
-            }
-            break;
-
-            case ADDITIONAL_TYPE_BAND_LOCATION:
-            {
-                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_BAND_LOCATION, position);
-            }
-            break;
-
-            case ADDITIONAL_TYPE_SAFESTREETLIGHT:
-            {
-                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SAFESTREETLIGHT_USE, position);
-            }
-            break;
-
-            default:
-                break;
-        }
-    }
-
-
-
-}
+package com.artncore.managersetting.ui.fragments;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import kr.co.icontrols.wallpadsupport.Version;
+import android.app.Activity;
+import android.os.Bundle;
+//import android.support.v4.app.Fragment;
+import androidx.fragment.app.Fragment;
+import androidx.core.view.MotionEventCompat;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.View.OnTouchListener;
+import android.widget.ListView;
+
+
+import com.artncore.managersetting.dao.MainDatabaseManager;
+import com.artncore.managersetting.domain.Const;
+import com.artncore.managersetting.domain.ControllerVO;
+import com.artncore.managersetting.ui.ControllerListAdapter;
+import com.artncore.managersetting.ui.activities.MainActivity;
+import com.artncore.wallpadapi.WallPadAPI;
+import com.artncore.managersetting.MainApplication;
+import com.artncore.managersetting.R;
+
+/**
+ * A list fragment representing a list of Items. This fragment also supports
+ * tablet devices by allowing list items to be given an 'activated' state upon
+ * selection. This helps indicate which item is currently being viewed in a
+ * {link ItemDetailFragment}.
+ * <p>
+ * Activities containing this fragment MUST implement the {link Callbacks}
+ * interface.
+ */
+public class SettingAdditionalFunctionFragment extends Fragment
+        implements ControllerListAdapter.ItemChangedListener {
+
+    private static final String TAG = "SettingAdditionalFunctionFragment";
+
+    private final boolean DEBUG = true;
+
+    public final int ADDITIONAL_TYPE_BASE =         Const.COMMON_TYPE_BASE;
+    public final int ADDITIONAL_TYPE_NOTICE =                       ADDITIONAL_TYPE_BASE + 0;
+    public final int ADDITIONAL_TYPE_ELECTRONIC_PICTURE_FRAMES =    ADDITIONAL_TYPE_BASE + 1;
+    public final int ADDITIONAL_TYPE_WEATHER =                      ADDITIONAL_TYPE_BASE + 2;
+    public final int ADDITIONAL_TYPE_MENO =                         ADDITIONAL_TYPE_BASE + 3;
+    public final int ADDITIONAL_TYPE_SCHEDULE =                     ADDITIONAL_TYPE_BASE + 4;
+    public final int ADDITIONAL_TYPE_CCTV =                         ADDITIONAL_TYPE_BASE + 5;
+    public final int ADDITIONAL_TYPE_PARKING =                      ADDITIONAL_TYPE_BASE + 6;
+    public final int ADDITIONAL_TYPE_ELECTRIC_CAR =                 ADDITIONAL_TYPE_BASE + 7;
+    public final int ADDITIONAL_TYPE_LH_ADD_FUNCTION =              ADDITIONAL_TYPE_BASE + 8;
+    public final int ADDITIONAL_TYPE_LH_U_CITY =                    ADDITIONAL_TYPE_BASE + 9;
+    public final int ADDITIONAL_TYPE_HANDICAPPED =                  ADDITIONAL_TYPE_BASE + 10;
+    public final int ADDITIONAL_TYPE_CARGUEST =                     ADDITIONAL_TYPE_BASE + 11;
+    public final int ADDITIONAL_TYPE_BAND_LOCATION =                ADDITIONAL_TYPE_BASE + 12;
+    public final int ADDITIONAL_TYPE_SAFESTREETLIGHT =              ADDITIONAL_TYPE_BASE + 13;
+
+
+    public final int ADDITIONAL_TYPE_NOTICE_DEFAULT_VALUE =                       Const.CONTROLLER_SETTING_DO_USED_INDEX;
+    public final int ADDITIONAL_TYPE_ELECTRONIC_PICTURE_FRAMES_DEFAULT_VALUE =    Const.CONTROLLER_SETTING_DO_USED_INDEX;
+    public final int ADDITIONAL_TYPE_WEATHER_DEFAULT_VALUE =                      Const.CONTROLLER_SETTING_DO_USED_INDEX;
+    public final int ADDITIONAL_TYPE_MENO_DEFAULT_VALUE =                         Const.CONTROLLER_SETTING_DO_USED_INDEX;
+    public final int ADDITIONAL_TYPE_SCHEDULE_DEFAULT_VALUE =                     Const.CONTROLLER_SETTING_DO_USED_INDEX;
+    public final int ADDITIONAL_TYPE_CCTV_DEFAULT_VALUE =                         Const.CONTROLLER_SETTING_DO_USED_INDEX;
+    public final int ADDITIONAL_TYPE_PARKING_DEFAULT_VALUE =                      Const.CONTROLLER_SETTING_DO_USED_INDEX;
+    public final int ADDITIONAL_TYPE_ELECTRIC_CAR_DEFAULT_VALUE =                 Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+
+    public final int ADDITIONAL_TYPE_LH_ADD_FUNCTION_DEFAULT_VALUE =              Const.CONTROLLER_SETTING_DO_USED_INDEX;
+    public final int ADDITIONAL_TYPE_LH_U_CITY_DEFAULT_VALUE =                    Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+    public final int ADDITIONAL_TYPE_HANDICAPPED_DEFAULT_VALUE =                  Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+    public final int ADDITIONAL_TYPE_CARGUEST_DEFAULT_VALUE =                     Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+    public final int ADDITIONAL_TYPE_BAND_LOCATION_DEFAULT_VALUE =                Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+    public final int ADDITIONAL_TYPE_SAFESTREETLIGHT_DEFAULT_VALUE =              Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+
+    private Activity mActivity;
+    private WallPadAPI mWallPadAPI;
+    private MainDatabaseManager mMainDatabaseManager;
+
+    private ListView mControllerListView;
+    private List<ControllerVO> mControllerList = new ArrayList<ControllerVO>();
+    private int ModelType = Version.getModelType();
+    //private int ModelType = Version.MODEL_TYPE.IHN_1020GL;
+
+    // constructor
+    public SettingAdditionalFunctionFragment() {
+    }
+
+    @Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+
+        mActivity = activity;
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        if (DEBUG)  Log.d(TAG, "onCreate() ");
+
+        super.onCreate(savedInstanceState);
+
+        mWallPadAPI = MainActivity.getWallPadAPI();
+        mMainDatabaseManager = MainActivity.getMainDatabaseManager();
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+                             Bundle savedInstanceState) {
+        View rootView = (View) inflater.inflate(R.layout.controller_setting_container,
+                container, false);
+
+        return (View)rootView;
+    }
+
+    @Override
+    public void onViewCreated(View view, Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+
+        if (savedInstanceState != null) {}
+
+        mControllerListView = (ListView) view.findViewById(R.id.controller_list);
+
+        mControllerListView.setOnTouchListener(new OnTouchListener() {
+
+            @Override
+            public boolean onTouch(View v, MotionEvent event) {
+                switch (MotionEventCompat.getActionMasked(event)) {
+
+                    case MotionEvent.ACTION_UP:
+                        MainActivity.setFinishTimerReset();
+                        break;
+
+                    default:
+                        break;
+                }
+                return false;
+            }
+        });
+
+        initListView();
+    }
+
+    @Override
+    public void onDetach() {
+        super.onDetach();
+
+        mWallPadAPI = null;
+    }
+
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+    }
+
+
+    // init ListView
+    private void initListView() {
+        getControllerList();
+
+        ControllerListAdapter adapter = new ControllerListAdapter(mActivity
+                , R.layout.setting_controller_item
+                , mControllerList
+                , this);
+
+        mControllerListView.setAdapter(adapter);
+    }
+
+
+    // get ControllerList
+    private void getControllerList() {
+        if (mWallPadAPI != null) {
+            addControllerVO(ADDITIONAL_TYPE_NOTICE);
+            addControllerVO(ADDITIONAL_TYPE_ELECTRONIC_PICTURE_FRAMES);
+            addControllerVO(ADDITIONAL_TYPE_WEATHER);
+            addControllerVO(ADDITIONAL_TYPE_MENO);
+            addControllerVO(ADDITIONAL_TYPE_SCHEDULE);
+            addControllerVO(ADDITIONAL_TYPE_CCTV);
+            addControllerVO(ADDITIONAL_TYPE_PARKING);
+            addControllerVO(ADDITIONAL_TYPE_ELECTRIC_CAR);
+
+            if(ModelType == Version.MODEL_TYPE.IHN_1020SA_A)
+            {
+                addControllerVO(ADDITIONAL_TYPE_LH_ADD_FUNCTION);
+                addControllerVO(ADDITIONAL_TYPE_LH_U_CITY);
+            }
+            //addControllerVO(ADDITIONAL_TYPE_HANDICAPPED); //장애인모드로써 평상시에는 사용하지 않음. 나중에 기능 추가되면 그떄 주석 해제 예정
+            addControllerVO(ADDITIONAL_TYPE_CARGUEST);
+            if (ModelType == Version.MODEL_TYPE.IHN_D101 || ModelType == Version.MODEL_TYPE.IHN_D101_I
+                    || ModelType == Version.MODEL_TYPE.IHN_D101K || ModelType == Version.MODEL_TYPE.IHN_D101K_I) {
+                addControllerVO(ADDITIONAL_TYPE_BAND_LOCATION); // 일산3구역현장 - 밴드 위치 알림
+            }
+
+            if (ModelType == Version.MODEL_TYPE.IHN_HS101 || ModelType == Version.MODEL_TYPE.IHN_HS101_I) {
+                addControllerVO(ADDITIONAL_TYPE_SAFESTREETLIGHT); // 천안두정효성해링턴 현장
+            }
+        }
+    }
+
+
+    // add Controller to ControllerList
+    private void addControllerVO(int type) {
+        ControllerVO controllerVO = null;
+
+        switch (type) {
+            case ADDITIONAL_TYPE_NOTICE:
+            {
+                int noticeCount = Const.CONTROLLER_ONOFF_COUNT;
+                int noticeCurrent = ADDITIONAL_TYPE_NOTICE_DEFAULT_VALUE;
+
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_NOTICE);
+                if ((InfoList != null) && (InfoList.size() > 3)) {
+                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3))) {
+                        noticeCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                    }
+                }
+
+                if (DEBUG)  Log.d(TAG, "noticeCurrent : " + noticeCurrent);
+
+                String controllerName = mActivity.getString(R.string.setting_additional_notice);
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , noticeCount
+                        , noticeCurrent
+                );
+            }
+            break;
+
+            case ADDITIONAL_TYPE_ELECTRONIC_PICTURE_FRAMES:
+            {
+                int pictureFrameCount = Const.CONTROLLER_ONOFF_COUNT;
+                int pictureFrameCurrent = ADDITIONAL_TYPE_ELECTRONIC_PICTURE_FRAMES_DEFAULT_VALUE;
+
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ELECTRONIC_PICTURE_FRAMES);
+                if ((InfoList != null) && (InfoList.size() > 3)) {
+                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3))) {
+                        pictureFrameCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                    }
+                }
+
+                if (DEBUG)  Log.d(TAG, "pictureFrameCurrent : " + pictureFrameCurrent);
+
+                String controllerName = mActivity.getString(R.string.setting_additional_electronic_picture_frames);
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , pictureFrameCount
+                        , pictureFrameCurrent
+                );
+            }
+            break;
+
+            case ADDITIONAL_TYPE_WEATHER:
+            {
+                int weatherCount = Const.CONTROLLER_ONOFF_COUNT;
+                int weatherCurrent = ADDITIONAL_TYPE_WEATHER_DEFAULT_VALUE;
+
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_WEATHER);
+                if ((InfoList != null) && (InfoList.size() > 3)) {
+                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3))) {
+                        weatherCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                    }
+                }
+
+                if (DEBUG)  Log.d(TAG, "weatherCurrent : " + weatherCurrent);
+
+                String controllerName = mActivity.getString(R.string.setting_additional_weather);
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , weatherCount
+                        , weatherCurrent
+                );
+            }
+            break;
+
+            case ADDITIONAL_TYPE_MENO:
+            {
+                int memoCount = Const.CONTROLLER_ONOFF_COUNT;
+                int memoCurrent = ADDITIONAL_TYPE_MENO_DEFAULT_VALUE;
+
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_MENO);
+                if ((InfoList != null) && (InfoList.size() > 3)) {
+                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3))) {
+                        memoCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                    }
+                }
+
+                if (DEBUG)  Log.d(TAG, "memoCurrent : " + memoCurrent);
+
+                String controllerName = mActivity.getString(R.string.setting_additional_meno);
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , memoCount
+                        , memoCurrent
+                );
+            }
+            break;
+
+            case ADDITIONAL_TYPE_SCHEDULE:
+            {
+                int scheduleCount = Const.CONTROLLER_ONOFF_COUNT;
+                int scheduleCurrent = ADDITIONAL_TYPE_SCHEDULE_DEFAULT_VALUE;
+
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SCHEDULE);
+                if ((InfoList != null) && (InfoList.size() > 3)) {
+                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3))) {
+                        scheduleCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                    }
+                }
+
+                if (DEBUG)  Log.d(TAG, "scheduleCurrent : " + scheduleCurrent);
+
+                String controllerName = mActivity.getString(R.string.setting_additional_schedule);
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , scheduleCount
+                        , scheduleCurrent
+                );
+            }
+            break;
+
+            case ADDITIONAL_TYPE_CCTV:
+            {
+                int cctvCount = Const.CONTROLLER_ONOFF_COUNT;
+                int cctvCurrent = ADDITIONAL_TYPE_CCTV_DEFAULT_VALUE;
+
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_CCTV);
+                if ((InfoList != null) && (InfoList.size() > 3)) {
+                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3))) {
+                        cctvCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                    }
+                }
+
+                if (DEBUG)  Log.d(TAG, "cctvCurrent : " + cctvCurrent);
+
+                String controllerName = mActivity.getString(R.string.setting_additional_cctv);
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , cctvCount
+                        , cctvCurrent
+                );
+            }
+            break;
+
+            case ADDITIONAL_TYPE_PARKING:
+            {
+                int parkingCount = Const.CONTROLLER_ONOFF_COUNT;
+                int parkingCurrent = ADDITIONAL_TYPE_PARKING_DEFAULT_VALUE;
+
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_PARKING);
+                if ((InfoList != null) && (InfoList.size() > 3)) {
+                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3))) {
+                        parkingCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                    }
+                }
+
+                if (DEBUG)  Log.d(TAG, "parkingCurrent : " + parkingCurrent);
+
+                String controllerName = mActivity.getString(R.string.setting_additional_parking);
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , parkingCount
+                        , parkingCurrent
+                );
+            }
+            break;
+
+            case ADDITIONAL_TYPE_ELECTRIC_CAR:
+            {
+                int electricCarCount = Const.CONTROLLER_ONOFF_COUNT;
+                int electricCarCurrent = ADDITIONAL_TYPE_ELECTRIC_CAR_DEFAULT_VALUE;
+
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ELECTRIC_CAR);
+                if ((InfoList != null) && (InfoList.size() > 3)) {
+                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3)))
+                    {
+                        electricCarCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                    }
+                    else if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3)))
+                    {
+                        electricCarCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+                    }
+                }
+
+                if (DEBUG)  Log.d(TAG, "electricCarCurrent : " + electricCarCurrent);
+
+                String controllerName = mActivity.getString(R.string.setting_additional_electric_car);
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , electricCarCount
+                        , electricCarCurrent
+                );
+            }
+            break;
+
+            case ADDITIONAL_TYPE_LH_ADD_FUNCTION:
+            {
+                int LHAddFunctionCount = Const.CONTROLLER_ONOFF_COUNT;
+                int LHAddFunctionCurrent = ADDITIONAL_TYPE_LH_ADD_FUNCTION_DEFAULT_VALUE;
+
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LH_ADD_FUNCTION);
+                if ((InfoList != null) && (InfoList.size() > 3)) {
+                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3)))
+                    {
+                        LHAddFunctionCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                    }
+                    else if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3)))
+                    {
+                        LHAddFunctionCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+                    }
+                }
+
+                if (DEBUG)  Log.d(TAG, "LHAddFunctionCurrent : " + LHAddFunctionCurrent);
+
+                String controllerName = mActivity.getString(R.string.setting_additional_lh_addfunction);
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , LHAddFunctionCount
+                        , LHAddFunctionCurrent
+                );
+            }
+            break;
+
+            case ADDITIONAL_TYPE_LH_U_CITY:
+            {
+                int LH_UcityCount = Const.CONTROLLER_ONOFF_COUNT;
+                int LH_UcityCurrent = ADDITIONAL_TYPE_LH_U_CITY_DEFAULT_VALUE;
+
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LH_U_CITY);
+                if ((InfoList != null) && (InfoList.size() > 3)) {
+                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3)))
+                    {
+                        LH_UcityCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                    }
+                    else if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3)))
+                    {
+                        LH_UcityCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+                    }
+                }
+
+                if (DEBUG)  Log.d(TAG, "LHAddFunctionCurrent : " + LH_UcityCurrent);
+
+                String controllerName = mActivity.getString(R.string.setting_additional_lh_u_city);
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , LH_UcityCount
+                        , LH_UcityCurrent
+                );
+            }
+            break;
+
+            case ADDITIONAL_TYPE_HANDICAPPED:
+            {
+                int Count = Const.CONTROLLER_ONOFF_COUNT;
+                int Current = ADDITIONAL_TYPE_HANDICAPPED_DEFAULT_VALUE;
+
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_HANDICAPPED);
+                if ((InfoList != null) && (InfoList.size() > 3)) {
+                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3)))
+                    {
+                        Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                    }
+                    else if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3)))
+                    {
+                        Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+                    }
+                }
+
+                if (DEBUG)  Log.d(TAG, "Handicapped Current : " + Current);
+
+                String controllerName = mActivity.getString(R.string.setting_additional_handicapped);
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , Count
+                        , Current
+                );
+            }
+            break;
+
+            case ADDITIONAL_TYPE_CARGUEST:
+            {
+                int carGuestCount = Const.CONTROLLER_ONOFF_COUNT;
+                int carGuestCurrent = ADDITIONAL_TYPE_CARGUEST_DEFAULT_VALUE;
+
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_CARGUEST);
+                if ((InfoList != null) && (InfoList.size() > 3)) {
+                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3)))
+                    {
+                        carGuestCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                    }
+                    else if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3)))
+                    {
+                        carGuestCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+                    }
+                }
+
+                if (DEBUG)  Log.d(TAG, "carGuestCurrent : " + carGuestCurrent);
+
+                String controllerName = mActivity.getString(R.string.setting_additional_carguest);
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , carGuestCount
+                        , carGuestCurrent
+                );
+            }
+            break;
+
+            case ADDITIONAL_TYPE_BAND_LOCATION:
+            {
+                int bandLocCount = Const.CONTROLLER_ONOFF_COUNT;
+                int bandLocCurrent = ADDITIONAL_TYPE_BAND_LOCATION_DEFAULT_VALUE;
+
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_BAND_LOCATION);
+                if ((InfoList != null) && (InfoList.size() > 3)) {
+                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3)))
+                    {
+                        bandLocCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                    }
+                    else if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3)))
+                    {
+                        bandLocCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+                    }
+                }
+
+                if (DEBUG)  Log.d(TAG, "bandLocCurrent : " + bandLocCurrent);
+
+                String controllerName = mActivity.getString(R.string.setting_additional_band_location);
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , bandLocCount
+                        , bandLocCurrent
+                );
+            }
+            break;
+
+            case ADDITIONAL_TYPE_SAFESTREETLIGHT:
+            {
+                int safeStreetLightCount = Const.CONTROLLER_ONOFF_COUNT;
+                int safeStreetLightCurrent = ADDITIONAL_TYPE_SAFESTREETLIGHT_DEFAULT_VALUE;
+
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SAFESTREETLIGHT_USE);
+                if ((InfoList != null) && (InfoList.size() > 3)) {
+                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3)))
+                    {
+                        safeStreetLightCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                    }
+                    else if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3)))
+                    {
+                        safeStreetLightCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+                    }
+                }
+
+                if (DEBUG)  Log.d(TAG, "safeStreetLightCurrent : " + safeStreetLightCurrent);
+
+                String controllerName = mActivity.getString(R.string.setting_additional_safestreetlight_location);
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , safeStreetLightCount
+                        , safeStreetLightCurrent
+                );
+            }
+            break;
+
+            default:
+                break;
+        }
+
+        if (controllerVO != null)
+            mControllerList.add(controllerVO);
+    }
+
+    @Override
+    public void onItemChanged(final int controllerIdx, final int position, final String itemName) {
+        String controllerName = mControllerList.get(controllerIdx).getName();
+        String message = controllerName + " 를 " + (itemName) + "로 변경하였습니다.";
+
+
+        if (DEBUG)  Log.d(TAG, "onItemChanged() controllerIdx : " + controllerIdx
+                + ", position : " + position
+                + ", itemName : " + itemName
+        );
+        MainActivity.setFinishTimerReset();
+
+        //int type = ADDITIONAL_TYPE_BASE + controllerIdx;
+        int type = mControllerList.get(controllerIdx).getType();
+
+        ControllerVO controllerVO = mControllerList.get(controllerIdx);
+        if (controllerVO != null) {
+            controllerVO.setInitCount(position);
+        }
+
+        MainApplication.getApplication().setReboot();
+
+        switch (type) {
+            case ADDITIONAL_TYPE_NOTICE:
+            {
+                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_NOTICE, position);
+            }
+            break;
+
+            case ADDITIONAL_TYPE_ELECTRONIC_PICTURE_FRAMES:
+            {
+                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ELECTRONIC_PICTURE_FRAMES, position);
+            }
+            break;
+
+            case ADDITIONAL_TYPE_WEATHER:
+            {
+                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_WEATHER, position);
+            }
+            break;
+
+            case ADDITIONAL_TYPE_MENO:
+            {
+                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_MENO, position);
+            }
+            break;
+
+            case ADDITIONAL_TYPE_SCHEDULE:
+            {
+                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SCHEDULE, position);
+            }
+            break;
+
+            case ADDITIONAL_TYPE_CCTV:
+            {
+                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_CCTV, position);
+            }
+            break;
+
+            case ADDITIONAL_TYPE_PARKING:
+            {
+                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_PARKING, position);
+            }
+            break;
+
+            case ADDITIONAL_TYPE_ELECTRIC_CAR:
+            {
+                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ELECTRIC_CAR, position);
+            }
+            break;
+
+            case ADDITIONAL_TYPE_LH_ADD_FUNCTION:
+            {
+                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LH_ADD_FUNCTION, position);
+            }
+            break;
+
+            case ADDITIONAL_TYPE_LH_U_CITY:
+            {
+                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LH_U_CITY, position);
+            }
+            break;
+
+            case ADDITIONAL_TYPE_HANDICAPPED:
+            {
+                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_HANDICAPPED, position);
+            }
+            break;
+
+            case ADDITIONAL_TYPE_CARGUEST:
+            {
+                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_CARGUEST, position);
+            }
+            break;
+
+            case ADDITIONAL_TYPE_BAND_LOCATION:
+            {
+                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_BAND_LOCATION, position);
+            }
+            break;
+
+            case ADDITIONAL_TYPE_SAFESTREETLIGHT:
+            {
+                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SAFESTREETLIGHT_USE, position);
+            }
+            break;
+
+            default:
+                break;
+        }
+    }
+
+
+
+}

+ 1989 - 2143
ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/SettingControllerFragment.java

@@ -1,2143 +1,1989 @@
-package com.artncore.managersetting.ui.fragments;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import kr.co.icontrols.wallpadsupport.Version;
-import android.app.Activity;
-import android.os.Bundle;
-//import android.support.v4.app.Fragment;
-import androidx.fragment.app.Fragment;
-import androidx.core.view.MotionEventCompat;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.View.OnTouchListener;
-import android.widget.ListView;
-
-
-import com.artncore.WallPadDataMgr.WallpadDeviceSet;
-import com.artncore.managersetting.dao.MainDatabaseManager;
-import com.artncore.managersetting.domain.Const;
-import com.artncore.managersetting.domain.ControllerVO;
-import com.artncore.managersetting.ui.ControllerListAdapter;
-import com.artncore.managersetting.ui.activities.MainActivity;
-import com.artncore.managersetting.util.StringUtil;
-import com.artncore.wallpadapi.WallPadAPI;
-import com.artncore.managersetting.MainApplication;
-import com.artncore.managersetting.R;
-
-/**
- * A list fragment representing a list of Items. This fragment also supports
- * tablet devices by allowing list items to be given an 'activated' state upon
- * selection. This helps indicate which item is currently being viewed in a
- * {link ItemDetailFragment}.
- * <p>
- * Activities containing this fragment MUST implement the {link Callbacks}
- * interface.
- */
-public class SettingControllerFragment extends Fragment implements ControllerListAdapter.ItemChangedListener {
-    private static final String TAG = "SettingControllerFragment";
-
-    private final boolean DEBUG = true;
-
-    private Activity mActivity;
-    private WallPadAPI mWallPadAPI;
-    private MainDatabaseManager mMainDatabaseManager;
-
-    private ListView mControllerListView;
-    private List<ControllerVO> mControllerList;
-    private int ModelType = Version.getModelType();
-    //private int ModelType = Version.MODEL_TYPE.IHN_1020B_A;
-
-
-    // constructor
-    public SettingControllerFragment() {
-    }
-
-    @Override
-    public void onAttach(Activity activity) {
-        super.onAttach(activity);
-
-        mActivity = activity;
-        mMainDatabaseManager = MainActivity.getMainDatabaseManager();
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        if (DEBUG)  Log.d(TAG, "onCreate() ");
-
-        super.onCreate(savedInstanceState);
-
-        mWallPadAPI = MainActivity.getWallPadAPI();
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-        View rootView = (View) inflater.inflate(R.layout.controller_setting_container,
-                container, false);
-
-        return (View)rootView;
-    }
-
-    @Override
-    public void onViewCreated(View view, Bundle savedInstanceState) {
-        super.onViewCreated(view, savedInstanceState);
-
-        if (savedInstanceState != null) {}
-
-        mControllerListView = (ListView) view.findViewById(R.id.controller_list);
-
-        mControllerListView.setOnTouchListener(new OnTouchListener() {
-
-            @Override
-            public boolean onTouch(View v, MotionEvent event) {
-                switch (MotionEventCompat.getActionMasked(event)) {
-
-                    case MotionEvent.ACTION_UP:
-                        MainActivity.setFinishTimerReset();
-                        break;
-
-                    default:
-                        break;
-                }
-                return false;
-            }
-        });
-
-        initListView();
-    }
-
-    @Override
-    public void onDetach() {
-        super.onDetach();
-
-        mWallPadAPI = null;
-
-        if (MainApplication.getApplication().isSetReboot())
-            ((MainActivity) mActivity).exitActivity();
-    }
-
-
-    @Override
-    public void onSaveInstanceState(Bundle outState) {
-        super.onSaveInstanceState(outState);
-    }
-
-
-    // refresh All View
-    private void refreshAll() {
-        mControllerListView.setAdapter(null);
-        mControllerList.clear();
-
-        initListView();
-    }
-
-
-    // init ListView
-    private void initListView() {
-        getControllerList();
-
-        ControllerListAdapter adapter = new ControllerListAdapter(mActivity
-                , R.layout.setting_controller_item
-                , mControllerList
-                , this);
-
-        mControllerListView.setAdapter(adapter);
-    }
-
-
-    // get ControllerList
-    private void getControllerList() {
-        mControllerList = new ArrayList<ControllerVO>();
-
-        if (mWallPadAPI != null) {
-            //addControllerVO(Const.CONTROLLER_TYPE_LIGHT_TYPE);
-            //addControllerVO(Const.CONTROLLER_TYPE_LIGHT_ROOMS);
-
-            addControllerVO(Const.CONTROLLER_TYPE_CTRL_USE);
-
-            if(GetZeroEnergyHouse() == false)
-            {
-                getLightControllerList();
-            }
-
-            addControllerVO(Const.CONTROLLER_TYPE_GAS);
-			addControllerVO(Const.CONTROLLER_TYPE_COOKTOP_CONCENT);
-            addControllerVO(Const.CONTROLLER_TYPE_ELECTRIC_RANGE1);
-
-            addControllerVO(Const.CONTROLLER_TYPE_HEATER);
-
-            //addControllerVO(Const.CONTROLLER_TYPE_DOOR_LOCK_WIRED);
-            //addControllerVO(Const.CONTROLLER_TYPE_DOOR_LOCK_WIRELESS);
-            //addControllerVO(Const.CONTROLLER_TYPE_DOOR_LOCK);
-
-            addDlockControllerVO();
-            addControllerVO(Const.CONTROLLER_TYPE_VENTILATION);
-
-            //addControllerVO(Const.CONTROLLER_TYPE_ELECTRICALLY_CURTAIN);
-            addControllerVO(Const.CONTROLLER_TYPE_SYSTEM_AIRCON);
-
-            addControllerVO(Const.CONTROLLER_TYPE_LIGHT_BATCH_CONTROLL);
-            addControllerVO(Const.CONTROLLER_TYPE_FACIAL_RECOG_MODULE);
-            //addControllerVO(Const.CONTROLLER_TYPE_REALTIME_MEASURING_METER);
-
-            if (ModelType != Version.MODEL_TYPE.IHN_1020SA_A) {
-                addControllerVO(Const.CONTROLLER_TYPE_GATEWAY);
-            }
-
-            if (ModelType != Version.MODEL_TYPE.IHN_1020GL) {
-                addControllerVO(Const.CONTROLLER_TYPE_DIMMING_KCC);
-            }
-
-            addControllerVO(Const.CONTROLLER_TYPE_HEAT_ONEDEVICE);
-
-            addControllerVO(Const.CONTROLLER_TYPE_SENSOR_AP);
-            addControllerVO(Const.CONTROLLER_TYPE_INTERLAYER_NOISE);
-            addControllerVO(Const.CONTROLLER_TYPE_INNERROOM_DETECT_SENSOR);
-
-            if (Version.getGatewayUsage()) {
-                addControllerVO(Const.CONTROLLER_TYPE_GATEWAY_MODEL_KIND);
-            }
-
-            if (Version.getPlatformType() == Version.PLATFORM_TYPE.A40i) {
-                addControllerVO(Const.CONTROLLER_TYPE_INTEGRATED_SWITCH);
-            }
-
-            addControllerVO(Const.CONTROLLER_TYPE_SMARTSWITCH_ENERGY);
-
-            addControllerVO(Const.CONTROLLER_TYPE_PURITY);
-
-            addControllerVO(Const.CONTROLLER_TYPE_LOUVER);
-
-            addControllerVO(Const.CONTROLLER_TYPE_BIOMETICS);
-
-            addControllerVO(Const.CONTROLLER_TYPE_LH_GATEWAY);
-        }
-    }
-
-
-    // get LightControllerList
-    private void getLightControllerList() {
-        if (mWallPadAPI != null) {
-            int typeCount = Const.CONTROLLER_LIGHT_TYPE_MAX_COUNT;
-            int typeCurrent = 0;
-            int lightCurrentCount = 0;
-
-            List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LIGHT);
-            if ((InfoList != null) && (InfoList.size() > 5)) {
-                if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
-                    int circuitNo = StringUtil.getInt(InfoList.get(1), false);
-                    if ((circuitNo > -1) && (circuitNo <= Const.CONTROLLER_LIGHT_MAX_COUNT + 1))
-                        lightCurrentCount = circuitNo - 1;
-
-                    String strType = InfoList.get(5);
-
-                    if (ModelType == Version.MODEL_TYPE.IHN_1020GL) {
-                        if (Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_NORMAL.equals(strType)) {
-                            typeCurrent = 1;
-                        }
-                        else if (Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT.equals(strType)) {
-                            typeCurrent = 2;
-                        }
-                        /*else if( Const.LIGHT_CONTROLLER_TYPE_SMART_DISTRIBUTION.equals(strType))
-                        {
-                            typeCurrent = 3;
-                        }*/
-                    }
-                    else if (ModelType == Version.MODEL_TYPE.IHN_D101 || ModelType == Version.MODEL_TYPE.IHN_D101_I
-                            || ModelType == Version.MODEL_TYPE.IHN_D101K || ModelType == Version.MODEL_TYPE.IHN_D101K_I)
-                    {
-                        if (Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_NORMAL.equals(strType)) {
-                            typeCurrent = 1;
-                        }
-                        else if (Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT.equals(strType)) {
-                            typeCurrent = 2;
-                        }
-                        /*else if( Const.LIGHT_CONTROLLER_TYPE_SMART_DISTRIBUTION.equals(strType))
-                        {
-                            typeCurrent = 3;
-                        }
-                        else if (Const.LIGHT_CONTROLLER_TYPE_LIVING_ROOM.equals(strType)) {
-                            typeCurrent = 4;
-                        }
-                        else if (Const.LIGHT_CONTROLLER_TYPE_ROOMS.equals(strType)) {
-                            typeCurrent = 5;
-                        }*/
-                    }
-                    else if (ModelType == Version.MODEL_TYPE.IHN_1010GL || ModelType == Version.MODEL_TYPE.IHN_1010GL_I) {
-                        if (Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_NORMAL.equals(strType)) {
-                            typeCurrent = 1;
-                        }
-                        else if (Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT.equals(strType)) {
-                            typeCurrent = 2;
-                        }
-                        else if (Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT_MULTISWITCH.equals(strType)) {
-                            typeCurrent = 3;
-                        }
-                    }
-                    else {
-                        if (Const.LIGHT_CONTROLLER_TYPE_LIVING_ROOM.equals(strType)) {
-                            typeCurrent = 1;
-                        }
-                        else if (Const.LIGHT_CONTROLLER_TYPE_ROOMS.equals(strType)) {
-                            typeCurrent = 2;
-                        }
-                    }
-
-                }
-            }
-
-            List<String> itemList = new ArrayList<String>();
-            itemList.add(mActivity.getString(R.string.do_not_used));
-
-            if (ModelType == Version.MODEL_TYPE.IHN_1020GL) {
-                itemList.add(mActivity.getString(R.string.contoller_light_type_hdc_intlight_normal));
-                itemList.add(mActivity.getString(R.string.contoller_light_type_hdc_intlight_add_batchlight));
-            }
-            else if (ModelType == Version.MODEL_TYPE.IHN_D101 || ModelType == Version.MODEL_TYPE.IHN_D101_I
-                    || ModelType == Version.MODEL_TYPE.IHN_D101K || ModelType == Version.MODEL_TYPE.IHN_D101K_I)
-            {
-                itemList.add(mActivity.getString(R.string.contoller_light_type_hdc_intlight_normal));
-                itemList.add(mActivity.getString(R.string.contoller_light_type_hdc_intlight_add_batchlight));
-                //itemList.add(mActivity.getString(R.string.contoller_light_living_room));
-                //itemList.add(mActivity.getString(R.string.contoller_light_rooms));
-            }
-            else if (ModelType == Version.MODEL_TYPE.IHN_1010GL || ModelType == Version.MODEL_TYPE.IHN_1010GL_I) {
-                itemList.add(mActivity.getString(R.string.contoller_light_type_hdc_intlight_normal));
-                itemList.add(mActivity.getString(R.string.contoller_light_type_hdc_intlight_add_batchlight));
-                itemList.add(mActivity.getString(R.string.contoller_light_type_hdc_intlight_add_batchlight_multiswitch));
-            }
-            else {
-                itemList.add(mActivity.getString(R.string.contoller_light_living_room));
-                itemList.add(mActivity.getString(R.string.contoller_light_rooms));
-            }
-
-            //LightAPI lightCTR = mWallPadAPI.Get_LightController();
-            //lightCTR.initSetter();
-            //lightCount = lightCTR.totalcnt;
-
-            String controllerName = mActivity.getString(R.string.contoller_light_type);
-            ControllerVO controllerVO = new ControllerVO(Const.CONTROLLER_TYPE_LIGHT_TYPE
-                    , controllerName
-                    , typeCount
-                    , typeCurrent
-                    , itemList
-            );
-            mControllerList.add(controllerVO);
-
-            if (DEBUG)  Log.d(TAG, "typeCurrent : " + typeCurrent);
-
-            if (typeCurrent == 1) {
-                int lightTotalCount = Const.CONTROLLER_LIGHT_MAX_COUNT;
-
-                if (DEBUG)  Log.d(TAG, "lightCurrentCount : " + lightCurrentCount);
-
-                itemList = new ArrayList<String>();
-
-                if (Version.getGatewayUsage()) {
-                    lightTotalCount--;
-                    lightCurrentCount--;
-                }
-                else {
-                    itemList.add("1");
-                }
-
-                itemList.add("2");
-                itemList.add("3");
-                itemList.add("4");
-                itemList.add("5");
-                itemList.add("6");
-
-                String lightControllerName = mActivity.getString(R.string.contoller_light_living_room);
-                ControllerVO lightControllerVO
-                        = new ControllerVO(Const.CONTROLLER_TYPE_LIGHT_LIVING_ROOM
-                        , lightControllerName
-                        , lightTotalCount
-                        , lightCurrentCount
-                        , itemList
-                );
-
-                mControllerList.add(lightControllerVO);
-            }
-            else if (typeCurrent == 2) {
-                //addControllerVO(Const.CONTROLLER_TYPE_LIGHT_MULTI_SWITCH);
-                if (Version.getGatewayUsage()) {
-                    int lightTotalCount = Const.CONTROLLER_LIGHT_MAX_COUNT-1;
-
-                    if (DEBUG)  Log.d(TAG, "lightCurrentCount : " + lightCurrentCount);
-
-                    itemList = new ArrayList<String>();
-
-                    lightTotalCount--;
-                    lightCurrentCount--;
-
-                    itemList.add("2");
-                    itemList.add("3");
-                    itemList.add("4");
-                    itemList.add("5");
-                    //itemList.add("6");
-                    String lightControllerName = mActivity.getString(R.string.contoller_light_living_room);
-                    ControllerVO lightControllerVO
-                            = new ControllerVO(Const.CONTROLLER_TYPE_LIGHT_LIVING_ROOM
-                            , lightControllerName
-                            , lightTotalCount
-                            , lightCurrentCount
-                            , itemList
-                    );
-
-                    mControllerList.add(lightControllerVO);
-                }
-            }
-            else if (typeCurrent == 3) {
-                if (Version.getModelType() == Version.MODEL_TYPE.IHN_1010GL || Version.getModelType() == Version.MODEL_TYPE.IHN_1010GL_I) {
-                    int lightTotalCount = Const.CONTROLLER_LIGHT_MAX_COUNT-1;
-
-                    if (DEBUG)  Log.d(TAG, "lightCurrentCount : " + lightCurrentCount);
-
-                    itemList = new ArrayList<String>();
-
-                    if (Version.getGatewayUsage()) {
-                        lightTotalCount--;
-                        lightCurrentCount--;
-                    }
-                    else {
-                        itemList.add("1");
-                    }
-
-                    itemList.add("2");
-                    itemList.add("3");
-                    itemList.add("4");
-                    itemList.add("5");
-
-                    String lightControllerName = mActivity.getString(R.string.contoller_light_living_room);
-                    ControllerVO lightControllerVO
-                            = new ControllerVO(Const.CONTROLLER_TYPE_LIGHT_LIVING_ROOM
-                            , lightControllerName
-                            , lightTotalCount
-                            , lightCurrentCount
-                            , itemList
-                    );
-
-                    mControllerList.add(lightControllerVO);
-                }
-            }
-        }
-    }
-
-    private void addDlockControllerVO()
-    {
-
-        int doorLockCount = Const.CONTROLLER_ONOFF_COUNT;
-        int doorLockCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-
-        List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DOOR_LOCK);
-        if ((InfoList != null) && (InfoList.size() > 5)) {
-            if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
-                String strType = InfoList.get(5);
-
-                if (Const.CONTROLLER_SETTING_WIRELESS.equals(strType)) {
-                    doorLockCurrent = 1;
-                }
-                else if (Const.CONTROLLER_SETTING_WIRE.equals(strType)) {
-                    doorLockCurrent = 2;
-                }
-                else if (Const.CONTROLLER_SETTING_FINGERPRINT.equals(strType)) {
-                    doorLockCurrent = 3;
-                }
-            }
-        }
-
-
-        List<String> itemList = new ArrayList<String>();
-        itemList.add(mActivity.getString(R.string.do_not_used));
-        itemList.add(mActivity.getString(R.string.contoller_door_lock_item_wireless));
-        itemList.add(mActivity.getString(R.string.contoller_door_lock_item_wired));
-        itemList.add(mActivity.getString(R.string.contoller_door_lock_item_fingerprint));
-
-        String controllerName = mActivity.getString(R.string.contoller_door_lock);
-        ControllerVO controllerVO = new ControllerVO(Const.CONTROLLER_TYPE_DOOR_LOCK
-                , controllerName
-                , doorLockCount
-                , doorLockCurrent
-                , itemList
-        );
-
-        if ((controllerVO != null) && (mControllerList != null))
-        {
-            mControllerList.add(controllerVO);
-        }
-
-        if(doorLockCurrent == 1)
-        {
-            int doorLockOpenDelayCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-            if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_WIRELESS_DOORLOCK_OPENDELAY) == false)
-            {
-                doorLockOpenDelayCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-            }
-            else
-            {
-                doorLockOpenDelayCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-            }
-
-
-            String controllerName2 = mActivity.getString(R.string.contoller_door_lock_wireless_open_delay_use);
-            ControllerVO ontrollerVO2 = new ControllerVO(Const.CONTROLLER_TYPE_DOOR_LOCK_WIRELESS_OPEN_DELAY_USE
-                    , controllerName2
-                    , Const.CONTROLLER_ONOFF_COUNT
-                    , doorLockOpenDelayCurrent
-            );
-
-            if ((ontrollerVO2 != null) && (mControllerList != null))
-            {
-                mControllerList.add(ontrollerVO2);
-            }
-        }
-
-
-        WallpadDeviceSet wds = new WallpadDeviceSet(getContext());
-        int[] doortype = wds.Get_DoorLock_Info();
-        wds.closeDB();
-
-        if(doortype[1] == WallpadDeviceSet.DOORLOCK_TYPE_NORMAL)
-        {
-            Log.i(TAG, "DoorType = DOORLOCK_TYPE_NORMAL : " + doortype[1]);
-        }
-        else if(doortype[1] == WallpadDeviceSet.DOORLOCK_TYPE_RF)
-        {
-            Log.i(TAG, "DoorType = DOORLOCK_TYPE_RF : " + doortype[1]);
-        }
-        else if(doortype[1] == WallpadDeviceSet.DOORLOCK_TYPE_FINGERPRINT)
-        {
-            Log.i(TAG, "DoorType = DOORLOCK_TYPE_FINGERPRINT : " + doortype[1]);
-        }
-
-    }
-
-
-    // add Controll to ControllerList
-    private void addControllerVO(int type) {
-        ControllerVO controllerVO = null;
-
-        switch (type) {
-
-            case Const.CONTROLLER_TYPE_GAS:
-            {
-                int gasCount = Const.CONTROLLER_ONOFF_COUNT;
-
-                int gasCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_GAS) == false)
-                    gasCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-
-                String controllerName = mActivity.getString(R.string.contoller_gas);
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , gasCount
-                        , gasCurrent
-                );
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_HEATER:
-            {
-                int heaterCount = Const.CONTROLLER_ONOFF_COUNT;
-                int heaterCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_HEATER) == false)
-                    heaterCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-
-                String controllerName = mActivity.getString(R.string.contoller_heater);
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , heaterCount
-                        , heaterCurrent
-                        , null /*itemList*/
-                );
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_VENTILATION:
-            {
-                int ventilationCount = Const.CONTROLLER_VENTILATION_MAX_COUNT;
-                int ventilationCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX; //mWallpadStatusData.GetHeatingCNT();
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_VENTILATION);
-                if ((InfoList != null) && (InfoList.size() > 5)) {
-                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
-                        String strType = InfoList.get(5);
-
-                        if (Const.VENTILATION_TYPE_COMMON.equals(strType)) {
-                            ventilationCurrent = 1;
-                        }
-                        else if (Const.VENTILATION_TYPE_LH.equals(strType)) {
-                            ventilationCurrent = 2;
-                        }
-                        else if (Const.VENTILATION_TYPE_HOOD.equals(strType)) {
-                            ventilationCurrent = 3;
-                        }
-                    }
-                }
-
-
-                List<String> itemList = new ArrayList<String>();
-                itemList.add(mActivity.getString(R.string.do_not_used));
-                itemList.add(mActivity.getString(R.string.contoller_ventilation_item_common));
-                itemList.add(mActivity.getString(R.string.contoller_ventilation_item_lh));
-                itemList.add(mActivity.getString(R.string.contoller_ventilation_item_hood));
-
-                String controllerName = mActivity.getString(R.string.contoller_ventilation);
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , ventilationCount
-                        , ventilationCurrent
-                        , itemList
-                );
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_ELECTRICALLY_CURTAIN:
-            {
-                int curtainCount = Const.CONTROLLER_ELECTRONICALLY_CURTAIN_MAX_COUNT;
-                int curtainCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX; //mWallpadStatusData.GetHeatingCNT();
-
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ELECTRONICALLY_CURTAIN);
-                if ((InfoList != null) && (InfoList.size() > 5)) {
-                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
-                        String strType = InfoList.get(5);
-
-                        if (Const.ELECTRONICALLY_CURTAIN_TYPE_MAIN_ROOM.equals(strType)) {
-                            curtainCurrent = 1;
-                        }
-                        else if (Const.ELECTRONICALLY_CURTAIN_TYPE_LIVING_ROOM.equals(strType)) {
-                            curtainCurrent = 2;
-                        }
-                        else if (Const.ELECTRONICALLY_CURTAIN_TYPE_MAIN_AND_LIVING_ROOM.equals(strType)) {
-                            curtainCurrent = 3;
-                        }
-                    }
-                }
-
-                List<String> itemList = new ArrayList<String>();
-                itemList.add(mActivity.getString(R.string.do_not_used));
-                itemList.add(mActivity.getString(R.string.controller_electronically_curtain_item_main_room));
-                itemList.add(mActivity.getString(R.string.controller_electronically_curtain_item_living_room));
-                itemList.add(mActivity.getString(R.string.controller_electronically_curtain_item_main_and_living_room));
-
-                String controllerName = mActivity.getString(R.string.contoller_electronically_curtain);
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , curtainCount
-                        , curtainCurrent
-                        , itemList
-                );
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_SYSTEM_AIRCON:
-            {
-                int systemAirconCount = Const.CONTROLLER_MAX_COUNT;
-                int systemAirconCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SYSTEM_AIRCON);
-                if ((InfoList != null) && (InfoList.size() > 5)) {
-                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
-                        String strType = InfoList.get(5);
-
-                        if (Const.SYSTEM_AIRCON_TYPE_SAMSUNG_AIR.equals(strType)) {
-                            systemAirconCurrent = 1;
-                        }
-                        else if (Const.SYSTEM_AIRCON_TYPE_SAMSUNG_AIR_HEAT.equals(strType)) {
-                            systemAirconCurrent = 2;
-                        }
-                        else if (Const.SYSTEM_AIRCON_TYPE_LG_AIR.equals(strType)) {
-                            systemAirconCurrent = 3;
-                        }
-                        else if (Const.SYSTEM_AIRCON_TYPE_LG_AIR_HEAT.equals(strType)) {
-                            systemAirconCurrent = 4;
-                        }
-                        else if (Const.SYSTEM_AIRCON_TYPE_ETC.equals(strType)) {
-                            systemAirconCurrent = 5;
-                        }
-                    }
-                }
-
-                List<String> itemList = new ArrayList<String>();
-                itemList.add(mActivity.getString(R.string.do_not_used));
-                itemList.add(mActivity.getString(R.string.contoller_systemaircon_samsung_air));
-                itemList.add(mActivity.getString(R.string.contoller_systemaircon_samsung_air_heat));
-                itemList.add(mActivity.getString(R.string.contoller_systemaircon_lg_air));
-                itemList.add(mActivity.getString(R.string.contoller_systemaircon_lg_air_heat));
-                itemList.add(mActivity.getString(R.string.contoller_systemaircon_etc));
-
-                String controllerName = mActivity.getString(R.string.contoller_system_aircon);
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , systemAirconCount
-                        , systemAirconCurrent
-                        , itemList
-                );
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_LIGHT_BATCH_CONTROLL:
-            {
-                int batchControllerCount = Const.CONTROLLER_LIGHT_BATCH_CONTROL_MAX_COUNT;
-                int batchControllCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SMART_SWITCH_LIGHT_AND_BATCH_CONTROL);
-                if ((InfoList != null) && (InfoList.size() > 3)) {
-                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
-                        String strType = InfoList.get(5);
-
-                        if (Version.getGatewayUsage()) {
-                            if (Const.LIGHT_BATCH_CONTROL_TYPE_HDC_SMART_SWITCH.equals(strType)) {
-                                batchControllCurrent = 1;
-                            }
-                            else if (Const.LIGHT_BATCH_CONTROL_TYPE_HDC_LCD_SMART_SWITCH.equals(strType)) {
-                                batchControllCurrent = 2;
-                            }
-                        }
-                        else {
-                            if (Const.LIGHT_BATCH_CONTROL_TYPE_COMMON_SMART_SWITCH.equals(strType)) {
-                                batchControllCurrent = 1;
-                            }
-                            else if (Const.LIGHT_BATCH_CONTROL_TYPE_COMMON_BATCH_CONTROLLER.equals(strType)) {
-                                batchControllCurrent = 2;
-                            }
-                        }
-                    }
-                }
-
-                List<String> itemList = new ArrayList<String>();
-                itemList.add(mActivity.getString(R.string.do_not_used));
-
-                if (Version.getGatewayUsage()) {
-                    itemList.add(mActivity.getString(R.string.controller_light_batch_item_common_hdc_smart_switch));
-                    itemList.add(mActivity.getString(R.string.controller_light_batch_item_common_hdc_lcd_smart_switch));
-                }
-                else {
-                    itemList.add(mActivity.getString(R.string.controller_light_batch_item_common_smart_switch));
-                    itemList.add(mActivity.getString(R.string.controller_light_batch_item_common_batch_controller));
-                }
-
-                String controllerName = mActivity.getString(R.string.contoller_smat_switch_and_light_batch_controll);
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , batchControllerCount
-                        , batchControllCurrent
-                        , itemList
-                );
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_GATEWAY:
-            {
-                int heaterCount = Const.CONTROLLER_ONOFF_COUNT;
-                int heaterCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_GATEWAY) == false)
-                    heaterCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-
-                String controllerName = mActivity.getString(R.string.contoller_gateway);
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , heaterCount
-                        , heaterCurrent
-                        , null /*itemList*/
-                );
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_REALTIME_MEASURING_METER:
-            {
-                int meterCount = Const.CONTROLLER_REALTIME_MEASURING_METER_MAX_COUNT;
-                int meterCurrent = 0; //mWallpadStatusData.GetHeatingCNT();
-
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_REALTIME_MEASURING_METER);
-                if ((InfoList != null) && (InfoList.size() > 5)) {
-                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
-                        String strType = InfoList.get(5);
-
-                        if (Const.REALTIME_MEASURING_METER_TYPE_3.equals(strType)) {
-                            meterCurrent = 1;
-                        }
-                        else if (Const.REALTIME_MEASURING_METER_TYPE_5.equals(strType)) {
-                            meterCurrent = 2;
-                        }
-                        else if (Const.REALTIME_MEASURING_METER_TYPE_6.equals(strType)) {
-                            meterCurrent = 3;
-                        }
-                    }
-                }
-
-// TO DO
-/*
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_REALTIME_MEASURING_METER);
-                if ((InfoList != null) && (InfoList.size() > 3)) {
-                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
-                        meterCurrent = 1;
-                    }
-                }
-*/
-
-
-                List<String> itemList = new ArrayList<String>();
-                itemList.add(mActivity.getString(R.string.do_not_used));
-                itemList.add(mActivity.getString(R.string.contoller_realtime_masuring_meter_item_3));
-                itemList.add(mActivity.getString(R.string.contoller_realtime_masuring_meter_item_5));
-                itemList.add(mActivity.getString(R.string.contoller_realtime_masuring_meter_item_6));
-
-                String controllerName = mActivity.getString(R.string.contoller_realtime_masuring_meter);
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , meterCount
-                        , meterCurrent
-                        , itemList
-                );
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_DIMMING_KCC:
-            {
-                int Count = Const.CONTROLLER_ONOFF_COUNT;
-                int Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DIMMING_KCC) == false)
-                    Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-
-                String controllerName = mActivity.getString(R.string.contoller_dimming_kcc);
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , Count
-                        , Current
-                        , null
-                );
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_HEAT_ONEDEVICE:
-            {
-                int heatKindCount = Const.CONTROLLER_ONOFF_COUNT;
-                int heatKindCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_HEAT_ONEDEVICE);
-                if ((InfoList != null) && (InfoList.size() > 5)) {
-                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
-                        String strType = InfoList.get(5);
-                        if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(strType)) {
-                            heatKindCurrent = 0;
-                        }
-                        else if (Const.CONTROLLER_HEATONEDEVICE_KIND_VENTI.equals(strType)) {
-                            heatKindCurrent = 1;
-                        }
-                        else if (Const.CONTROLLER_HEATONEDEVICE_KIND_LIGHT.equals(strType)) {
-                            heatKindCurrent = 2;
-                        }
-                        else if (Const.CONTROLLER_HEATONEDEVICE_KIND_VENTILIGHT.equals(strType)) {
-                            heatKindCurrent = 3;
-                        }
-                    }
-                    else if(Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3)))
-                    {
-                        String strType = InfoList.get(5);
-                        if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(strType)) {
-                            heatKindCurrent = 0;
-                        }
-                    }
-                }
-                Log.d(TAG, "[addControllerVO] heatKindCurrent [" + heatKindCurrent + "]");
-
-                List<String> itemList = new ArrayList<String>();
-                itemList.add(mActivity.getString(R.string.do_not_used));
-                itemList.add(mActivity.getString(R.string.contoller_heatonedevice_kind_item_venti));
-                itemList.add(mActivity.getString(R.string.contoller_heatonedevice_kind_item_light));
-                itemList.add(mActivity.getString(R.string.contoller_heatonedevice_kind_item_ventilight));
-
-                String controllerName = mActivity.getString(R.string.contoller_heat_onedevice);
-                controllerVO = new ControllerVO(Const.CONTROLLER_TYPE_HEAT_ONEDEVICE
-                        , controllerName
-                        , heatKindCount
-                        , heatKindCurrent
-                        , itemList
-                );
-
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_SENSOR_AP:
-            {
-                int Count = Const.CONTROLLER_ONOFF_COUNT;
-                int Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SENSOR_AP) == false)
-                    Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-
-                String controllerName = mActivity.getString(R.string.contoller_sensor_ap);
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , Count
-                        , Current
-                        , null
-                );
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_INTERLAYER_NOISE:
-            {
-                int Count = Const.CONTROLLER_ONOFF_COUNT;
-                int Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_INTERLAYER_NOISE) == false)
-                    Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-
-                String controllerName = mActivity.getString(R.string.contoller_interlayer_noise);
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , Count
-                        , Current
-                        , null
-                );
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_INNERROOM_DETECT_SENSOR:
-            {
-                int Count = Const.CONTROLLER_ONOFF_COUNT;
-                int Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_INNERROOM_DETECT_SENSOR) == false)
-                    Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-
-                String controllerName = mActivity.getString(R.string.contoller_innerroom_detect_sensor);
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , Count
-                        , Current
-                        , null
-                );
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_FACIAL_RECOG_MODULE:
-            {
-                int Count = Const.CONTROLLER_ONOFF_COUNT;
-                int Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_FACIAL_RECOG_MODULE) == false)
-                    Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-
-                String controllerName = mActivity.getString(R.string.contoller_facial_recog_module);
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , Count
-                        , Current
-                        , null
-                );
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_GATEWAY_MODEL_KIND:
-            {
-                int gatewayKindCount = Const.CONTROLLER_ONOFF_COUNT;
-                int gatewayKindCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_GATEWAY_MODEL_KIND);
-                if ((InfoList != null) && (InfoList.size() > 5)) {
-                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
-                        String strType = InfoList.get(5);
-
-                        if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(strType)) {
-                            gatewayKindCurrent = 0;
-                        }
-                        else if (Const.CONTROLLER_GATEWAY_KIND_200.equals(strType)) {
-                            gatewayKindCurrent = 1;
-                        }
-                        else if (Const.CONTROLLER_GATEWAY_KIND_300.equals(strType)) {
-                            gatewayKindCurrent = 2;
-                        }
-                    }
-                    else if(Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3)))
-                    {
-                        String strType = InfoList.get(5);
-
-                        if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(strType)) {
-                            gatewayKindCurrent = 0;
-                        }
-                    }
-                }
-
-
-                List<String> itemList = new ArrayList<String>();
-                itemList.add(mActivity.getString(R.string.do_not_used));
-                itemList.add(mActivity.getString(R.string.contoller_gateway_model_kind_item_old));
-                itemList.add(mActivity.getString(R.string.contoller_gateway_model_kind_item_new));
-
-                String controllerName = mActivity.getString(R.string.contoller_gateway_model_kind);
-                controllerVO = new ControllerVO(Const.CONTROLLER_TYPE_GATEWAY_MODEL_KIND
-                        , controllerName
-                        , gatewayKindCount
-                        , gatewayKindCurrent
-                        , itemList
-                );
-
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_INTEGRATED_SWITCH:
-            {
-                int Count = Const.CONTROLLER_ONOFF_COUNT;
-                int Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_INTEGRATED_SWITCH) == true)
-                    Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-
-                String controllerName = mActivity.getString(R.string.contoller_integraded_switch);
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , Count
-                        , Current
-                        , null
-                );
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_ELECTRIC_RANGE1:
-            {
-                int Count = Const.CONTROLLER_ONOFF_COUNT;
-                int Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ELECTRIC_RANGE) == true)
-                    Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-
-                String controllerName = mActivity.getString(R.string.contoller_electric_range);
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , Count
-                        , Current
-                        , null
-                );
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_COOKTOP_CONCENT:
-            {
-                int Count = Const.CONTROLLER_ONOFF_COUNT;
-                int Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_COOKTOP_CONCENT) == true)
-                    Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-
-                String controllerName = mActivity.getString(R.string.contoller_cooktop_concent);
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , Count
-                        , Current
-                        , null
-                );
-
-                /*WallpadDeviceSet wds = new WallpadDeviceSet(getContext());
-                boolean cooktopUse = wds.Get_CookTopConcent_Use();
-                wds.closeDB();
-                Log.i(TAG, "cooktopUse = " + cooktopUse);*/
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_SMARTSWITCH_ENERGY:
-            {
-                int energyKindCount = Const.CONTROLLER_ONOFF_COUNT;
-                int energyKindCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SMARTSWITCH_ENERGY);
-                if ((InfoList != null) && (InfoList.size() > 5)) {
-                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
-                        String strType = InfoList.get(5);
-                        if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(strType)) {
-                            energyKindCurrent = 0;
-                        }
-                        else if (Const.CONTROLLER_SMARTSWITCH_KIND_REALTIME.equals(strType)) {
-                            energyKindCurrent = 1;
-                        }
-                        else if (Const.CONTROLLER_SMARTSWITCH_KIND_REMOTE.equals(strType)) {
-                            energyKindCurrent = 2;
-                        }
-                    }
-                    else if(Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3)))
-                    {
-                        String strType = InfoList.get(5);
-                        if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(strType)) {
-                            energyKindCurrent = 0;
-                        }
-                    }
-                }
-                Log.d(TAG, "[addControllerVO] energyKindCurrent [" + energyKindCurrent + "]");
-
-                List<String> itemList = new ArrayList<String>();
-                itemList.add(mActivity.getString(R.string.do_not_used));
-                itemList.add(mActivity.getString(R.string.contoller_energy_smartswitch_energy_kind_item_realtime));
-                itemList.add(mActivity.getString(R.string.contoller_energy_smartswitch_energy_kind_item_remote));
-
-                String controllerName = mActivity.getString(R.string.contoller_energy_smartswitch_energy);
-                controllerVO = new ControllerVO(Const.CONTROLLER_TYPE_SMARTSWITCH_ENERGY
-                        , controllerName
-                        , energyKindCount
-                        , energyKindCurrent
-                        , itemList
-                );
-
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_PURITY:
-            {
-                int Count = Const.CONTROLLER_ONOFF_COUNT;
-                int Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_PURITY) == true)
-                    Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-
-                String controllerName = mActivity.getString(R.string.contoller_purity);
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , Count
-                        , Current
-                        , null
-                );
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_LOUVER:
-            {
-                int Count = Const.CONTROLLER_ONOFF_COUNT;
-                int Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LOUVER) == true)
-                    Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-
-                String controllerName = mActivity.getString(R.string.contoller_louver);
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , Count
-                        , Current
-                        , null
-                );
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_BIOMETICS:
-            {
-                int Count = Const.CONTROLLER_ONOFF_COUNT;
-                int Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_BIOMETICS) == true)
-                    Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-
-                String controllerName = mActivity.getString(R.string.contoller_biometics);
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , Count
-                        , Current
-                        , null
-                );
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_LH_GATEWAY:
-            {
-                int Count = Const.CONTROLLER_ONOFF_COUNT;
-                int Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LH_GATEWAY) == false)
-                    Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-
-                String controllerName = mActivity.getString(R.string.contoller_lh_gateway);
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , Count
-                        , Current
-                        , null
-                );
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_CTRL_USE:
-            {
-                int Count = Const.CONTROLLER_ONOFF_COUNT;
-                int Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_MAIN_GUI_CTRL_USE) == false)
-                    Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-
-                String controllerName = mActivity.getString(R.string.contoller_main_gui_ctrl_use);
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , Count
-                        , Current
-                        , null
-                );
-            }
-            break;
-        }
-
-        if (controllerVO != null)
-        {
-            mControllerList.add(controllerVO);
-        }
-
-    }
-
-    // update item to DB
-    private void updateSetUsedToSubDevice(int type, final int position, final String itemName) {
-        if (DEBUG)  Log.d(TAG, "updateSetUsedToSubDevice() type : " + type
-                + ", position : " + position
-                + ", itemName : " + itemName
-        );
-
-        String value = "";
-
-        if (itemName == null)
-            return;
-
-        switch (type) {
-            case Const.CONTROLLER_TYPE_LIGHT_TYPE:
-            {
-                final String controllerName = mMainDatabaseManager.getSubDevID(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LIGHT);
-                if (controllerName != null) {
-                    value = controllerName;
-                    if (position == 0) {
-                        value += "("
-                                + Const.CONTROLLER_SETTING_DO_NOT_USED
-                                + ")"
-                        ;
-                    }
-                    else {
-                        String typeName = null;
-
-                        if (ModelType == Version.MODEL_TYPE.IHN_1020GL)
-                        {
-                            if (itemName.equals("현산향일체형조명기본형")) typeName = Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_NORMAL;
-                            else if (itemName.equals("현산향일체형조명일괄소등병합형")) typeName = Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT;
-                            else if (itemName.equals("스마트분전반조명")) typeName = Const.LIGHT_CONTROLLER_TYPE_SMART_DISTRIBUTION;
-                        }
-                        else if (ModelType == Version.MODEL_TYPE.IHN_D101 || ModelType == Version.MODEL_TYPE.IHN_D101_I
-                                || ModelType == Version.MODEL_TYPE.IHN_D101K || ModelType == Version.MODEL_TYPE.IHN_D101K_I)
-                        {
-                            if (itemName.equals("현산향일체형조명기본형")) typeName = Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_NORMAL;
-                            else if (itemName.equals("현산향일체형조명일괄소등병합형")) typeName = Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT;
-                            else if (itemName.equals("스마트분전반조명")) typeName = Const.LIGHT_CONTROLLER_TYPE_SMART_DISTRIBUTION;
-                            else if (itemName.equals("조명(거실)")) typeName = Const.LIGHT_CONTROLLER_TYPE_LIVING_ROOM;
-                            else if (itemName.equals("조명(각실)")) typeName = Const.LIGHT_CONTROLLER_TYPE_ROOMS;
-                        }
-                        else if (ModelType == Version.MODEL_TYPE.IHN_1010GL || ModelType == Version.MODEL_TYPE.IHN_1010GL_I)
-                        {
-                            if (itemName.equals("현산향일체형조명기본형")) typeName = Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_NORMAL;
-                            else if (itemName.equals("현산향일체형조명일괄소등병합형")) typeName = Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT;
-                            else if (itemName.equals("현산향일체형조명일괄소등병합형_멀티스위치")) typeName = Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT_MULTISWITCH;
-                        }
-                        else {
-                            if (itemName.equals("조명(거실)")) typeName = Const.LIGHT_CONTROLLER_TYPE_LIVING_ROOM;
-                            else if (itemName.equals("조명(각실)")) typeName = Const.LIGHT_CONTROLLER_TYPE_ROOMS;
-                        }
-
-                        value += "(" + Const.CONTROLLER_SETTING_DO_USED + ")" + Const.CONTROLLER_SETTING_TYPE + "(" + typeName + ")";
-                    }
-
-                    List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LIGHT);
-                    if ((InfoList != null) && (InfoList.size() > 1)) {
-                        String deviceNo = InfoList.get(0);
-                        String circuitNo = InfoList.get(1);
-
-                        Log.d(TAG, "circuitNo before: " + circuitNo);
-                        if (itemName.equals("현산향일체형조명일괄소등병합형"))
-                        {
-                            if(Integer.parseInt(circuitNo) > 5)
-                            {
-                                circuitNo = "5";
-                                Log.d(TAG, "circuitNo after:  " + circuitNo);
-                            }
-                        }
-
-
-                        value = deviceNo
-                                + "("
-
-                                + circuitNo
-                                + ":"
-
-                                + value
-
-                                + ")"
-                        ;
-
-                        mMainDatabaseManager.setSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LIGHT, 0, value);
-                    }
-                }
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_LIGHT_LIVING_ROOM:
-            {
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LIGHT);
-                if ((InfoList != null) && (InfoList.size() > 1)) {
-                    String deviceNo = InfoList.get(0);
-
-                    value = deviceNo
-                            + "("
-
-                            + (itemName)
-                            + ":"
-                    ;
-
-                    for (int i=2; i + 1 <InfoList.size(); i=i+2) {
-                        value += InfoList.get(i)
-                                + "("
-                                + InfoList.get(i+1)
-                                + ")"
-                        ;
-                    }
-
-                    value += ")"
-                    ;
-
-                    mMainDatabaseManager.setSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LIGHT, 0, value);
-                }
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_LIGHT_MULTI_SWITCH:
-                break;
-
-            case Const.CONTROLLER_TYPE_GAS:
-            {
-                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_GAS, position);
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_ELECTRIC_RANGE1:
-            {
-                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ELECTRIC_RANGE, position);
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_FACIAL_RECOG_MODULE:
-            {
-                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_FACIAL_RECOG_MODULE, position);
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_COOKTOP_CONCENT:
-            {
-                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_COOKTOP_CONCENT, position);
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_HEATER:
-            {
-                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_HEATER, position);
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_GATEWAY:
-            {
-                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_GATEWAY, position);
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_DIMMING_KCC:
-            {
-                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DIMMING_KCC, position);
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_HEAT_ONEDEVICE:
-            {
-                final String controllerName = mMainDatabaseManager.getSubDevID(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_HEAT_ONEDEVICE);
-                if (controllerName != null) {
-                    value = controllerName;
-                    if (position == 0) {
-                        value += "("
-                                + Const.CONTROLLER_SETTING_DO_NOT_USED
-                                + ")"
-                                + Const.CONTROLLER_SETTING_TYPE
-                                + "("
-                                + Const.CONTROLLER_SETTING_DO_NOT_USED
-                                + ")"
-                        ;
-                    }
-                    else {
-                        String typeName = null;
-                        if (itemName.equals(Const.CONTROLLER_SETTING_DO_NOT_USED))
-                            typeName = Const.CONTROLLER_SETTING_DO_NOT_USED;
-                        else if (itemName.equals(Const.CONTROLLER_HEATONEDEVICE_KIND_VENTI))
-                            typeName = Const.CONTROLLER_HEATONEDEVICE_KIND_VENTI;
-                        else if (itemName.equals(Const.CONTROLLER_HEATONEDEVICE_KIND_LIGHT))
-                            typeName = Const.CONTROLLER_HEATONEDEVICE_KIND_LIGHT;
-                        else if (itemName.equals(Const.CONTROLLER_HEATONEDEVICE_KIND_VENTILIGHT))
-                            typeName = Const.CONTROLLER_HEATONEDEVICE_KIND_VENTILIGHT;
-
-                        value += "("
-                                + Const.CONTROLLER_SETTING_DO_USED
-                                + ")"
-
-                                + Const.CONTROLLER_SETTING_TYPE
-                                + "("
-                                + typeName
-                                + ")"
-                        ;
-                    }
-
-
-                    List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_HEAT_ONEDEVICE);
-                    if ((InfoList != null) && (InfoList.size() > 1)) {
-                        String deviceNo = InfoList.get(0);
-                        String circuitNo = InfoList.get(1);
-
-                        value = deviceNo
-                                + "("
-
-                                + circuitNo
-                                + ":"
-
-                                + value
-
-                                + ")"
-                        ;
-
-                        mMainDatabaseManager.setSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_HEAT_ONEDEVICE, 0, value);
-                    }
-                }
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_SENSOR_AP:
-            {
-                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SENSOR_AP, position);
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_INTERLAYER_NOISE:
-            {
-                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_INTERLAYER_NOISE, position);
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_INNERROOM_DETECT_SENSOR:
-            {
-                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_INNERROOM_DETECT_SENSOR, position);
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_DOOR_LOCK:
-            {
-                final String controllerName = mMainDatabaseManager.getSubDevID(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DOOR_LOCK);
-                if (controllerName != null) {
-                    value = controllerName;
-                    if (position == 0) {
-                        value += "("
-                                + Const.CONTROLLER_SETTING_DO_NOT_USED
-                                + ")"
-                        ;
-                    }
-                    else {
-                        String typeName = null;
-
-                        if (itemName.equals(Const.CONTROLLER_SETTING_WIRELESS))
-                            typeName = Const.CONTROLLER_SETTING_WIRELESS;
-                        else if (itemName.equals(Const.CONTROLLER_SETTING_WIRE))
-                            typeName = Const.CONTROLLER_SETTING_WIRE;
-                        else if (itemName.equals(Const.CONTROLLER_SETTING_FINGERPRINT))
-                            typeName = Const.CONTROLLER_SETTING_FINGERPRINT;
-
-                        value += "("
-                                + Const.CONTROLLER_SETTING_DO_USED
-                                + ")"
-
-                                + Const.CONTROLLER_SETTING_TYPE
-                                + "("
-                                + typeName
-                                + ")"
-                        ;
-                    }
-
-
-                    List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DOOR_LOCK);
-                    if ((InfoList != null) && (InfoList.size() > 1)) {
-                        String deviceNo = InfoList.get(0);
-                        String circuitNo = InfoList.get(1);
-
-                        value = deviceNo
-                                + "("
-
-                                + circuitNo
-                                + ":"
-
-                                + value
-
-                                + ")"
-                        ;
-
-                        mMainDatabaseManager.setSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DOOR_LOCK, 0, value);
-                    }
-                }
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_DOOR_LOCK_WIRELESS_OPEN_DELAY_USE:
-            {
-                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_WIRELESS_DOORLOCK_OPENDELAY, position);
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_LH_GATEWAY:
-            {
-                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LH_GATEWAY, position);
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_CTRL_USE:
-            {
-                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_MAIN_GUI_CTRL_USE, position);
-            }
-            break;
-/*
-            case Const.CONTROLLER_TYPE_DOOR_LOCK_WIRED:
-                // TO DO
-                //mWallpadStatusData.SetHeatingCNT(position);
-                break;
-
-            case Const.CONTROLLER_TYPE_DOOR_LOCK_WIRELESS:
-                // TO DO
-                //mWallpadStatusData.SetHeatingCNT(position);
-                break;
-*/
-
-            case Const.CONTROLLER_TYPE_VENTILATION:
-            {
-                final String controllerName = mMainDatabaseManager.getSubDevID(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_VENTILATION);
-                if (controllerName != null) {
-                    value = controllerName;
-                    if (position == 0) {
-                        value += "("
-                                + Const.CONTROLLER_SETTING_DO_NOT_USED
-                                + ")"
-                        ;
-                    }
-                    else {
-                        String typeName = null;
-
-                        if (itemName.equals(Const.VENTILATION_TYPE_COMMON))
-                            typeName = Const.VENTILATION_TYPE_COMMON;
-                        else if (itemName.equals(Const.VENTILATION_TYPE_LH))
-                            typeName = Const.VENTILATION_TYPE_LH;
-                        else if (itemName.equals(Const.VENTILATION_TYPE_HOOD))
-                            typeName = Const.VENTILATION_TYPE_HOOD;
-
-                        value += "("
-                                + Const.CONTROLLER_SETTING_DO_USED
-                                + ")"
-
-                                + Const.CONTROLLER_SETTING_TYPE
-                                + "("
-                                + typeName
-                                + ")"
-                        ;
-                    }
-
-
-                    List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_VENTILATION);
-                    if ((InfoList != null) && (InfoList.size() > 1)) {
-                        String deviceNo = InfoList.get(0);
-                        String circuitNo = InfoList.get(1);
-
-                        value = deviceNo
-                                + "("
-
-                                + circuitNo
-                                + ":"
-
-                                + value
-
-                                + ")"
-                        ;
-
-                        mMainDatabaseManager.setSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_VENTILATION, 0, value);
-                    }
-                }
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_ELECTRICALLY_CURTAIN:
-            {
-                final String controllerName = mMainDatabaseManager.getSubDevID(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ELECTRONICALLY_CURTAIN);
-                if (controllerName != null) {
-                    value = controllerName;
-                    if (position == 0) {
-                        value += "("
-                                + Const.CONTROLLER_SETTING_DO_NOT_USED
-                                + ")"
-                        ;
-                    }
-                    else {
-                        String typeName = null;
-
-                        if (itemName.equals(Const.ELECTRONICALLY_CURTAIN_TYPE_MAIN_ROOM))
-                            typeName = Const.ELECTRONICALLY_CURTAIN_TYPE_MAIN_ROOM;
-                        else if (itemName.equals(Const.ELECTRONICALLY_CURTAIN_TYPE_LIVING_ROOM))
-                            typeName = Const.ELECTRONICALLY_CURTAIN_TYPE_LIVING_ROOM;
-                        else if (itemName.equals(Const.ELECTRONICALLY_CURTAIN_TYPE_MAIN_AND_LIVING_ROOM))
-                            typeName = Const.ELECTRONICALLY_CURTAIN_TYPE_MAIN_AND_LIVING_ROOM;
-
-                        value += "("
-                                + Const.CONTROLLER_SETTING_DO_USED
-                                + ")"
-
-                                + Const.CONTROLLER_SETTING_TYPE
-                                + "("
-                                + typeName
-                                + ")"
-                        ;
-                    }
-
-
-                    List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ELECTRONICALLY_CURTAIN);
-                    if ((InfoList != null) && (InfoList.size() > 1)) {
-                        String deviceNo = InfoList.get(0);
-                        String circuitNo = InfoList.get(1);
-
-                        value = deviceNo
-                                + "("
-
-                                + circuitNo
-                                + ":"
-
-                                + value
-
-                                + ")"
-                        ;
-
-                        mMainDatabaseManager.setSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ELECTRONICALLY_CURTAIN, 0, value);
-                    }
-                }
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_SYSTEM_AIRCON:
-            {
-                final String controllerName = mMainDatabaseManager.getSubDevID(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SYSTEM_AIRCON);
-                if (controllerName != null) {
-                    value = controllerName;
-                    if (position == 0) {
-                        value += "("
-                                + Const.CONTROLLER_SETTING_DO_NOT_USED
-                                + ")"
-                                + Const.CONTROLLER_SETTING_TYPE
-                                + "("
-                                + Const.CONTROLLER_SETTING_DO_NOT_USED
-                                + ")"
-                        ;
-                    }
-                    else {
-                        String typeName = null;
-
-                        if (itemName.equals(Const.CONTROLLER_SETTING_DO_NOT_USED))
-                            typeName = Const.CONTROLLER_SETTING_DO_NOT_USED;
-                        else if (itemName.equals(Const.SYSTEM_AIRCON_TYPE_SAMSUNG_AIR))
-                            typeName = Const.SYSTEM_AIRCON_TYPE_SAMSUNG_AIR;
-                        else if (itemName.equals(Const.SYSTEM_AIRCON_TYPE_SAMSUNG_AIR_HEAT))
-                            typeName = Const.SYSTEM_AIRCON_TYPE_SAMSUNG_AIR_HEAT;
-                        else if (itemName.equals(Const.SYSTEM_AIRCON_TYPE_LG_AIR))
-                            typeName = Const.SYSTEM_AIRCON_TYPE_LG_AIR;
-                        else if (itemName.equals(Const.SYSTEM_AIRCON_TYPE_LG_AIR_HEAT))
-                            typeName = Const.SYSTEM_AIRCON_TYPE_LG_AIR_HEAT;
-                        else if (itemName.equals(Const.SYSTEM_AIRCON_TYPE_ETC))
-                            typeName = Const.SYSTEM_AIRCON_TYPE_ETC;
-
-                        value += "("
-                                + Const.CONTROLLER_SETTING_DO_USED
-                                + ")"
-
-                                + Const.CONTROLLER_SETTING_TYPE
-                                + "("
-                                + typeName
-                                + ")"
-                        ;
-                    }
-
-
-                    List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SYSTEM_AIRCON);
-                    if ((InfoList != null) && (InfoList.size() > 1)) {
-                        String deviceNo = InfoList.get(0);
-                        String circuitNo = InfoList.get(1);
-
-                        value = deviceNo
-                                + "("
-
-                                + circuitNo
-                                + ":"
-
-                                + value
-
-                                + ")"
-                        ;
-
-                        mMainDatabaseManager.setSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SYSTEM_AIRCON, 0, value);
-                    }
-                }
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_LIGHT_BATCH_CONTROLL:
-            {
-                int itemType = MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SMART_SWITCH_LIGHT_AND_BATCH_CONTROL;
-                String controllerName = mMainDatabaseManager.getSubDevID(itemType);
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(itemType);
-
-                String[] itemNameTempSplit = new String(itemName).split(" ");
-
-                Log.d(TAG, "itemNameTempSplit[0] : " + itemNameTempSplit[0]);
-
-                if (controllerName != null) {
-                    value = controllerName;
-
-                    int i = 4;
-                    if (position == 0) {
-                        value += "("
-                                + Const.CONTROLLER_SETTING_DO_NOT_USED
-                                + ")"
-                        ;
-                    }
-                    else {
-                        String typeName = null;
-
-                        if (itemNameTempSplit[0].equals(Const.LIGHT_BATCH_CONTROL_TYPE_COMMON_SMART_SWITCH))
-                            typeName = Const.LIGHT_BATCH_CONTROL_TYPE_COMMON_SMART_SWITCH;
-                        else if (itemNameTempSplit[0].equals(Const.LIGHT_BATCH_CONTROL_TYPE_COMMON_BATCH_CONTROLLER))
-                            typeName = Const.LIGHT_BATCH_CONTROL_TYPE_COMMON_BATCH_CONTROLLER;
-                        else if (itemNameTempSplit[0].equals(Const.LIGHT_BATCH_CONTROL_TYPE_HDC_SMART_SWITCH))
-                            typeName = Const.LIGHT_BATCH_CONTROL_TYPE_HDC_SMART_SWITCH;
-                        else if (itemNameTempSplit[0].equals(Const.LIGHT_BATCH_CONTROL_TYPE_HDC_LCD_SMART_SWITCH))
-                            typeName = Const.LIGHT_BATCH_CONTROL_TYPE_HDC_LCD_SMART_SWITCH;
-
-                        value += "("
-                                + Const.CONTROLLER_SETTING_DO_USED
-                                + ")"
-
-                                + Const.CONTROLLER_SETTING_TYPE
-                                + "("
-                                + typeName
-                                + ")"
-                        ;
-
-                        i += 2;
-                    }
-
-
-                    if ((InfoList != null) && (InfoList.size() > 3)) {
-                        String deviceNo = InfoList.get(0);
-                        String circuitNo = InfoList.get(1);
-
-                        value = deviceNo
-                                + "("
-
-                                + circuitNo
-                                + ":"
-
-                                + value
-                        ;
-
-                        for (; i + 1 <InfoList.size(); i=i+2) {
-                            value += InfoList.get(i)
-                                    + "("
-                                    + InfoList.get(i+1)
-                                    + ")"
-                            ;
-                        }
-
-                        value += ")"
-                        ;
-
-                        mMainDatabaseManager.setSettingDataSubDev(itemType, 0, value);
-                    }
-                }
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_REALTIME_MEASURING_METER:
-            {
-                final String controllerName = mMainDatabaseManager.getSubDevID(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_REALTIME_MEASURING_METER);
-                if (controllerName != null) {
-                    value = controllerName;
-                    if (position == 0) {
-                        value += "("
-                                + Const.CONTROLLER_SETTING_DO_NOT_USED
-                                + ")"
-                        ;
-                    }
-                    else {
-                        String typeName = null;
-
-                        if (itemName.equals(Const.REALTIME_MEASURING_METER_TYPE_3))
-                            typeName = Const.REALTIME_MEASURING_METER_TYPE_3;
-                        else if (itemName.equals(Const.REALTIME_MEASURING_METER_TYPE_5))
-                            typeName = Const.REALTIME_MEASURING_METER_TYPE_5;
-                        else if (itemName.equals(Const.REALTIME_MEASURING_METER_TYPE_6))
-                            typeName = Const.REALTIME_MEASURING_METER_TYPE_6;
-
-                        value += "("
-                                + Const.CONTROLLER_SETTING_DO_USED
-                                + ")"
-
-                                + Const.CONTROLLER_SETTING_TYPE
-                                + "("
-                                + typeName
-                                + ")"
-                        ;
-                    }
-
-
-                    List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_REALTIME_MEASURING_METER);
-                    if ((InfoList != null) && (InfoList.size() > 1)) {
-                        String deviceNo = InfoList.get(0);
-                        String circuitNo = InfoList.get(1);
-
-                        value = deviceNo
-                                + "("
-
-                                + circuitNo
-                                + ":"
-
-                                + value
-
-                                + ")"
-                        ;
-
-                        mMainDatabaseManager.setSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_REALTIME_MEASURING_METER, 0, value);
-                    }
-                }
-            }
-            break;
-
-			case Const.CONTROLLER_TYPE_GATEWAY_MODEL_KIND:
-			{
-				final String controllerName = mMainDatabaseManager.getSubDevID(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_GATEWAY_MODEL_KIND);
-				if (controllerName != null) {
-					value = controllerName;
-					if (position == 0) {
-						value += "("
-								+ Const.CONTROLLER_SETTING_DO_NOT_USED
-								+ ")"
-								+ Const.CONTROLLER_SETTING_TYPE
-								+ "("
-								+ Const.CONTROLLER_SETTING_DO_NOT_USED
-								+ ")"
-						;
-					}
-					else {
-						String typeName = null;
-
-						if (itemName.equals(Const.CONTROLLER_SETTING_DO_NOT_USED))
-							typeName = Const.CONTROLLER_SETTING_DO_NOT_USED;
-						else if (itemName.equals(Const.CONTROLLER_GATEWAY_KIND_200))
-							typeName = Const.CONTROLLER_GATEWAY_KIND_200;
-						else if (itemName.equals(Const.CONTROLLER_GATEWAY_KIND_300))
-							typeName = Const.CONTROLLER_GATEWAY_KIND_300;
-
-						value += "("
-								+ Const.CONTROLLER_SETTING_DO_USED
-								+ ")"
-
-								+ Const.CONTROLLER_SETTING_TYPE
-								+ "("
-								+ typeName
-								+ ")"
-						;
-					}
-
-
-					List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_GATEWAY_MODEL_KIND);
-					if ((InfoList != null) && (InfoList.size() > 1)) {
-						String deviceNo = InfoList.get(0);
-						String circuitNo = InfoList.get(1);
-
-						value = deviceNo
-								+ "("
-
-								+ circuitNo
-								+ ":"
-
-								+ value
-
-								+ ")"
-						;
-
-						mMainDatabaseManager.setSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_GATEWAY_MODEL_KIND, 0, value);
-					}
-				}
-			}
-			break;
-
-            case Const.CONTROLLER_TYPE_INTEGRATED_SWITCH:
-            {
-                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_INTEGRATED_SWITCH, position);
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_SMARTSWITCH_ENERGY:
-            {
-                final String controllerName = mMainDatabaseManager.getSubDevID(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SMARTSWITCH_ENERGY);
-                if (controllerName != null) {
-                    value = controllerName;
-                    if (position == 0) {
-                        value += "("
-                                + Const.CONTROLLER_SETTING_DO_NOT_USED
-                                + ")"
-                                + Const.CONTROLLER_SETTING_TYPE
-                                + "("
-                                + Const.CONTROLLER_SETTING_DO_NOT_USED
-                                + ")"
-                        ;
-                    }
-                    else {
-                        String typeName = null;
-                        if (itemName.equals(Const.CONTROLLER_SETTING_DO_NOT_USED))
-                            typeName = Const.CONTROLLER_SETTING_DO_NOT_USED;
-                        else if (itemName.equals(Const.CONTROLLER_SMARTSWITCH_KIND_REALTIME))
-                            typeName = Const.CONTROLLER_SMARTSWITCH_KIND_REALTIME;
-                        else if (itemName.equals(Const.CONTROLLER_SMARTSWITCH_KIND_REMOTE))
-                            typeName = Const.CONTROLLER_SMARTSWITCH_KIND_REMOTE;
-
-                        value += "("
-                                + Const.CONTROLLER_SETTING_DO_USED
-                                + ")"
-
-                                + Const.CONTROLLER_SETTING_TYPE
-                                + "("
-                                + typeName
-                                + ")"
-                        ;
-                    }
-
-
-                    List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SMARTSWITCH_ENERGY);
-                    if ((InfoList != null) && (InfoList.size() > 1)) {
-                        String deviceNo = InfoList.get(0);
-                        String circuitNo = InfoList.get(1);
-
-                        value = deviceNo
-                                + "("
-
-                                + circuitNo
-                                + ":"
-
-                                + value
-
-                                + ")"
-                        ;
-
-                        mMainDatabaseManager.setSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SMARTSWITCH_ENERGY, 0, value);
-                    }
-                }
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_PURITY:
-            {
-                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_PURITY, position);
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_LOUVER:
-            {
-                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LOUVER, position);
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_BIOMETICS:
-            {
-                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_BIOMETICS, position);
-            }
-            break;
-
-            default:
-                break;
-        }
-
-    }
-
-
-
-    @Override
-    public void onItemChanged(final int controllerIdx, final int position, final String itemName) {
-        String controllerName = mControllerList.get(controllerIdx).getName();
-        String message = controllerName + " 를 " + (itemName) + "로 변경하였습니다.";
-
-
-        if (DEBUG)  Log.d(TAG, "onItemChanged() controllerIdx : " + controllerIdx
-                + ", position : " + position
-                + ", itemName : " + itemName
-        );
-
-        MainActivity.setFinishTimerReset();
-
-        MainApplication.getApplication().setReboot();
-
-        int type = mControllerList.get(controllerIdx).getType();
-        if (type >= Const.CONTROLLER_TYPE_BASE) {
-            ControllerVO controllerVO = mControllerList.get(controllerIdx);
-            if (controllerVO != null) {
-                controllerVO.setInitCount(position);
-            }
-        }
-
-        if (DEBUG)  Log.d(TAG, "doTestController() type : " + type);
-
-        switch (type) {
-            case Const.CONTROLLER_TYPE_LIGHT_TYPE:
-                updateSetUsedToSubDevice(type, position, itemName);
-
-                refreshAll();
-                break;
-
-            case Const.CONTROLLER_TYPE_LIGHT_LIVING_ROOM:
-                updateSetUsedToSubDevice(type, position, itemName);
-                break;
-
-            case Const.CONTROLLER_TYPE_LIGHT_MULTI_SWITCH:
-                break;
-
-            case Const.CONTROLLER_TYPE_GAS:
-                updateSetUsedToSubDevice(type, position, itemName);
-                break;
-
-            case Const.CONTROLLER_TYPE_ELECTRIC_RANGE1:
-                updateSetUsedToSubDevice(type, position, itemName);
-                refreshAll();
-                break;
-
-            case Const.CONTROLLER_TYPE_COOKTOP_CONCENT:
-                updateSetUsedToSubDevice(type, position, itemName);
-                refreshAll();
-                break;
-
-            case Const.CONTROLLER_TYPE_HEATER:
-                updateSetUsedToSubDevice(type, position, itemName);
-                break;
-
-
-            case Const.CONTROLLER_TYPE_DOOR_LOCK:
-                updateSetUsedToSubDevice(type, position, itemName);
-                refreshAll();
-                break;
-
-            case Const.CONTROLLER_TYPE_DOOR_LOCK_WIRELESS_OPEN_DELAY_USE:
-                updateSetUsedToSubDevice(type, position, itemName);
-                break;
-/*
-            case Const.CONTROLLER_TYPE_DOOR_LOCK_WIRED:
-                // TO DO
-                //mWallpadStatusData.SetHeatingCNT(position);
-                break;
-
-            case Const.CONTROLLER_TYPE_DOOR_LOCK_WIRELESS:
-                // TO DO
-                //mWallpadStatusData.SetHeatingCNT(position);
-                break;
-*/
-
-            case Const.CONTROLLER_TYPE_VENTILATION:
-                updateSetUsedToSubDevice(type, position, itemName);
-                break;
-
-            case Const.CONTROLLER_TYPE_ELECTRICALLY_CURTAIN:
-                updateSetUsedToSubDevice(type, position, itemName);
-                break;
-
-            case Const.CONTROLLER_TYPE_SYSTEM_AIRCON:
-                updateSetUsedToSubDevice(type, position, itemName);
-                break;
-
-            case Const.CONTROLLER_TYPE_LIGHT_BATCH_CONTROLL:
-                updateSetUsedToSubDevice(type, position, itemName);
-                break;
-
-            case Const.CONTROLLER_TYPE_REALTIME_MEASURING_METER:
-                updateSetUsedToSubDevice(type, position, itemName);
-                break;
-
-            case Const.CONTROLLER_TYPE_GATEWAY:
-                updateSetUsedToSubDevice(type, position, itemName);
-                break;
-
-            case Const.CONTROLLER_TYPE_DIMMING_KCC:
-                updateSetUsedToSubDevice(type, position, itemName);
-                break;
-
-            case Const.CONTROLLER_TYPE_HEAT_ONEDEVICE:
-                updateSetUsedToSubDevice(type, position, itemName);
-                break;
-
-            case Const.CONTROLLER_TYPE_SENSOR_AP:
-                updateSetUsedToSubDevice(type, position, itemName);
-                break;
-
-            case Const.CONTROLLER_TYPE_INTERLAYER_NOISE:
-                updateSetUsedToSubDevice(type, position, itemName);
-                break;
-
-            case Const.CONTROLLER_TYPE_INNERROOM_DETECT_SENSOR:
-                updateSetUsedToSubDevice(type, position, itemName);
-                break;
-
-			case Const.CONTROLLER_TYPE_GATEWAY_MODEL_KIND:
-				updateSetUsedToSubDevice(type, position, itemName);
-				break;
-
-            case Const.CONTROLLER_TYPE_INTEGRATED_SWITCH:
-				updateSetUsedToSubDevice(type, position, itemName);
-				break;
-
-            case Const.CONTROLLER_TYPE_FACIAL_RECOG_MODULE:
-				updateSetUsedToSubDevice(type, position, itemName);
-				break;
-
-            case Const.CONTROLLER_TYPE_SMARTSWITCH_ENERGY:
-                updateSetUsedToSubDevice(type, position, itemName);
-                break;
-
-            case Const.CONTROLLER_TYPE_PURITY:
-                updateSetUsedToSubDevice(type, position, itemName);
-                break;
-
-            case Const.CONTROLLER_TYPE_LOUVER:
-                updateSetUsedToSubDevice(type, position, itemName);
-                break;
-
-            case Const.CONTROLLER_TYPE_BIOMETICS:
-                updateSetUsedToSubDevice(type, position, itemName);
-                break;
-
-            case Const.CONTROLLER_TYPE_LH_GATEWAY:
-                updateSetUsedToSubDevice(type, position, itemName);
-                break;
-
-            case Const.CONTROLLER_TYPE_CTRL_USE:
-                updateSetUsedToSubDevice(type, position, itemName);
-                break;
-
-            default:
-                break;
-        }
-
-        // if (DEBUG)  Toast.makeText(mActivity, message, Toast.LENGTH_SHORT).show();
-    }
-
-    /**
-     * 제로에너지하우스 사용 여부 (사용함인 경우에는 조명설정부분 표시하지 않음)
-     * **/
-    public boolean GetZeroEnergyHouse()
-    {
-        int Current = 0;
-
-        List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ZERO_ENERGY_HOUSE);
-        if ((InfoList != null) && (InfoList.size() > 3)) {
-            if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
-                Current = 1;
-            }
-        }
-        if(Current == 1)
-        {
-            return true;
-        }
-        else
-        {
-            return false;
-        }
-    }
-
-}
+package com.artncore.managersetting.ui.fragments;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import kr.co.icontrols.wallpadsupport.Version;
+import android.app.Activity;
+import android.os.Bundle;
+//import android.support.v4.app.Fragment;
+import androidx.fragment.app.Fragment;
+import androidx.core.view.MotionEventCompat;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.View.OnTouchListener;
+import android.widget.ListView;
+
+
+import com.artncore.WallPadDataMgr.WallpadDeviceSet;
+import com.artncore.managersetting.dao.MainDatabaseManager;
+import com.artncore.managersetting.domain.Const;
+import com.artncore.managersetting.domain.ControllerVO;
+import com.artncore.managersetting.ui.ControllerListAdapter;
+import com.artncore.managersetting.ui.activities.MainActivity;
+import com.artncore.managersetting.util.StringUtil;
+import com.artncore.wallpadapi.WallPadAPI;
+import com.artncore.managersetting.MainApplication;
+import com.artncore.managersetting.R;
+
+/**
+ * A list fragment representing a list of Items. This fragment also supports
+ * tablet devices by allowing list items to be given an 'activated' state upon
+ * selection. This helps indicate which item is currently being viewed in a
+ * {link ItemDetailFragment}.
+ * <p>
+ * Activities containing this fragment MUST implement the {link Callbacks}
+ * interface.
+ */
+public class SettingControllerFragment extends Fragment implements ControllerListAdapter.ItemChangedListener {
+    private static final String TAG = "SettingControllerFragment";
+
+    private final boolean DEBUG = true;
+
+    private Activity mActivity;
+    private WallPadAPI mWallPadAPI;
+    private MainDatabaseManager mMainDatabaseManager;
+
+    private ListView mControllerListView;
+    private List<ControllerVO> mControllerList;
+    private int ModelType = Version.getModelType();
+    //private int ModelType = Version.MODEL_TYPE.IHN_1020B_A;
+
+
+    // constructor
+    public SettingControllerFragment() {
+    }
+
+    @Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+
+        mActivity = activity;
+        mMainDatabaseManager = MainActivity.getMainDatabaseManager();
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        if (DEBUG)  Log.d(TAG, "onCreate() ");
+
+        super.onCreate(savedInstanceState);
+
+        mWallPadAPI = MainActivity.getWallPadAPI();
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+                             Bundle savedInstanceState) {
+        View rootView = (View) inflater.inflate(R.layout.controller_setting_container,
+                container, false);
+
+        return (View)rootView;
+    }
+
+    @Override
+    public void onViewCreated(View view, Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+
+        if (savedInstanceState != null) {}
+
+        mControllerListView = (ListView) view.findViewById(R.id.controller_list);
+
+        mControllerListView.setOnTouchListener(new OnTouchListener() {
+
+            @Override
+            public boolean onTouch(View v, MotionEvent event) {
+                switch (MotionEventCompat.getActionMasked(event)) {
+
+                    case MotionEvent.ACTION_UP:
+                        MainActivity.setFinishTimerReset();
+                        break;
+
+                    default:
+                        break;
+                }
+                return false;
+            }
+        });
+
+        initListView();
+    }
+
+    @Override
+    public void onDetach() {
+        super.onDetach();
+
+        mWallPadAPI = null;
+
+        if (MainApplication.getApplication().isSetReboot())
+            ((MainActivity) mActivity).exitActivity();
+    }
+
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+    }
+
+
+    // refresh All View
+    private void refreshAll() {
+        mControllerListView.setAdapter(null);
+        mControllerList.clear();
+
+        initListView();
+    }
+
+
+    // init ListView
+    private void initListView() {
+        getControllerList();
+
+        ControllerListAdapter adapter = new ControllerListAdapter(mActivity
+                , R.layout.setting_controller_item
+                , mControllerList
+                , this);
+
+        mControllerListView.setAdapter(adapter);
+    }
+
+
+    // get ControllerList
+    private void getControllerList() {
+        mControllerList = new ArrayList<ControllerVO>();
+
+        if (mWallPadAPI != null) {
+            //addControllerVO(Const.CONTROLLER_TYPE_LIGHT_TYPE);
+            //addControllerVO(Const.CONTROLLER_TYPE_LIGHT_ROOMS);
+
+            if(GetZeroEnergyHouse() == false)
+            {
+                getLightControllerList();
+            }
+
+            addControllerVO(Const.CONTROLLER_TYPE_GAS);
+			addControllerVO(Const.CONTROLLER_TYPE_COOKTOP_CONCENT);
+            addControllerVO(Const.CONTROLLER_TYPE_ELECTRIC_RANGE1);
+
+            addControllerVO(Const.CONTROLLER_TYPE_HEATER);
+
+            //addControllerVO(Const.CONTROLLER_TYPE_DOOR_LOCK_WIRED);
+            //addControllerVO(Const.CONTROLLER_TYPE_DOOR_LOCK_WIRELESS);
+            //addControllerVO(Const.CONTROLLER_TYPE_DOOR_LOCK);
+
+            addDlockControllerVO();
+            addControllerVO(Const.CONTROLLER_TYPE_VENTILATION);
+
+            //addControllerVO(Const.CONTROLLER_TYPE_ELECTRICALLY_CURTAIN);
+            addControllerVO(Const.CONTROLLER_TYPE_SYSTEM_AIRCON);
+
+            addControllerVO(Const.CONTROLLER_TYPE_LIGHT_BATCH_CONTROLL);
+            addControllerVO(Const.CONTROLLER_TYPE_FACIAL_RECOG_MODULE);
+            //addControllerVO(Const.CONTROLLER_TYPE_REALTIME_MEASURING_METER);
+
+            if (ModelType != Version.MODEL_TYPE.IHN_1020SA_A) {
+                addControllerVO(Const.CONTROLLER_TYPE_GATEWAY);
+            }
+
+            if (ModelType != Version.MODEL_TYPE.IHN_1020GL) {
+                addControllerVO(Const.CONTROLLER_TYPE_DIMMING_KCC);
+            }
+
+            addControllerVO(Const.CONTROLLER_TYPE_HEAT_ONEDEVICE);
+
+            addControllerVO(Const.CONTROLLER_TYPE_SENSOR_AP);
+            addControllerVO(Const.CONTROLLER_TYPE_INTERLAYER_NOISE);
+            addControllerVO(Const.CONTROLLER_TYPE_INNERROOM_DETECT_SENSOR);
+
+            if (Version.getGatewayUsage()) {
+                addControllerVO(Const.CONTROLLER_TYPE_GATEWAY_MODEL_KIND);
+            }
+
+            if (Version.getPlatformType() == Version.PLATFORM_TYPE.A40i) {
+                addControllerVO(Const.CONTROLLER_TYPE_INTEGRATED_SWITCH);
+            }
+
+            addControllerVO(Const.CONTROLLER_TYPE_SMARTSWITCH_ENERGY);
+
+            addControllerVO(Const.CONTROLLER_TYPE_PURITY);
+
+            addControllerVO(Const.CONTROLLER_TYPE_LOUVER);
+
+            addControllerVO(Const.CONTROLLER_TYPE_BIOMETICS);
+        }
+    }
+
+
+    // get LightControllerList
+    private void getLightControllerList() {
+        if (mWallPadAPI != null) {
+            int typeCount = Const.CONTROLLER_LIGHT_TYPE_MAX_COUNT;
+            int typeCurrent = 0;
+            int lightCurrentCount = 0;
+
+            List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LIGHT);
+            if ((InfoList != null) && (InfoList.size() > 5)) {
+                if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+                    int circuitNo = StringUtil.getInt(InfoList.get(1), false);
+                    if ((circuitNo > -1) && (circuitNo <= Const.CONTROLLER_LIGHT_MAX_COUNT + 1))
+                        lightCurrentCount = circuitNo - 1;
+
+                    String strType = InfoList.get(5);
+
+                    if (ModelType == Version.MODEL_TYPE.IHN_1020GL) {
+                        if (Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_NORMAL.equals(strType)) {
+                            typeCurrent = 1;
+                        }
+                        else if (Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT.equals(strType)) {
+                            typeCurrent = 2;
+                        }
+                        /*else if( Const.LIGHT_CONTROLLER_TYPE_SMART_DISTRIBUTION.equals(strType))
+                        {
+                            typeCurrent = 3;
+                        }*/
+                    }
+                    else if (ModelType == Version.MODEL_TYPE.IHN_D101 || ModelType == Version.MODEL_TYPE.IHN_D101_I
+                            || ModelType == Version.MODEL_TYPE.IHN_D101K || ModelType == Version.MODEL_TYPE.IHN_D101K_I
+                            || ModelType == Version.MODEL_TYPE.IHN_1010GL || ModelType == Version.MODEL_TYPE.IHN_1010GL_I)
+                    {
+                        if (Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_NORMAL.equals(strType)) {
+                            typeCurrent = 1;
+                        }
+                        else if (Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT.equals(strType)) {
+                            typeCurrent = 2;
+                        }
+                        /*else if( Const.LIGHT_CONTROLLER_TYPE_SMART_DISTRIBUTION.equals(strType))
+                        {
+                            typeCurrent = 3;
+                        }
+                        else if (Const.LIGHT_CONTROLLER_TYPE_LIVING_ROOM.equals(strType)) {
+                            typeCurrent = 4;
+                        }
+                        else if (Const.LIGHT_CONTROLLER_TYPE_ROOMS.equals(strType)) {
+                            typeCurrent = 5;
+                        }*/
+                    }
+                    else {
+                        if (Const.LIGHT_CONTROLLER_TYPE_LIVING_ROOM.equals(strType)) {
+                            typeCurrent = 1;
+                        }
+                        else if (Const.LIGHT_CONTROLLER_TYPE_ROOMS.equals(strType)) {
+                            typeCurrent = 2;
+                        }
+                    }
+
+                }
+            }
+
+            List<String> itemList = new ArrayList<String>();
+            itemList.add(mActivity.getString(R.string.do_not_used));
+
+            if (ModelType == Version.MODEL_TYPE.IHN_1020GL) {
+                itemList.add(mActivity.getString(R.string.contoller_light_type_hdc_intlight_normal));
+                itemList.add(mActivity.getString(R.string.contoller_light_type_hdc_intlight_add_batchlight));
+            }
+            else if (ModelType == Version.MODEL_TYPE.IHN_D101 || ModelType == Version.MODEL_TYPE.IHN_D101_I
+                    || ModelType == Version.MODEL_TYPE.IHN_D101K || ModelType == Version.MODEL_TYPE.IHN_D101K_I
+                    || ModelType == Version.MODEL_TYPE.IHN_1010GL || ModelType == Version.MODEL_TYPE.IHN_1010GL_I)
+            {
+                itemList.add(mActivity.getString(R.string.contoller_light_type_hdc_intlight_normal));
+                itemList.add(mActivity.getString(R.string.contoller_light_type_hdc_intlight_add_batchlight));
+                //itemList.add(mActivity.getString(R.string.contoller_light_living_room));
+                //itemList.add(mActivity.getString(R.string.contoller_light_rooms));
+            }
+            else {
+                itemList.add(mActivity.getString(R.string.contoller_light_living_room));
+                itemList.add(mActivity.getString(R.string.contoller_light_rooms));
+            }
+
+            //LightAPI lightCTR = mWallPadAPI.Get_LightController();
+            //lightCTR.initSetter();
+            //lightCount = lightCTR.totalcnt;
+
+            String controllerName = mActivity.getString(R.string.contoller_light_type);
+            ControllerVO controllerVO = new ControllerVO(Const.CONTROLLER_TYPE_LIGHT_TYPE
+                    , controllerName
+                    , typeCount
+                    , typeCurrent
+                    , itemList
+            );
+            mControllerList.add(controllerVO);
+
+            if (DEBUG)  Log.d(TAG, "typeCurrent : " + typeCurrent);
+
+            if (typeCurrent == 1) {
+                int lightTotalCount = Const.CONTROLLER_LIGHT_MAX_COUNT;
+
+                if (DEBUG)  Log.d(TAG, "lightCurrentCount : " + lightCurrentCount);
+
+                itemList = new ArrayList<String>();
+
+                if (Version.getGatewayUsage()) {
+                    lightTotalCount--;
+                    lightCurrentCount--;
+                }
+                else {
+                    itemList.add("1");
+                }
+
+                itemList.add("2");
+                itemList.add("3");
+                itemList.add("4");
+                itemList.add("5");
+                itemList.add("6");
+
+                String lightControllerName = mActivity.getString(R.string.contoller_light_living_room);
+                ControllerVO lightControllerVO
+                        = new ControllerVO(Const.CONTROLLER_TYPE_LIGHT_LIVING_ROOM
+                        , lightControllerName
+                        , lightTotalCount
+                        , lightCurrentCount
+                        , itemList
+                );
+
+                mControllerList.add(lightControllerVO);
+            }
+            else if (typeCurrent == 2) {
+                //addControllerVO(Const.CONTROLLER_TYPE_LIGHT_MULTI_SWITCH);
+                if (Version.getGatewayUsage()) {
+                    int lightTotalCount = Const.CONTROLLER_LIGHT_MAX_COUNT-1;
+
+                    if (DEBUG)  Log.d(TAG, "lightCurrentCount : " + lightCurrentCount);
+
+                    lightTotalCount--;
+                    lightCurrentCount--;
+
+                    itemList.add("2");
+                    itemList.add("3");
+                    itemList.add("4");
+                    itemList.add("5");
+                    //itemList.add("6");
+                    String lightControllerName = mActivity.getString(R.string.contoller_light_living_room);
+                    ControllerVO lightControllerVO
+                            = new ControllerVO(Const.CONTROLLER_TYPE_LIGHT_LIVING_ROOM
+                            , lightControllerName
+                            , lightTotalCount
+                            , lightCurrentCount
+                            , itemList
+                    );
+
+                    mControllerList.add(lightControllerVO);
+                }
+            }
+        }
+    }
+
+    private void addDlockControllerVO()
+    {
+
+        int doorLockCount = Const.CONTROLLER_ONOFF_COUNT;
+        int doorLockCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+
+        List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DOOR_LOCK);
+        if ((InfoList != null) && (InfoList.size() > 5)) {
+            if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+                String strType = InfoList.get(5);
+
+                if (Const.CONTROLLER_SETTING_WIRELESS.equals(strType)) {
+                    doorLockCurrent = 1;
+                }
+                else if (Const.CONTROLLER_SETTING_WIRE.equals(strType)) {
+                    doorLockCurrent = 2;
+                }
+                else if (Const.CONTROLLER_SETTING_FINGERPRINT.equals(strType)) {
+                    doorLockCurrent = 3;
+                }
+            }
+        }
+
+
+        List<String> itemList = new ArrayList<String>();
+        itemList.add(mActivity.getString(R.string.do_not_used));
+        itemList.add(mActivity.getString(R.string.contoller_door_lock_item_wireless));
+        itemList.add(mActivity.getString(R.string.contoller_door_lock_item_wired));
+        itemList.add(mActivity.getString(R.string.contoller_door_lock_item_fingerprint));
+
+        String controllerName = mActivity.getString(R.string.contoller_door_lock);
+        ControllerVO controllerVO = new ControllerVO(Const.CONTROLLER_TYPE_DOOR_LOCK
+                , controllerName
+                , doorLockCount
+                , doorLockCurrent
+                , itemList
+        );
+
+        if ((controllerVO != null) && (mControllerList != null))
+        {
+            mControllerList.add(controllerVO);
+        }
+
+        if(doorLockCurrent == 1)
+        {
+            int doorLockOpenDelayCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+            if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_WIRELESS_DOORLOCK_OPENDELAY) == false)
+            {
+                doorLockOpenDelayCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+            }
+            else
+            {
+                doorLockOpenDelayCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+            }
+
+
+            String controllerName2 = mActivity.getString(R.string.contoller_door_lock_wireless_open_delay_use);
+            ControllerVO ontrollerVO2 = new ControllerVO(Const.CONTROLLER_TYPE_DOOR_LOCK_WIRELESS_OPEN_DELAY_USE
+                    , controllerName2
+                    , Const.CONTROLLER_ONOFF_COUNT
+                    , doorLockOpenDelayCurrent
+            );
+
+            if ((ontrollerVO2 != null) && (mControllerList != null))
+            {
+                mControllerList.add(ontrollerVO2);
+            }
+        }
+
+
+        WallpadDeviceSet wds = new WallpadDeviceSet(getContext());
+        int[] doortype = wds.Get_DoorLock_Info();
+        wds.closeDB();
+
+        if(doortype[1] == WallpadDeviceSet.DOORLOCK_TYPE_NORMAL)
+        {
+            Log.i(TAG, "DoorType = DOORLOCK_TYPE_NORMAL : " + doortype[1]);
+        }
+        else if(doortype[1] == WallpadDeviceSet.DOORLOCK_TYPE_RF)
+        {
+            Log.i(TAG, "DoorType = DOORLOCK_TYPE_RF : " + doortype[1]);
+        }
+        else if(doortype[1] == WallpadDeviceSet.DOORLOCK_TYPE_FINGERPRINT)
+        {
+            Log.i(TAG, "DoorType = DOORLOCK_TYPE_FINGERPRINT : " + doortype[1]);
+        }
+
+    }
+
+
+    // add Controll to ControllerList
+    private void addControllerVO(int type) {
+        ControllerVO controllerVO = null;
+
+        switch (type) {
+
+            case Const.CONTROLLER_TYPE_GAS:
+            {
+                int gasCount = Const.CONTROLLER_ONOFF_COUNT;
+
+                int gasCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_GAS) == false)
+                    gasCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+
+                String controllerName = mActivity.getString(R.string.contoller_gas);
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , gasCount
+                        , gasCurrent
+                );
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_HEATER:
+            {
+                int heaterCount = Const.CONTROLLER_ONOFF_COUNT;
+                int heaterCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_HEATER) == false)
+                    heaterCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+
+                String controllerName = mActivity.getString(R.string.contoller_heater);
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , heaterCount
+                        , heaterCurrent
+                        , null /*itemList*/
+                );
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_VENTILATION:
+            {
+                int ventilationCount = Const.CONTROLLER_VENTILATION_MAX_COUNT;
+                int ventilationCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX; //mWallpadStatusData.GetHeatingCNT();
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_VENTILATION);
+                if ((InfoList != null) && (InfoList.size() > 5)) {
+                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+                        String strType = InfoList.get(5);
+
+                        if (Const.VENTILATION_TYPE_COMMON.equals(strType)) {
+                            ventilationCurrent = 1;
+                        }
+                        else if (Const.VENTILATION_TYPE_LH.equals(strType)) {
+                            ventilationCurrent = 2;
+                        }
+                        else if (Const.VENTILATION_TYPE_HOOD.equals(strType)) {
+                            ventilationCurrent = 3;
+                        }
+                    }
+                }
+
+
+                List<String> itemList = new ArrayList<String>();
+                itemList.add(mActivity.getString(R.string.do_not_used));
+                itemList.add(mActivity.getString(R.string.contoller_ventilation_item_common));
+                itemList.add(mActivity.getString(R.string.contoller_ventilation_item_lh));
+                itemList.add(mActivity.getString(R.string.contoller_ventilation_item_hood));
+
+                String controllerName = mActivity.getString(R.string.contoller_ventilation);
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , ventilationCount
+                        , ventilationCurrent
+                        , itemList
+                );
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_ELECTRICALLY_CURTAIN:
+            {
+                int curtainCount = Const.CONTROLLER_ELECTRONICALLY_CURTAIN_MAX_COUNT;
+                int curtainCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX; //mWallpadStatusData.GetHeatingCNT();
+
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ELECTRONICALLY_CURTAIN);
+                if ((InfoList != null) && (InfoList.size() > 5)) {
+                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+                        String strType = InfoList.get(5);
+
+                        if (Const.ELECTRONICALLY_CURTAIN_TYPE_MAIN_ROOM.equals(strType)) {
+                            curtainCurrent = 1;
+                        }
+                        else if (Const.ELECTRONICALLY_CURTAIN_TYPE_LIVING_ROOM.equals(strType)) {
+                            curtainCurrent = 2;
+                        }
+                        else if (Const.ELECTRONICALLY_CURTAIN_TYPE_MAIN_AND_LIVING_ROOM.equals(strType)) {
+                            curtainCurrent = 3;
+                        }
+                    }
+                }
+
+                List<String> itemList = new ArrayList<String>();
+                itemList.add(mActivity.getString(R.string.do_not_used));
+                itemList.add(mActivity.getString(R.string.controller_electronically_curtain_item_main_room));
+                itemList.add(mActivity.getString(R.string.controller_electronically_curtain_item_living_room));
+                itemList.add(mActivity.getString(R.string.controller_electronically_curtain_item_main_and_living_room));
+
+                String controllerName = mActivity.getString(R.string.contoller_electronically_curtain);
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , curtainCount
+                        , curtainCurrent
+                        , itemList
+                );
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_SYSTEM_AIRCON:
+            {
+                int systemAirconCount = Const.CONTROLLER_MAX_COUNT;
+                int systemAirconCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX; //mWallpadStatusData.GetHeatingCNT();
+
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SYSTEM_AIRCON);
+                if ((InfoList != null) && (InfoList.size() > 3)) {
+                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+
+                        int circuitNo = StringUtil.getInt(InfoList.get(1), false);
+                        if ((circuitNo > -1) && (circuitNo <= Const.CONTROLLER_MAX_COUNT + 1))
+                            systemAirconCurrent = circuitNo;
+
+                    }
+                }
+
+                String controllerName = mActivity.getString(R.string.contoller_system_aircon);
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , systemAirconCount
+                        , systemAirconCurrent
+                );
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_LIGHT_BATCH_CONTROLL:
+            {
+                int batchControllerCount = Const.CONTROLLER_LIGHT_BATCH_CONTROL_MAX_COUNT;
+                int batchControllCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SMART_SWITCH_LIGHT_AND_BATCH_CONTROL);
+                if ((InfoList != null) && (InfoList.size() > 3)) {
+                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+                        String strType = InfoList.get(5);
+
+                        if (Version.getGatewayUsage()) {
+                            if (Const.LIGHT_BATCH_CONTROL_TYPE_HDC_SMART_SWITCH.equals(strType)) {
+                                batchControllCurrent = 1;
+                            }
+                            else if (Const.LIGHT_BATCH_CONTROL_TYPE_HDC_LCD_SMART_SWITCH.equals(strType)) {
+                                batchControllCurrent = 2;
+                            }
+                        }
+                        else {
+                            if (Const.LIGHT_BATCH_CONTROL_TYPE_COMMON_SMART_SWITCH.equals(strType)) {
+                                batchControllCurrent = 1;
+                            }
+                            else if (Const.LIGHT_BATCH_CONTROL_TYPE_COMMON_BATCH_CONTROLLER.equals(strType)) {
+                                batchControllCurrent = 2;
+                            }
+                        }
+                    }
+                }
+
+                List<String> itemList = new ArrayList<String>();
+                itemList.add(mActivity.getString(R.string.do_not_used));
+
+                if (Version.getGatewayUsage()) {
+                    itemList.add(mActivity.getString(R.string.controller_light_batch_item_common_hdc_smart_switch));
+                    itemList.add(mActivity.getString(R.string.controller_light_batch_item_common_hdc_lcd_smart_switch));
+                }
+                else {
+                    itemList.add(mActivity.getString(R.string.controller_light_batch_item_common_smart_switch));
+                    itemList.add(mActivity.getString(R.string.controller_light_batch_item_common_batch_controller));
+                }
+
+                String controllerName = mActivity.getString(R.string.contoller_smat_switch_and_light_batch_controll);
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , batchControllerCount
+                        , batchControllCurrent
+                        , itemList
+                );
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_GATEWAY:
+            {
+                int heaterCount = Const.CONTROLLER_ONOFF_COUNT;
+                int heaterCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_GATEWAY) == false)
+                    heaterCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+
+                String controllerName = mActivity.getString(R.string.contoller_gateway);
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , heaterCount
+                        , heaterCurrent
+                        , null /*itemList*/
+                );
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_REALTIME_MEASURING_METER:
+            {
+                int meterCount = Const.CONTROLLER_REALTIME_MEASURING_METER_MAX_COUNT;
+                int meterCurrent = 0; //mWallpadStatusData.GetHeatingCNT();
+
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_REALTIME_MEASURING_METER);
+                if ((InfoList != null) && (InfoList.size() > 5)) {
+                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+                        String strType = InfoList.get(5);
+
+                        if (Const.REALTIME_MEASURING_METER_TYPE_3.equals(strType)) {
+                            meterCurrent = 1;
+                        }
+                        else if (Const.REALTIME_MEASURING_METER_TYPE_5.equals(strType)) {
+                            meterCurrent = 2;
+                        }
+                        else if (Const.REALTIME_MEASURING_METER_TYPE_6.equals(strType)) {
+                            meterCurrent = 3;
+                        }
+                    }
+                }
+
+// TO DO
+/*
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_REALTIME_MEASURING_METER);
+                if ((InfoList != null) && (InfoList.size() > 3)) {
+                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+                        meterCurrent = 1;
+                    }
+                }
+*/
+
+
+                List<String> itemList = new ArrayList<String>();
+                itemList.add(mActivity.getString(R.string.do_not_used));
+                itemList.add(mActivity.getString(R.string.contoller_realtime_masuring_meter_item_3));
+                itemList.add(mActivity.getString(R.string.contoller_realtime_masuring_meter_item_5));
+                itemList.add(mActivity.getString(R.string.contoller_realtime_masuring_meter_item_6));
+
+                String controllerName = mActivity.getString(R.string.contoller_realtime_masuring_meter);
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , meterCount
+                        , meterCurrent
+                        , itemList
+                );
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_DIMMING_KCC:
+            {
+                int Count = Const.CONTROLLER_ONOFF_COUNT;
+                int Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DIMMING_KCC) == false)
+                    Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+
+                String controllerName = mActivity.getString(R.string.contoller_dimming_kcc);
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , Count
+                        , Current
+                        , null
+                );
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_HEAT_ONEDEVICE:
+            {
+                int heatKindCount = Const.CONTROLLER_ONOFF_COUNT;
+                int heatKindCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_HEAT_ONEDEVICE);
+                if ((InfoList != null) && (InfoList.size() > 5)) {
+                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+                        String strType = InfoList.get(5);
+                        if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(strType)) {
+                            heatKindCurrent = 0;
+                        }
+                        else if (Const.CONTROLLER_HEATONEDEVICE_KIND_VENTI.equals(strType)) {
+                            heatKindCurrent = 1;
+                        }
+                        else if (Const.CONTROLLER_HEATONEDEVICE_KIND_LIGHT.equals(strType)) {
+                            heatKindCurrent = 2;
+                        }
+                        else if (Const.CONTROLLER_HEATONEDEVICE_KIND_VENTILIGHT.equals(strType)) {
+                            heatKindCurrent = 3;
+                        }
+                    }
+                    else if(Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3)))
+                    {
+                        String strType = InfoList.get(5);
+                        if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(strType)) {
+                            heatKindCurrent = 0;
+                        }
+                    }
+                }
+                Log.d(TAG, "[addControllerVO] heatKindCurrent [" + heatKindCurrent + "]");
+
+                List<String> itemList = new ArrayList<String>();
+                itemList.add(mActivity.getString(R.string.do_not_used));
+                itemList.add(mActivity.getString(R.string.contoller_heatonedevice_kind_item_venti));
+                itemList.add(mActivity.getString(R.string.contoller_heatonedevice_kind_item_light));
+                itemList.add(mActivity.getString(R.string.contoller_heatonedevice_kind_item_ventilight));
+
+                String controllerName = mActivity.getString(R.string.contoller_heat_onedevice);
+                controllerVO = new ControllerVO(Const.CONTROLLER_TYPE_HEAT_ONEDEVICE
+                        , controllerName
+                        , heatKindCount
+                        , heatKindCurrent
+                        , itemList
+                );
+
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_SENSOR_AP:
+            {
+                int Count = Const.CONTROLLER_ONOFF_COUNT;
+                int Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SENSOR_AP) == false)
+                    Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+
+                String controllerName = mActivity.getString(R.string.contoller_sensor_ap);
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , Count
+                        , Current
+                        , null
+                );
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_INTERLAYER_NOISE:
+            {
+                int Count = Const.CONTROLLER_ONOFF_COUNT;
+                int Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_INTERLAYER_NOISE) == false)
+                    Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+
+                String controllerName = mActivity.getString(R.string.contoller_interlayer_noise);
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , Count
+                        , Current
+                        , null
+                );
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_INNERROOM_DETECT_SENSOR:
+            {
+                int Count = Const.CONTROLLER_ONOFF_COUNT;
+                int Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_INNERROOM_DETECT_SENSOR) == false)
+                    Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+
+                String controllerName = mActivity.getString(R.string.contoller_innerroom_detect_sensor);
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , Count
+                        , Current
+                        , null
+                );
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_FACIAL_RECOG_MODULE:
+            {
+                int Count = Const.CONTROLLER_ONOFF_COUNT;
+                int Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_FACIAL_RECOG_MODULE) == false)
+                    Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+
+                String controllerName = mActivity.getString(R.string.contoller_facial_recog_module);
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , Count
+                        , Current
+                        , null
+                );
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_GATEWAY_MODEL_KIND:
+            {
+                int gatewayKindCount = Const.CONTROLLER_ONOFF_COUNT;
+                int gatewayKindCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_GATEWAY_MODEL_KIND);
+                if ((InfoList != null) && (InfoList.size() > 5)) {
+                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+                        String strType = InfoList.get(5);
+
+                        if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(strType)) {
+                            gatewayKindCurrent = 0;
+                        }
+                        else if (Const.CONTROLLER_GATEWAY_KIND_200.equals(strType)) {
+                            gatewayKindCurrent = 1;
+                        }
+                        else if (Const.CONTROLLER_GATEWAY_KIND_300.equals(strType)) {
+                            gatewayKindCurrent = 2;
+                        }
+                    }
+                    else if(Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3)))
+                    {
+                        String strType = InfoList.get(5);
+
+                        if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(strType)) {
+                            gatewayKindCurrent = 0;
+                        }
+                    }
+                }
+
+
+                List<String> itemList = new ArrayList<String>();
+                itemList.add(mActivity.getString(R.string.do_not_used));
+                itemList.add(mActivity.getString(R.string.contoller_gateway_model_kind_item_old));
+                itemList.add(mActivity.getString(R.string.contoller_gateway_model_kind_item_new));
+
+                String controllerName = mActivity.getString(R.string.contoller_gateway_model_kind);
+                controllerVO = new ControllerVO(Const.CONTROLLER_TYPE_GATEWAY_MODEL_KIND
+                        , controllerName
+                        , gatewayKindCount
+                        , gatewayKindCurrent
+                        , itemList
+                );
+
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_INTEGRATED_SWITCH:
+            {
+                int Count = Const.CONTROLLER_ONOFF_COUNT;
+                int Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_INTEGRATED_SWITCH) == true)
+                    Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+
+                String controllerName = mActivity.getString(R.string.contoller_integraded_switch);
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , Count
+                        , Current
+                        , null
+                );
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_ELECTRIC_RANGE1:
+            {
+                int Count = Const.CONTROLLER_ONOFF_COUNT;
+                int Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ELECTRIC_RANGE) == true)
+                    Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+
+                String controllerName = mActivity.getString(R.string.contoller_electric_range);
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , Count
+                        , Current
+                        , null
+                );
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_COOKTOP_CONCENT:
+            {
+                int Count = Const.CONTROLLER_ONOFF_COUNT;
+                int Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_COOKTOP_CONCENT) == true)
+                    Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+
+                String controllerName = mActivity.getString(R.string.contoller_cooktop_concent);
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , Count
+                        , Current
+                        , null
+                );
+
+                /*WallpadDeviceSet wds = new WallpadDeviceSet(getContext());
+                boolean cooktopUse = wds.Get_CookTopConcent_Use();
+                wds.closeDB();
+                Log.i(TAG, "cooktopUse = " + cooktopUse);*/
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_SMARTSWITCH_ENERGY:
+            {
+                int energyKindCount = Const.CONTROLLER_ONOFF_COUNT;
+                int energyKindCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SMARTSWITCH_ENERGY);
+                if ((InfoList != null) && (InfoList.size() > 5)) {
+                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+                        String strType = InfoList.get(5);
+                        if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(strType)) {
+                            energyKindCurrent = 0;
+                        }
+                        else if (Const.CONTROLLER_SMARTSWITCH_KIND_REALTIME.equals(strType)) {
+                            energyKindCurrent = 1;
+                        }
+                        else if (Const.CONTROLLER_SMARTSWITCH_KIND_REMOTE.equals(strType)) {
+                            energyKindCurrent = 2;
+                        }
+                    }
+                    else if(Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3)))
+                    {
+                        String strType = InfoList.get(5);
+                        if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(strType)) {
+                            energyKindCurrent = 0;
+                        }
+                    }
+                }
+                Log.d(TAG, "[addControllerVO] energyKindCurrent [" + energyKindCurrent + "]");
+
+                List<String> itemList = new ArrayList<String>();
+                itemList.add(mActivity.getString(R.string.do_not_used));
+                itemList.add(mActivity.getString(R.string.contoller_energy_smartswitch_energy_kind_item_realtime));
+                itemList.add(mActivity.getString(R.string.contoller_energy_smartswitch_energy_kind_item_remote));
+
+                String controllerName = mActivity.getString(R.string.contoller_energy_smartswitch_energy);
+                controllerVO = new ControllerVO(Const.CONTROLLER_TYPE_SMARTSWITCH_ENERGY
+                        , controllerName
+                        , energyKindCount
+                        , energyKindCurrent
+                        , itemList
+                );
+
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_PURITY:
+            {
+                int Count = Const.CONTROLLER_ONOFF_COUNT;
+                int Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_PURITY) == true)
+                    Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+
+                String controllerName = mActivity.getString(R.string.contoller_purity);
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , Count
+                        , Current
+                        , null
+                );
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_LOUVER:
+            {
+                int Count = Const.CONTROLLER_ONOFF_COUNT;
+                int Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LOUVER) == true)
+                    Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+
+                String controllerName = mActivity.getString(R.string.contoller_louver);
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , Count
+                        , Current
+                        , null
+                );
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_BIOMETICS:
+            {
+                int Count = Const.CONTROLLER_ONOFF_COUNT;
+                int Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_BIOMETICS) == true)
+                    Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+
+                String controllerName = mActivity.getString(R.string.contoller_biometics);
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , Count
+                        , Current
+                        , null
+                );
+            }
+            break;
+
+        }
+
+        if (controllerVO != null)
+        {
+            mControllerList.add(controllerVO);
+        }
+
+    }
+
+    // update item to DB
+    private void updateSetUsedToSubDevice(int type, final int position, final String itemName) {
+        if (DEBUG)  Log.d(TAG, "updateSetUsedToSubDevice() type : " + type
+                + ", position : " + position
+                + ", itemName : " + itemName
+        );
+
+        String value = "";
+
+        if (itemName == null)
+            return;
+
+        switch (type) {
+            case Const.CONTROLLER_TYPE_LIGHT_TYPE:
+            {
+                final String controllerName = mMainDatabaseManager.getSubDevID(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LIGHT);
+                if (controllerName != null) {
+                    value = controllerName;
+                    if (position == 0) {
+                        value += "("
+                                + Const.CONTROLLER_SETTING_DO_NOT_USED
+                                + ")"
+                        ;
+                    }
+                    else {
+                        String typeName = null;
+
+                        if (ModelType == Version.MODEL_TYPE.IHN_1020GL
+                                || ModelType == Version.MODEL_TYPE.IHN_1010GL || ModelType == Version.MODEL_TYPE.IHN_1010GL_I)
+                        {
+                            if (itemName.equals("현산향일체형조명기본형")) typeName = Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_NORMAL;
+                            else if (itemName.equals("현산향일체형조명일괄소등병합형")) typeName = Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT;
+                            else if (itemName.equals("스마트분전반조명")) typeName = Const.LIGHT_CONTROLLER_TYPE_SMART_DISTRIBUTION;
+                        }
+                        else if (ModelType == Version.MODEL_TYPE.IHN_D101 || ModelType == Version.MODEL_TYPE.IHN_D101_I
+                                || ModelType == Version.MODEL_TYPE.IHN_D101K || ModelType == Version.MODEL_TYPE.IHN_D101K_I)
+                        {
+                            if (itemName.equals("현산향일체형조명기본형")) typeName = Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_NORMAL;
+                            else if (itemName.equals("현산향일체형조명일괄소등병합형")) typeName = Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT;
+                            else if (itemName.equals("스마트분전반조명")) typeName = Const.LIGHT_CONTROLLER_TYPE_SMART_DISTRIBUTION;
+                            else if (itemName.equals("조명(거실)")) typeName = Const.LIGHT_CONTROLLER_TYPE_LIVING_ROOM;
+                            else if (itemName.equals("조명(각실)")) typeName = Const.LIGHT_CONTROLLER_TYPE_ROOMS;
+                        }
+                        else {
+                            if (itemName.equals("조명(거실)")) typeName = Const.LIGHT_CONTROLLER_TYPE_LIVING_ROOM;
+                            else if (itemName.equals("조명(각실)")) typeName = Const.LIGHT_CONTROLLER_TYPE_ROOMS;
+                        }
+
+                        value += "(" + Const.CONTROLLER_SETTING_DO_USED + ")" + Const.CONTROLLER_SETTING_TYPE + "(" + typeName + ")";
+                    }
+
+                    List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LIGHT);
+                    if ((InfoList != null) && (InfoList.size() > 1)) {
+                        String deviceNo = InfoList.get(0);
+                        String circuitNo = InfoList.get(1);
+
+                        Log.d(TAG, "circuitNo before: " + circuitNo);
+                        if (itemName.equals("현산향일체형조명일괄소등병합형"))
+                        {
+                            if(Integer.parseInt(circuitNo) > 5)
+                            {
+                                circuitNo = "5";
+                                Log.d(TAG, "circuitNo after:  " + circuitNo);
+                            }
+                        }
+
+
+                        value = deviceNo
+                                + "("
+
+                                + circuitNo
+                                + ":"
+
+                                + value
+
+                                + ")"
+                        ;
+
+                        mMainDatabaseManager.setSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LIGHT, 0, value);
+                    }
+                }
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_LIGHT_LIVING_ROOM:
+            {
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LIGHT);
+                if ((InfoList != null) && (InfoList.size() > 1)) {
+                    String deviceNo = InfoList.get(0);
+
+                    value = deviceNo
+                            + "("
+
+                            + (itemName)
+                            + ":"
+                    ;
+
+                    for (int i=2; i + 1 <InfoList.size(); i=i+2) {
+                        value += InfoList.get(i)
+                                + "("
+                                + InfoList.get(i+1)
+                                + ")"
+                        ;
+                    }
+
+                    value += ")"
+                    ;
+
+                    mMainDatabaseManager.setSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LIGHT, 0, value);
+                }
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_LIGHT_MULTI_SWITCH:
+                break;
+
+            case Const.CONTROLLER_TYPE_GAS:
+            {
+                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_GAS, position);
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_ELECTRIC_RANGE1:
+            {
+                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ELECTRIC_RANGE, position);
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_FACIAL_RECOG_MODULE:
+            {
+                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_FACIAL_RECOG_MODULE, position);
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_COOKTOP_CONCENT:
+            {
+                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_COOKTOP_CONCENT, position);
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_HEATER:
+            {
+                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_HEATER, position);
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_GATEWAY:
+            {
+                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_GATEWAY, position);
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_DIMMING_KCC:
+            {
+                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DIMMING_KCC, position);
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_HEAT_ONEDEVICE:
+            {
+                final String controllerName = mMainDatabaseManager.getSubDevID(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_HEAT_ONEDEVICE);
+                if (controllerName != null) {
+                    value = controllerName;
+                    if (position == 0) {
+                        value += "("
+                                + Const.CONTROLLER_SETTING_DO_NOT_USED
+                                + ")"
+                                + Const.CONTROLLER_SETTING_TYPE
+                                + "("
+                                + Const.CONTROLLER_SETTING_DO_NOT_USED
+                                + ")"
+                        ;
+                    }
+                    else {
+                        String typeName = null;
+                        if (itemName.equals(Const.CONTROLLER_SETTING_DO_NOT_USED))
+                            typeName = Const.CONTROLLER_SETTING_DO_NOT_USED;
+                        else if (itemName.equals(Const.CONTROLLER_HEATONEDEVICE_KIND_VENTI))
+                            typeName = Const.CONTROLLER_HEATONEDEVICE_KIND_VENTI;
+                        else if (itemName.equals(Const.CONTROLLER_HEATONEDEVICE_KIND_LIGHT))
+                            typeName = Const.CONTROLLER_HEATONEDEVICE_KIND_LIGHT;
+                        else if (itemName.equals(Const.CONTROLLER_HEATONEDEVICE_KIND_VENTILIGHT))
+                            typeName = Const.CONTROLLER_HEATONEDEVICE_KIND_VENTILIGHT;
+
+                        value += "("
+                                + Const.CONTROLLER_SETTING_DO_USED
+                                + ")"
+
+                                + Const.CONTROLLER_SETTING_TYPE
+                                + "("
+                                + typeName
+                                + ")"
+                        ;
+                    }
+
+
+                    List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_HEAT_ONEDEVICE);
+                    if ((InfoList != null) && (InfoList.size() > 1)) {
+                        String deviceNo = InfoList.get(0);
+                        String circuitNo = InfoList.get(1);
+
+                        value = deviceNo
+                                + "("
+
+                                + circuitNo
+                                + ":"
+
+                                + value
+
+                                + ")"
+                        ;
+
+                        mMainDatabaseManager.setSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_HEAT_ONEDEVICE, 0, value);
+                    }
+                }
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_SENSOR_AP:
+            {
+                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SENSOR_AP, position);
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_INTERLAYER_NOISE:
+            {
+                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_INTERLAYER_NOISE, position);
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_INNERROOM_DETECT_SENSOR:
+            {
+                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_INNERROOM_DETECT_SENSOR, position);
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_DOOR_LOCK:
+            {
+                final String controllerName = mMainDatabaseManager.getSubDevID(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DOOR_LOCK);
+                if (controllerName != null) {
+                    value = controllerName;
+                    if (position == 0) {
+                        value += "("
+                                + Const.CONTROLLER_SETTING_DO_NOT_USED
+                                + ")"
+                        ;
+                    }
+                    else {
+                        String typeName = null;
+
+                        if (itemName.equals(Const.CONTROLLER_SETTING_WIRELESS))
+                            typeName = Const.CONTROLLER_SETTING_WIRELESS;
+                        else if (itemName.equals(Const.CONTROLLER_SETTING_WIRE))
+                            typeName = Const.CONTROLLER_SETTING_WIRE;
+                        else if (itemName.equals(Const.CONTROLLER_SETTING_FINGERPRINT))
+                            typeName = Const.CONTROLLER_SETTING_FINGERPRINT;
+
+                        value += "("
+                                + Const.CONTROLLER_SETTING_DO_USED
+                                + ")"
+
+                                + Const.CONTROLLER_SETTING_TYPE
+                                + "("
+                                + typeName
+                                + ")"
+                        ;
+                    }
+
+
+                    List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DOOR_LOCK);
+                    if ((InfoList != null) && (InfoList.size() > 1)) {
+                        String deviceNo = InfoList.get(0);
+                        String circuitNo = InfoList.get(1);
+
+                        value = deviceNo
+                                + "("
+
+                                + circuitNo
+                                + ":"
+
+                                + value
+
+                                + ")"
+                        ;
+
+                        mMainDatabaseManager.setSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DOOR_LOCK, 0, value);
+                    }
+                }
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_DOOR_LOCK_WIRELESS_OPEN_DELAY_USE:
+            {
+                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_WIRELESS_DOORLOCK_OPENDELAY, position);
+            }
+            break;
+/*
+            case Const.CONTROLLER_TYPE_DOOR_LOCK_WIRED:
+                // TO DO
+                //mWallpadStatusData.SetHeatingCNT(position);
+                break;
+
+            case Const.CONTROLLER_TYPE_DOOR_LOCK_WIRELESS:
+                // TO DO
+                //mWallpadStatusData.SetHeatingCNT(position);
+                break;
+*/
+
+            case Const.CONTROLLER_TYPE_VENTILATION:
+            {
+                final String controllerName = mMainDatabaseManager.getSubDevID(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_VENTILATION);
+                if (controllerName != null) {
+                    value = controllerName;
+                    if (position == 0) {
+                        value += "("
+                                + Const.CONTROLLER_SETTING_DO_NOT_USED
+                                + ")"
+                        ;
+                    }
+                    else {
+                        String typeName = null;
+
+                        if (itemName.equals(Const.VENTILATION_TYPE_COMMON))
+                            typeName = Const.VENTILATION_TYPE_COMMON;
+                        else if (itemName.equals(Const.VENTILATION_TYPE_LH))
+                            typeName = Const.VENTILATION_TYPE_LH;
+                        else if (itemName.equals(Const.VENTILATION_TYPE_HOOD))
+                            typeName = Const.VENTILATION_TYPE_HOOD;
+
+                        value += "("
+                                + Const.CONTROLLER_SETTING_DO_USED
+                                + ")"
+
+                                + Const.CONTROLLER_SETTING_TYPE
+                                + "("
+                                + typeName
+                                + ")"
+                        ;
+                    }
+
+
+                    List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_VENTILATION);
+                    if ((InfoList != null) && (InfoList.size() > 1)) {
+                        String deviceNo = InfoList.get(0);
+                        String circuitNo = InfoList.get(1);
+
+                        value = deviceNo
+                                + "("
+
+                                + circuitNo
+                                + ":"
+
+                                + value
+
+                                + ")"
+                        ;
+
+                        mMainDatabaseManager.setSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_VENTILATION, 0, value);
+                    }
+                }
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_ELECTRICALLY_CURTAIN:
+            {
+                final String controllerName = mMainDatabaseManager.getSubDevID(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ELECTRONICALLY_CURTAIN);
+                if (controllerName != null) {
+                    value = controllerName;
+                    if (position == 0) {
+                        value += "("
+                                + Const.CONTROLLER_SETTING_DO_NOT_USED
+                                + ")"
+                        ;
+                    }
+                    else {
+                        String typeName = null;
+
+                        if (itemName.equals(Const.ELECTRONICALLY_CURTAIN_TYPE_MAIN_ROOM))
+                            typeName = Const.ELECTRONICALLY_CURTAIN_TYPE_MAIN_ROOM;
+                        else if (itemName.equals(Const.ELECTRONICALLY_CURTAIN_TYPE_LIVING_ROOM))
+                            typeName = Const.ELECTRONICALLY_CURTAIN_TYPE_LIVING_ROOM;
+                        else if (itemName.equals(Const.ELECTRONICALLY_CURTAIN_TYPE_MAIN_AND_LIVING_ROOM))
+                            typeName = Const.ELECTRONICALLY_CURTAIN_TYPE_MAIN_AND_LIVING_ROOM;
+
+                        value += "("
+                                + Const.CONTROLLER_SETTING_DO_USED
+                                + ")"
+
+                                + Const.CONTROLLER_SETTING_TYPE
+                                + "("
+                                + typeName
+                                + ")"
+                        ;
+                    }
+
+
+                    List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ELECTRONICALLY_CURTAIN);
+                    if ((InfoList != null) && (InfoList.size() > 1)) {
+                        String deviceNo = InfoList.get(0);
+                        String circuitNo = InfoList.get(1);
+
+                        value = deviceNo
+                                + "("
+
+                                + circuitNo
+                                + ":"
+
+                                + value
+
+                                + ")"
+                        ;
+
+                        mMainDatabaseManager.setSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ELECTRONICALLY_CURTAIN, 0, value);
+                    }
+                }
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_SYSTEM_AIRCON:
+            {
+                final String controllerName = mMainDatabaseManager.getSubDevID(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SYSTEM_AIRCON);
+                if (controllerName != null) {
+                    value = controllerName;
+                    if (position == 0) {
+                        value += "("
+                                + Const.CONTROLLER_SETTING_DO_NOT_USED
+                                + ")"
+                        ;
+                    }
+                    else {
+                        value += "("
+                                + Const.CONTROLLER_SETTING_DO_USED
+                                + ")"
+                        ;
+                    }
+
+
+                    List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SYSTEM_AIRCON);
+                    if ((InfoList != null) && (InfoList.size() > 1)) {
+                        String deviceNo = InfoList.get(0);
+                        String circuitNo = InfoList.get(1);
+                        if (position > 0)
+                            circuitNo = "" + position;
+
+                        value = deviceNo
+                                + "("
+
+                                + circuitNo
+                                + ":"
+
+                                + value
+
+                                + ")"
+                        ;
+
+                        mMainDatabaseManager.setSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SYSTEM_AIRCON, 0, value);
+                    }
+                }
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_LIGHT_BATCH_CONTROLL:
+            {
+                int itemType = MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SMART_SWITCH_LIGHT_AND_BATCH_CONTROL;
+                String controllerName = mMainDatabaseManager.getSubDevID(itemType);
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(itemType);
+
+                String[] itemNameTempSplit = new String(itemName).split(" ");
+
+                Log.d(TAG, "itemNameTempSplit[0] : " + itemNameTempSplit[0]);
+
+                if (controllerName != null) {
+                    value = controllerName;
+
+                    int i = 4;
+                    if (position == 0) {
+                        value += "("
+                                + Const.CONTROLLER_SETTING_DO_NOT_USED
+                                + ")"
+                        ;
+                    }
+                    else {
+                        String typeName = null;
+
+                        if (itemNameTempSplit[0].equals(Const.LIGHT_BATCH_CONTROL_TYPE_COMMON_SMART_SWITCH))
+                            typeName = Const.LIGHT_BATCH_CONTROL_TYPE_COMMON_SMART_SWITCH;
+                        else if (itemNameTempSplit[0].equals(Const.LIGHT_BATCH_CONTROL_TYPE_COMMON_BATCH_CONTROLLER))
+                            typeName = Const.LIGHT_BATCH_CONTROL_TYPE_COMMON_BATCH_CONTROLLER;
+                        else if (itemNameTempSplit[0].equals(Const.LIGHT_BATCH_CONTROL_TYPE_HDC_SMART_SWITCH))
+                            typeName = Const.LIGHT_BATCH_CONTROL_TYPE_HDC_SMART_SWITCH;
+                        else if (itemNameTempSplit[0].equals(Const.LIGHT_BATCH_CONTROL_TYPE_HDC_LCD_SMART_SWITCH))
+                            typeName = Const.LIGHT_BATCH_CONTROL_TYPE_HDC_LCD_SMART_SWITCH;
+
+                        value += "("
+                                + Const.CONTROLLER_SETTING_DO_USED
+                                + ")"
+
+                                + Const.CONTROLLER_SETTING_TYPE
+                                + "("
+                                + typeName
+                                + ")"
+                        ;
+
+                        i += 2;
+                    }
+
+
+                    if ((InfoList != null) && (InfoList.size() > 3)) {
+                        String deviceNo = InfoList.get(0);
+                        String circuitNo = InfoList.get(1);
+
+                        value = deviceNo
+                                + "("
+
+                                + circuitNo
+                                + ":"
+
+                                + value
+                        ;
+
+                        for (; i + 1 <InfoList.size(); i=i+2) {
+                            value += InfoList.get(i)
+                                    + "("
+                                    + InfoList.get(i+1)
+                                    + ")"
+                            ;
+                        }
+
+                        value += ")"
+                        ;
+
+                        mMainDatabaseManager.setSettingDataSubDev(itemType, 0, value);
+                    }
+                }
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_REALTIME_MEASURING_METER:
+            {
+                final String controllerName = mMainDatabaseManager.getSubDevID(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_REALTIME_MEASURING_METER);
+                if (controllerName != null) {
+                    value = controllerName;
+                    if (position == 0) {
+                        value += "("
+                                + Const.CONTROLLER_SETTING_DO_NOT_USED
+                                + ")"
+                        ;
+                    }
+                    else {
+                        String typeName = null;
+
+                        if (itemName.equals(Const.REALTIME_MEASURING_METER_TYPE_3))
+                            typeName = Const.REALTIME_MEASURING_METER_TYPE_3;
+                        else if (itemName.equals(Const.REALTIME_MEASURING_METER_TYPE_5))
+                            typeName = Const.REALTIME_MEASURING_METER_TYPE_5;
+                        else if (itemName.equals(Const.REALTIME_MEASURING_METER_TYPE_6))
+                            typeName = Const.REALTIME_MEASURING_METER_TYPE_6;
+
+                        value += "("
+                                + Const.CONTROLLER_SETTING_DO_USED
+                                + ")"
+
+                                + Const.CONTROLLER_SETTING_TYPE
+                                + "("
+                                + typeName
+                                + ")"
+                        ;
+                    }
+
+
+                    List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_REALTIME_MEASURING_METER);
+                    if ((InfoList != null) && (InfoList.size() > 1)) {
+                        String deviceNo = InfoList.get(0);
+                        String circuitNo = InfoList.get(1);
+
+                        value = deviceNo
+                                + "("
+
+                                + circuitNo
+                                + ":"
+
+                                + value
+
+                                + ")"
+                        ;
+
+                        mMainDatabaseManager.setSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_REALTIME_MEASURING_METER, 0, value);
+                    }
+                }
+            }
+            break;
+
+			case Const.CONTROLLER_TYPE_GATEWAY_MODEL_KIND:
+			{
+				final String controllerName = mMainDatabaseManager.getSubDevID(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_GATEWAY_MODEL_KIND);
+				if (controllerName != null) {
+					value = controllerName;
+					if (position == 0) {
+						value += "("
+								+ Const.CONTROLLER_SETTING_DO_NOT_USED
+								+ ")"
+								+ Const.CONTROLLER_SETTING_TYPE
+								+ "("
+								+ Const.CONTROLLER_SETTING_DO_NOT_USED
+								+ ")"
+						;
+					}
+					else {
+						String typeName = null;
+
+						if (itemName.equals(Const.CONTROLLER_SETTING_DO_NOT_USED))
+							typeName = Const.CONTROLLER_SETTING_DO_NOT_USED;
+						else if (itemName.equals(Const.CONTROLLER_GATEWAY_KIND_200))
+							typeName = Const.CONTROLLER_GATEWAY_KIND_200;
+						else if (itemName.equals(Const.CONTROLLER_GATEWAY_KIND_300))
+							typeName = Const.CONTROLLER_GATEWAY_KIND_300;
+
+						value += "("
+								+ Const.CONTROLLER_SETTING_DO_USED
+								+ ")"
+
+								+ Const.CONTROLLER_SETTING_TYPE
+								+ "("
+								+ typeName
+								+ ")"
+						;
+					}
+
+
+					List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_GATEWAY_MODEL_KIND);
+					if ((InfoList != null) && (InfoList.size() > 1)) {
+						String deviceNo = InfoList.get(0);
+						String circuitNo = InfoList.get(1);
+
+						value = deviceNo
+								+ "("
+
+								+ circuitNo
+								+ ":"
+
+								+ value
+
+								+ ")"
+						;
+
+						mMainDatabaseManager.setSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_GATEWAY_MODEL_KIND, 0, value);
+					}
+				}
+			}
+			break;
+
+            case Const.CONTROLLER_TYPE_INTEGRATED_SWITCH:
+            {
+                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_INTEGRATED_SWITCH, position);
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_SMARTSWITCH_ENERGY:
+            {
+                final String controllerName = mMainDatabaseManager.getSubDevID(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SMARTSWITCH_ENERGY);
+                if (controllerName != null) {
+                    value = controllerName;
+                    if (position == 0) {
+                        value += "("
+                                + Const.CONTROLLER_SETTING_DO_NOT_USED
+                                + ")"
+                                + Const.CONTROLLER_SETTING_TYPE
+                                + "("
+                                + Const.CONTROLLER_SETTING_DO_NOT_USED
+                                + ")"
+                        ;
+                    }
+                    else {
+                        String typeName = null;
+                        if (itemName.equals(Const.CONTROLLER_SETTING_DO_NOT_USED))
+                            typeName = Const.CONTROLLER_SETTING_DO_NOT_USED;
+                        else if (itemName.equals(Const.CONTROLLER_SMARTSWITCH_KIND_REALTIME))
+                            typeName = Const.CONTROLLER_SMARTSWITCH_KIND_REALTIME;
+                        else if (itemName.equals(Const.CONTROLLER_SMARTSWITCH_KIND_REMOTE))
+                            typeName = Const.CONTROLLER_SMARTSWITCH_KIND_REMOTE;
+
+                        value += "("
+                                + Const.CONTROLLER_SETTING_DO_USED
+                                + ")"
+
+                                + Const.CONTROLLER_SETTING_TYPE
+                                + "("
+                                + typeName
+                                + ")"
+                        ;
+                    }
+
+
+                    List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SMARTSWITCH_ENERGY);
+                    if ((InfoList != null) && (InfoList.size() > 1)) {
+                        String deviceNo = InfoList.get(0);
+                        String circuitNo = InfoList.get(1);
+
+                        value = deviceNo
+                                + "("
+
+                                + circuitNo
+                                + ":"
+
+                                + value
+
+                                + ")"
+                        ;
+
+                        mMainDatabaseManager.setSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SMARTSWITCH_ENERGY, 0, value);
+                    }
+                }
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_PURITY:
+            {
+                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_PURITY, position);
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_LOUVER:
+            {
+                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LOUVER, position);
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_BIOMETICS:
+            {
+                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_BIOMETICS, position);
+            }
+            break;
+
+            default:
+                break;
+        }
+
+    }
+
+
+
+    @Override
+    public void onItemChanged(final int controllerIdx, final int position, final String itemName) {
+        String controllerName = mControllerList.get(controllerIdx).getName();
+        String message = controllerName + " 를 " + (itemName) + "로 변경하였습니다.";
+
+
+        if (DEBUG)  Log.d(TAG, "onItemChanged() controllerIdx : " + controllerIdx
+                + ", position : " + position
+                + ", itemName : " + itemName
+        );
+
+        MainActivity.setFinishTimerReset();
+
+        MainApplication.getApplication().setReboot();
+
+        int type = mControllerList.get(controllerIdx).getType();
+        if (type >= Const.CONTROLLER_TYPE_BASE) {
+            ControllerVO controllerVO = mControllerList.get(controllerIdx);
+            if (controllerVO != null) {
+                controllerVO.setInitCount(position);
+            }
+        }
+
+        if (DEBUG)  Log.d(TAG, "doTestController() type : " + type);
+
+        switch (type) {
+            case Const.CONTROLLER_TYPE_LIGHT_TYPE:
+                updateSetUsedToSubDevice(type, position, itemName);
+
+                refreshAll();
+                break;
+
+            case Const.CONTROLLER_TYPE_LIGHT_LIVING_ROOM:
+                updateSetUsedToSubDevice(type, position, itemName);
+                break;
+
+            case Const.CONTROLLER_TYPE_LIGHT_MULTI_SWITCH:
+                break;
+
+            case Const.CONTROLLER_TYPE_GAS:
+                updateSetUsedToSubDevice(type, position, itemName);
+                break;
+
+            case Const.CONTROLLER_TYPE_ELECTRIC_RANGE1:
+                updateSetUsedToSubDevice(type, position, itemName);
+                refreshAll();
+                break;
+
+            case Const.CONTROLLER_TYPE_COOKTOP_CONCENT:
+                updateSetUsedToSubDevice(type, position, itemName);
+                refreshAll();
+                break;
+
+            case Const.CONTROLLER_TYPE_HEATER:
+                updateSetUsedToSubDevice(type, position, itemName);
+                break;
+
+
+            case Const.CONTROLLER_TYPE_DOOR_LOCK:
+                updateSetUsedToSubDevice(type, position, itemName);
+                refreshAll();
+                break;
+
+            case Const.CONTROLLER_TYPE_DOOR_LOCK_WIRELESS_OPEN_DELAY_USE:
+                updateSetUsedToSubDevice(type, position, itemName);
+                break;
+/*
+            case Const.CONTROLLER_TYPE_DOOR_LOCK_WIRED:
+                // TO DO
+                //mWallpadStatusData.SetHeatingCNT(position);
+                break;
+
+            case Const.CONTROLLER_TYPE_DOOR_LOCK_WIRELESS:
+                // TO DO
+                //mWallpadStatusData.SetHeatingCNT(position);
+                break;
+*/
+
+            case Const.CONTROLLER_TYPE_VENTILATION:
+                updateSetUsedToSubDevice(type, position, itemName);
+                break;
+
+            case Const.CONTROLLER_TYPE_ELECTRICALLY_CURTAIN:
+                updateSetUsedToSubDevice(type, position, itemName);
+                break;
+
+            case Const.CONTROLLER_TYPE_SYSTEM_AIRCON:
+                updateSetUsedToSubDevice(type, position, itemName);
+                break;
+
+            case Const.CONTROLLER_TYPE_LIGHT_BATCH_CONTROLL:
+                updateSetUsedToSubDevice(type, position, itemName);
+                break;
+
+            case Const.CONTROLLER_TYPE_REALTIME_MEASURING_METER:
+                updateSetUsedToSubDevice(type, position, itemName);
+                break;
+
+            case Const.CONTROLLER_TYPE_GATEWAY:
+                updateSetUsedToSubDevice(type, position, itemName);
+                break;
+
+            case Const.CONTROLLER_TYPE_DIMMING_KCC:
+                updateSetUsedToSubDevice(type, position, itemName);
+                break;
+
+            case Const.CONTROLLER_TYPE_HEAT_ONEDEVICE:
+                updateSetUsedToSubDevice(type, position, itemName);
+                break;
+
+            case Const.CONTROLLER_TYPE_SENSOR_AP:
+                updateSetUsedToSubDevice(type, position, itemName);
+                break;
+
+            case Const.CONTROLLER_TYPE_INTERLAYER_NOISE:
+                updateSetUsedToSubDevice(type, position, itemName);
+                break;
+
+            case Const.CONTROLLER_TYPE_INNERROOM_DETECT_SENSOR:
+                updateSetUsedToSubDevice(type, position, itemName);
+                break;
+
+			case Const.CONTROLLER_TYPE_GATEWAY_MODEL_KIND:
+				updateSetUsedToSubDevice(type, position, itemName);
+				break;
+
+            case Const.CONTROLLER_TYPE_INTEGRATED_SWITCH:
+				updateSetUsedToSubDevice(type, position, itemName);
+				break;
+
+            case Const.CONTROLLER_TYPE_FACIAL_RECOG_MODULE:
+				updateSetUsedToSubDevice(type, position, itemName);
+				break;
+
+            case Const.CONTROLLER_TYPE_SMARTSWITCH_ENERGY:
+                updateSetUsedToSubDevice(type, position, itemName);
+                break;
+
+            case Const.CONTROLLER_TYPE_PURITY:
+                updateSetUsedToSubDevice(type, position, itemName);
+                break;
+
+            case Const.CONTROLLER_TYPE_LOUVER:
+                updateSetUsedToSubDevice(type, position, itemName);
+                break;
+
+            case Const.CONTROLLER_TYPE_BIOMETICS:
+                updateSetUsedToSubDevice(type, position, itemName);
+                break;
+
+            default:
+                break;
+        }
+
+        // if (DEBUG)  Toast.makeText(mActivity, message, Toast.LENGTH_SHORT).show();
+    }
+
+    /**
+     * 제로에너지하우스 사용 여부 (사용함인 경우에는 조명설정부분 표시하지 않음)
+     * **/
+    public boolean GetZeroEnergyHouse()
+    {
+        int Current = 0;
+
+        List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ZERO_ENERGY_HOUSE);
+        if ((InfoList != null) && (InfoList.size() > 3)) {
+            if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+                Current = 1;
+            }
+        }
+        if(Current == 1)
+        {
+            return true;
+        }
+        else
+        {
+            return false;
+        }
+    }
+
+}

+ 1962 - 2149
ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/SettingDebuggingFragment.java

@@ -1,2149 +1,1962 @@
-package com.artncore.managersetting.ui.fragments;
-
-import java.util.ArrayList;
-import java.util.List;
-import kr.co.icontrols.wallpadsupport.Version;
-import kr.co.icontrols.wallpadsupport.WpadScale;
-import android.annotation.SuppressLint;
-import android.app.Activity;
-import android.content.ComponentName;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.media.AudioManager;
-import android.media.SoundPool;
-import android.os.Bundle;
-//import android.support.v4.app.Fragment;
-import androidx.fragment.app.Fragment;
-import androidx.core.view.MotionEventCompat;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.View.OnTouchListener;
-import android.widget.AdapterView;
-import android.widget.AdapterView.OnItemSelectedListener;
-import android.widget.Button;
-import android.widget.ListView;
-import android.widget.Spinner;
-import com.artncore.WallPadDataMgr.WallpadDeviceSet;
-import com.artncore.WallPadDataMgr.WallpadStatusData;
-import com.artncore.managersetting.dao.MainDatabaseManager;
-import com.artncore.managersetting.domain.Const;
-import com.artncore.managersetting.domain.ControllerVO;
-import com.artncore.managersetting.ui.ControllerListAdapter;
-import com.artncore.managersetting.ui.ControllerListAdapter.ItemChangedListener;
-import com.artncore.managersetting.ui.SwitchButton;
-import com.artncore.managersetting.ui.activities.MainActivity;
-import com.artncore.managersetting.util.DialogUtil;
-import com.artncore.wallpadapi.AllLightAPI;
-import com.artncore.wallpadapi.AllLightHDCAPI;
-import com.artncore.wallpadapi.CutOffConcentAPI;
-import com.artncore.wallpadapi.DLockAPI;
-import com.artncore.wallpadapi.ElectricRange_API;
-import com.artncore.wallpadapi.EnergyMeterAPI;
-import com.artncore.wallpadapi.EnergyModuleAPI;
-import com.artncore.wallpadapi.GasAPI;
-import com.artncore.wallpadapi.HeatingV1API;
-import com.artncore.wallpadapi.HeatingV2API;
-import com.artncore.wallpadapi.IGW200dAPI;
-import com.artncore.wallpadapi.IntLightAPI;
-import com.artncore.wallpadapi.LightAPI;
-import com.artncore.wallpadapi.MultiSwitchAPI;
-import com.artncore.wallpadapi.RFDoorCamAPI;
-import com.artncore.wallpadapi.RealTimeMeterAPI;
-import com.artncore.wallpadapi.SdbAPI;
-import com.artncore.wallpadapi.Sdb_LivingRoomLightAPI;
-import com.artncore.wallpadapi.SmartKeyRfDoorAPI;
-import com.artncore.wallpadapi.SmartSwitchEvtAPI;
-import com.artncore.wallpadapi.SmartSwitchPolAPI;
-import com.artncore.wallpadapi.VentiAPI;
-import com.artncore.wallpadapi.WallPadAPI;
-import com.artncore.wallpadapi.WallPadDevAPI;
-import com.artncore.managersetting.R;
-import com.util.LogUtil;
-
-/**
- * A list fragment representing a list of Items. This fragment also supports
- * tablet devices by allowing list items to be given an 'activated' state upon
- * selection. This helps indicate which item is currently being viewed in a
- * {link ItemDetailFragment}.
- * <p>
- * Activities containing this fragment MUST implement the {link Callbacks}
- * interface.
- */
-public class SettingDebuggingFragment extends Fragment implements SwitchButton.SwitchButtonChangedListener, ItemChangedListener {
-    private static final String TAG = "SettingDebuggingFragment";
-
-
-    private final boolean DEBUG = true;
-
-    private final boolean DEBUG_LOG_ON = true;
-    private void DebugLogOutput(String s) { if(DEBUG_LOG_ON) Log.d(TAG, s); }
-
-    //[Model]
-    private int ModelType = Version.getModelType();
-    //private int ModelType = Version.MODEL_TYPE.IHN_1030_D;
-
-    public final int DEBUGGING_TYPE_BASE =       Const.CONTROLLER_TYPE_BASE;
-    public final int DEBUGGING_TYPE_LOG_PATH =                              DEBUGGING_TYPE_BASE + 0;
-    public final int DEBUGGING_TYPE_LOG_LEVEL =                             DEBUGGING_TYPE_BASE + 1;
-    public final int DEBUGGING_TYPE_LOG_SET_PERIOD =                        DEBUGGING_TYPE_BASE + 2;
-    public final int DEBUGGING_TYPE_LOG_START_DATE =                        DEBUGGING_TYPE_BASE + 3;
-    public final int DEBUGGING_TYPE_LOG_START_TIME =                        DEBUGGING_TYPE_BASE + 4;
-    public final int DEBUGGING_TYPE_LOG_END_DATE =                          DEBUGGING_TYPE_BASE + 5;
-    public final int DEBUGGING_TYPE_LOG_END_TIME =                          DEBUGGING_TYPE_BASE + 6;
-    public final int DEBUGGING_TYPE_LOG_START_END =                         DEBUGGING_TYPE_BASE + 7;
-    public final int DEBUGGING_TYPE_LOG_FILE_VIEWER =                       DEBUGGING_TYPE_BASE + 8;
-    public final int DEBUGGING_TYPE_LOG_BACKUP_TO_USB =                     DEBUGGING_TYPE_BASE + 9;
-
-    public final int DEBUGGING_TYPE_LOG_OUTPUT_CALL_SUB_DEVICE =            DEBUGGING_TYPE_BASE + 100;
-    public final int DEBUGGING_TYPE_LOG_OUTPUT_WIRELESS_REMOCON =           DEBUGGING_TYPE_BASE + 110;
-    public final int DEBUGGING_TYPE_LOG_OUTPUT_LIGHT_BATCH_CONTROLL =       DEBUGGING_TYPE_BASE + 120;
-    public final int DEBUGGING_TYPE_LOG_OUTPUT_LIGHT_CONTROLLER =           DEBUGGING_TYPE_BASE + 130;
-    public final int DEBUGGING_TYPE_LOG_OUTPUT_LIGHT_MULTI_SWITCH =         DEBUGGING_TYPE_BASE + 140;
-    public final int DEBUGGING_TYPE_LOG_OUTPUT_DIGITAL_DOOR_LOCK =          DEBUGGING_TYPE_BASE + 150;
-    public final int DEBUGGING_TYPE_LOG_OUTPUT_VENTILATION =                DEBUGGING_TYPE_BASE + 160;
-    public final int DEBUGGING_TYPE_LOG_OUTPUT_REALTIME_MEASURING_METER =   DEBUGGING_TYPE_BASE + 170;
-    public final int DEBUGGING_TYPE_LOG_OUTPUT_ELECTRICALLY_CURTAIN =       DEBUGGING_TYPE_BASE + 180;
-    public final int DEBUGGING_TYPE_LOG_OUTPUT_SMART_SWITCH =               DEBUGGING_TYPE_BASE + 190;
-    public final int DEBUGGING_TYPE_LOG_OUTPUT_RF_DOOR_CAMERA =             DEBUGGING_TYPE_BASE + 200;
-    public final int DEBUGGING_TYPE_LOG_OUTPUT_GAS_CONTROLLER =             DEBUGGING_TYPE_BASE + 210;
-    public final int DEBUGGING_TYPE_LOG_OUTPUT_HEATER_CONTROLLER =          DEBUGGING_TYPE_BASE + 220;
-
-
-    public final int DEBUGGING_TYPE_LOG_OUTPUT_SYSTEM_AIRCON =              DEBUGGING_TYPE_BASE + 230;
-    public final int DEBUGGING_TYPE_LOG_OUTPUT_ELECTRIC_RANGE =             DEBUGGING_TYPE_BASE + 240;
-
-    public final int DEBUGGING_TYPE_LOG_OUTPUT_HD_MTM =                     DEBUGGING_TYPE_BASE + 300;
-    public final int DEBUGGING_TYPE_LOG_OUTPUT_HD_UKS =                     DEBUGGING_TYPE_BASE + 301;
-    public final int DEBUGGING_TYPE_LOG_OUTPUT_HD_USS =                     DEBUGGING_TYPE_BASE + 302;
-
-    public final int DEBUGGING_TYPE_RUN_GOOGLE_LAUNCHER =                   DEBUGGING_TYPE_BASE + 400;
-    public final int DEBUGGING_TYPE_SMART_RF_CAM_SOUND_ONOFF =              DEBUGGING_TYPE_BASE + 500;
-
-    public static final int LOG_PATH_TYPE_NAND_INDEX = 0;
-    public static final int LOG_PATH_TYPE_SERVER_INDEX = 1;
-
-    private Activity mActivity;
-    private WallPadAPI mWallPadAPI;
-
-    private MainDatabaseManager mMainDatabaseManager;
-    private ListView mControllerListView;
-
-    private View mRootView;
-
-    private List<ControllerVO> mControllerList;
-    WallPadDevAPI deviceAPI = null;
-
-    //제어기기 타입 타입
-    private int AllLightSwitchType = 0; //일괄소등
-    private int LightSwitchType = 0; //조명
-    private int DoorCamType = 0; //현관카메라
-
-    //터치음 재생
-    private SoundPool mSoundPool = null;
-    private final int SOUNDPOOL_MAX_STREAMS = 8;
-    private int TOUCH_LATCHED;
-
-    // constructor
-    public SettingDebuggingFragment() {
-    }
-
-    @Override
-    public void onAttach(Activity activity) {
-        super.onAttach(activity);
-
-        mActivity = activity;
-        mMainDatabaseManager = MainActivity.getMainDatabaseManager();
-
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        if (DEBUG)  Log.d(TAG, "onCreate() ");
-
-        super.onCreate(savedInstanceState);
-
-        mWallPadAPI = MainActivity.getWallPadAPI();
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-        mRootView= (View) inflater.inflate(R.layout.logoutput_setting_container,
-                container, false);
-
-
-        return mRootView;
-    }
-
-    @Override
-    public void onViewCreated(View view, Bundle savedInstanceState) {
-        super.onViewCreated(view, savedInstanceState);
-
-        if (savedInstanceState != null) {}
-
-        mControllerListView = (ListView) view.findViewById(R.id.controller_list);
-
-        mControllerListView.setOnTouchListener(new OnTouchListener() {
-
-            @SuppressLint("ClickableViewAccessibility")
-            @Override
-            public boolean onTouch(View v, MotionEvent event) {
-                switch (MotionEventCompat.getActionMasked(event)) {
-
-                    case MotionEvent.ACTION_UP:
-                        MainActivity.setFinishTimerReset();
-                        break;
-
-                    default:
-                        break;
-                }
-                return false;
-            }
-        });
-
-        Log.v(TAG,"onCreateInputView ---- SoundPool");
-        mSoundPool = new SoundPool(SOUNDPOOL_MAX_STREAMS, AudioManager.STREAM_MUSIC, 0);
-        String filepath = null;
-
-        filepath = "/system/media/audio/wallpad/effect/touch-latched.wav";
-        TOUCH_LATCHED = mSoundPool.load(filepath, 1);
-        Log.v(TAG,"TOUCH_LATCHED :"+TOUCH_LATCHED);
-
-        initStartGoogleLauncher();
-        initView1();
-    }
-
-    private void initView1()
-    {
-        getControllerList();
-
-        if(ModelType == Version.MODEL_TYPE.IHN_1030_D)
-        {
-            ControllerListAdapter adapter = new ControllerListAdapter(mActivity
-                    , R.layout.setting_controller_item_1024x600_a20
-                    , mControllerList
-                    , this);
-            mControllerListView.setAdapter(adapter);
-        }
-        else
-        {
-            ControllerListAdapter adapter = new ControllerListAdapter(mActivity
-                    , R.layout.setting_controller_item
-                    , mControllerList
-                    , this);
-            mControllerListView.setAdapter(adapter);
-        }
-
-    }
-
-    private void getControllerList() {
-        mControllerList = new ArrayList<ControllerVO>();
-
-        if (mWallPadAPI != null) {
-
-            if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ZERO_ENERGY_HOUSE)) {
-                addControllerVO(Const.CONTROLLER_TYPE_HEATER);
-                addControllerVO(Const.CONTROLLER_TYPE_LIGHT_BATCH_CONTROLL);
-                addControllerVO(Const.CONTROLLER_TYPE_REALTIME_MEASURING_METER);
-                addControllerVO(Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_1);
-                addControllerVO(Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_1);
-            }
-            else {
-                addControllerVO(Const.CONTROLLER_TYPE_LIGHT_TYPE);
-                addControllerVO(Const.CONTROLLER_TYPE_GAS);
-                addControllerVO(Const.CONTROLLER_TYPE_ELECTRIC_RANGE1);
-                addControllerVO(Const.CONTROLLER_TYPE_HEATER);
-                addControllerVO(Const.CONTROLLER_TYPE_VENTILATION);
-                addControllerVO(Const.CONTROLLER_TYPE_LIGHT_BATCH_CONTROLL);
-
-                addControllerVO(Const.CONTROLLER_TYPE_REALTIME_MEASURING_METER);
-                addControllerVO(Const.CONTROLLER_TYPE_RF_DOOR_CAMERA);
-
-                if (Version.getGatewayUsage()) {
-                    addControllerVO(Const.CONTROLLER_TYPE_DOOR_LOCK);
-                    addControllerVO(Const.CONTROLLER_TYPE_HDC_GATEWAY);
-                    addControllerVO(Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_1);
-                    addControllerVO(Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_1);
-                    addControllerVO(Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_1);
-                }
-            }
-
-            addControllerVO(Const.CONTROLLER_TYPE_CALLAPP_TIMEOUT_ONOFF);
-
-            if (ModelType == Version.MODEL_TYPE.IHN_D101 || ModelType == Version.MODEL_TYPE.IHN_D101_I
-                    || ModelType == Version.MODEL_TYPE.IHN_D101K || ModelType == Version.MODEL_TYPE.IHN_D101K_I) {
-                addControllerVO(Const.CONTROLLER_TYPE_SMART_DIST);
-                addControllerVO(Const.CONTROLLER_TYPE_SMART_DIST_LIVEM);
-            }
-
-            if (DEBUG)  Log.d(TAG, "mControllerList.size() : " + mControllerList.size());
-        }
-
-    }
-
-    private void addControllerVO(int type) {
-        ControllerVO controllerVO = null;
-
-        switch (type) {
-
-            case Const.CONTROLLER_TYPE_GAS:
-            {
-                int gasCount = Const.CONTROLLER_ONOFF_COUNT;
-
-                int gasCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_GAS) == true)
-                {
-                    try
-                    {
-                        GasAPI gasApi = mWallPadAPI.Get_GasController();          // 가스제어기 API
-                        deviceAPI = gasApi;
-                    }
-                    catch (RuntimeException re) {
-                        LogUtil.errorLogInfo("", TAG, re);
-                    }
-                    catch(Exception e)
-                    {
-                        Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                        //e.printStackTrace();
-                        LogUtil.errorLogInfo("", TAG, e);
-                        return;
-                    }
-
-                    if(deviceAPI == null){return;}
-
-                    boolean bLogStatus = deviceAPI.GetLogOnOff();
-                    Log.d(TAG, "LogStatus : " + bLogStatus);
-
-                    if(bLogStatus == true)
-                    {
-                        gasCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-                    }
-                    else
-                    {
-                        gasCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                    }
-
-
-                    String controllerName = mActivity.getString(R.string.contoller_gas);
-                    controllerVO = new ControllerVO(type
-                            , controllerName
-                            , gasCount
-                            , gasCurrent
-                    );
-
-                }
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_HEATER:
-            {
-                int heatingCount = Const.CONTROLLER_ONOFF_COUNT;
-                int heatingCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-
-                String tempHeatingKind = "Find Type Error";
-                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_HEATER) == true)
-                {
-                    try
-                    {
-                        if(mWallPadAPI.GetHeatingKind() == 1)
-                        {
-                            HeatingV1API heatingV1API = mWallPadAPI.Get_HeatingV1Controller();
-                            deviceAPI = heatingV1API;
-                            tempHeatingKind = "V1";
-                        }
-                        else if(mWallPadAPI.GetHeatingKind() == 2)
-                        {
-                            HeatingV2API heatingV2API = mWallPadAPI.Get_HeatingV2Controller();
-                            deviceAPI = heatingV2API;
-                            tempHeatingKind = "V2";
-                        }
-                    }
-                    catch (RuntimeException re) {
-                        LogUtil.errorLogInfo("", TAG, re);
-                    }
-                    catch(Exception e)
-                    {
-                        Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                        //e.printStackTrace();
-                        LogUtil.errorLogInfo("",TAG, e);
-                        return;
-                    }
-                    if(deviceAPI == null){return;}
-
-                    boolean bLogStatus = deviceAPI.GetLogOnOff();
-                    Log.d(TAG, "LogStatus : " + bLogStatus);
-
-                    if(bLogStatus == true)
-                    {
-                        heatingCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-                    }
-                    else
-                    {
-                        heatingCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                    }
-
-
-                    String controllerName = mActivity.getString(R.string.contoller_heater) + " - "+tempHeatingKind;
-                    controllerVO = new ControllerVO(type
-                            , controllerName
-                            , heatingCount
-                            , heatingCurrent
-                    );
-
-                }
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_VENTILATION:
-            {
-                int ventilationCount = Const.CONTROLLER_ONOFF_COUNT;
-
-                int ventilationCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_VENTILATION);
-                if ((InfoList != null) && (InfoList.size() > 5))
-                {
-                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3)))
-                    {
-                        String strType = InfoList.get(5);
-
-                        String controllerName = mActivity.getString(R.string.contoller_ventilation) + " - "+strType;
-
-                        try
-                        {
-                            VentiAPI ventiAPI = mWallPadAPI.Get_VentiController();
-                            deviceAPI = ventiAPI;
-                        }
-                        catch (RuntimeException re) {
-                            LogUtil.errorLogInfo("", TAG, re);
-                        }
-                        catch(Exception e)
-                        {
-                            Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                            //e.printStackTrace();
-                            LogUtil.errorLogInfo("", TAG, e);
-                            return;
-                        }
-                        if(deviceAPI == null){return;}
-
-                        boolean bLogStatus = deviceAPI.GetLogOnOff();
-
-                        Log.d(TAG, "LogStatus : " + bLogStatus);
-
-                        if(bLogStatus == true)
-                        {
-                            ventilationCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-                        }
-                        else
-                        {
-                            ventilationCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                        }
-                        controllerVO = new ControllerVO(type
-                                , controllerName
-                                , ventilationCount
-                                , ventilationCurrent
-                        );
-                    }
-                }
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_DOOR_LOCK:
-            {
-                int doorlockCount = Const.CONTROLLER_ONOFF_COUNT;
-
-                int doorlockCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DOOR_LOCK);
-                if ((InfoList != null) && (InfoList.size() > 5))
-                {
-                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3)))
-                    {
-                        String strType = InfoList.get(5);
-
-                        String controllerName = mActivity.getString(R.string.contoller_door_lock) + " - "+strType;
-
-                        try
-                        {
-                            DLockAPI dLockAPI = mWallPadAPI.Get_DLockController();
-                            deviceAPI = dLockAPI;
-                        }
-                        catch (RuntimeException re) {
-                            LogUtil.errorLogInfo("", TAG, re);
-                        }
-                        catch(Exception e)
-                        {
-                            Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                            //e.printStackTrace();
-                            LogUtil.errorLogInfo("", TAG, e);
-                            return;
-                        }
-                        if(deviceAPI == null){return;}
-
-                        boolean bLogStatus = deviceAPI.GetLogOnOff();
-
-                        Log.d(TAG, "LogStatus : " + bLogStatus);
-
-                        if(bLogStatus == true)
-                        {
-                            doorlockCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-                        }
-                        else
-                        {
-                            doorlockCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                        }
-                        controllerVO = new ControllerVO(type
-                                , controllerName
-                                , doorlockCount
-                                , doorlockCurrent
-                        );
-                    }
-                }
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_REALTIME_MEASURING_METER:
-            {
-                int realmeterCount = Const.CONTROLLER_ONOFF_COUNT;
-
-                int realmeterCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_REALTIME_MEASURING_METER) == true)
-                {
-                    try
-                    {
-                        RealTimeMeterAPI realTimeMeterAPI = mWallPadAPI.Get_RealTimeMeterController();
-                        deviceAPI = realTimeMeterAPI;
-                    }
-                    catch (RuntimeException re) {
-                        LogUtil.errorLogInfo("", TAG, re);
-                    }
-                    catch(Exception e)
-                    {
-                        Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                        //e.printStackTrace();
-                        LogUtil.errorLogInfo("",TAG, e);
-                        return;
-                    }
-                    if(deviceAPI == null){return;}
-
-                    boolean bLogStatus = deviceAPI.GetLogOnOff();
-                    Log.d(TAG, "LogStatus : " + bLogStatus);
-
-                    if(bLogStatus == true)
-                    {
-                        realmeterCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-                    }
-                    else
-                    {
-                        realmeterCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                    }
-
-                    String controllerName = mActivity.getString(R.string.contoller_realtime_masuring_meter);
-                    controllerVO = new ControllerVO(type
-                            , controllerName
-                            , realmeterCount
-                            , realmeterCurrent
-                    );
-                }
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_LIGHT_BATCH_CONTROLL:
-            {
-                int Count = Const.CONTROLLER_ONOFF_COUNT;
-                int Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SMART_SWITCH_LIGHT_AND_BATCH_CONTROL);
-                if ((InfoList != null) && (InfoList.size() > 5))
-                {
-                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3)))
-                    {
-                        String strType = InfoList.get(5);
-                        if(strType.equals(Const.LIGHT_BATCH_CONTROL_TYPE_COMMON_SMART_SWITCH))
-                        {
-                            try
-                            {
-                                SmartSwitchPolAPI smartSwitchPolAPI = mWallPadAPI.Get_SmartSwitchPolController();
-                                deviceAPI = smartSwitchPolAPI;
-                                AllLightSwitchType = 1;
-                            }
-                            catch (RuntimeException re) {
-                                LogUtil.errorLogInfo("", TAG, re);
-                            }
-                            catch(Exception e)
-                            {
-                                Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                                //e.printStackTrace();
-                                LogUtil.errorLogInfo("", TAG, e);
-                                return;
-                            }
-                        }
-                        else if (strType.equals(Const.LIGHT_BATCH_CONTROL_TYPE_COMMON_BATCH_CONTROLLER))
-                        {
-                            try
-                            {
-                                AllLightAPI allLightAPI = mWallPadAPI.Get_AllLightController();
-                                deviceAPI = allLightAPI;
-                                AllLightSwitchType = 2;
-                            }
-                            catch (RuntimeException re) {
-                                LogUtil.errorLogInfo("", TAG, re);
-                            }
-                            catch(Exception e)
-                            {
-                                Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                                //e.printStackTrace();
-                                LogUtil.errorLogInfo("", TAG, e);
-                                return;
-                            }
-                        }
-                        else if (strType.equals(Const.LIGHT_BATCH_CONTROL_TYPE_HDC_SMART_SWITCH))
-                        {
-                            try
-                            {
-                                SmartSwitchEvtAPI smartSwitchEvtAPI = mWallPadAPI.Get_SmartSwitchEvtController();
-                                deviceAPI = smartSwitchEvtAPI;
-                                AllLightSwitchType = 4;
-                            }
-                            catch (RuntimeException re) {
-                                LogUtil.errorLogInfo("", TAG, re);
-                            }
-                            catch(Exception e)
-                            {
-                                Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                                //e.printStackTrace();
-                                LogUtil.errorLogInfo("", TAG, e);
-                                return;
-                            }
-                        }
-                        else if (strType.equals(Const.LIGHT_BATCH_CONTROL_TYPE_HDC_LCD_SMART_SWITCH))
-                        {
-                            try
-                            {
-                                SmartSwitchPolAPI smartSwitchPolAPI = mWallPadAPI.Get_SmartSwitchPolController();
-                                deviceAPI = smartSwitchPolAPI;
-                                AllLightSwitchType = 1;
-                            }
-                            catch (RuntimeException re) {
-                                LogUtil.errorLogInfo("", TAG, re);
-                            }
-                            catch(Exception e)
-                            {
-                                Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                                //e.printStackTrace();
-                                LogUtil.errorLogInfo("", TAG, e);
-                                return;
-                            }
-                        }
-                        else
-                        {
-                            return;
-                        }
-
-                        String controllerName = "";
-
-                        if((WpadScale.getWidthPixels() == 800) && (WpadScale.getHeightPixels() == 480))
-                        {
-                            controllerName = InfoList.get(2);
-                        }
-                        else
-                        {
-                            controllerName = InfoList.get(2) + " - " + InfoList.get(5);
-                        }
-
-
-                        if(deviceAPI == null){return;}
-
-                        boolean bLogStatus = deviceAPI.GetLogOnOff();
-
-                        Log.d(TAG, "LogStatus : " + bLogStatus);
-
-                        if(bLogStatus == true)
-                        {
-                            Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-                        }
-                        else
-                        {
-                            Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                        }
-                        controllerVO = new ControllerVO(type
-                                , controllerName
-                                , Count
-                                , Current
-                        );
-                    }
-                }
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_LIGHT_TYPE:
-            {
-                int Count = Const.CONTROLLER_ONOFF_COUNT;
-                int Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LIGHT);
-                if ((InfoList != null) && (InfoList.size() > 5))
-                {
-                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3)))
-                    {
-                        String strType = InfoList.get(5);
-                        if(strType.equals(Const.LIGHT_CONTROLLER_TYPE_LIVING_ROOM))
-                        {
-                            try
-                            {
-                                LightAPI lightAPI = mWallPadAPI.Get_LightController();
-                                deviceAPI = lightAPI;
-                                LightSwitchType = 1;
-                            }
-                            catch (RuntimeException re) {
-                                LogUtil.errorLogInfo("", TAG, re);
-                            }
-                            catch(Exception e)
-                            {
-                                Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                                //e.printStackTrace();
-                                LogUtil.errorLogInfo("",TAG, e);
-                                return;
-                            }
-                        }
-                        else if (strType.equals(Const.LIGHT_CONTROLLER_TYPE_ROOMS))
-                        {
-                            try
-                            {
-                                MultiSwitchAPI multiSwitchAPI = mWallPadAPI.Get_MultiSwitchController();
-                                deviceAPI = multiSwitchAPI;
-                                LightSwitchType = 2;
-                            }
-                            catch (RuntimeException re) {
-                                LogUtil.errorLogInfo("", TAG, re);
-                            }
-                            catch(Exception e)
-                            {
-                                Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                                //e.printStackTrace();
-                                LogUtil.errorLogInfo("", TAG, e);
-                                return;
-                            }
-                        }
-                        else if (strType.equals(Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_NORMAL))
-                        {
-                            try
-                            {
-                                IntLightAPI intLightAPI = mWallPadAPI.Get_IntLightController();
-                                deviceAPI = intLightAPI;
-                                LightSwitchType = 3;
-                                addControllerVO(Const.CONTROLLER_TYPE_HDC_ALLLIGHT);
-                            }
-                            catch (RuntimeException re) {
-                                LogUtil.errorLogInfo("", TAG, re);
-                            }
-                            catch(Exception e)
-                            {
-                                Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                                //e.printStackTrace();
-                                LogUtil.errorLogInfo("", TAG, e);
-                                return;
-                            }
-                        }
-                        else if (strType.equals(Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT))
-                        {
-                            try
-                            {
-                                IntLightAPI intLightAPI = mWallPadAPI.Get_IntLightController();
-                                deviceAPI = intLightAPI;
-                                LightSwitchType = 3;
-                            }
-                            catch (RuntimeException re) {
-                                LogUtil.errorLogInfo("", TAG, re);
-                            }
-                            catch(Exception e)
-                            {
-                                Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                                //e.printStackTrace();
-                                LogUtil.errorLogInfo("", TAG, e);
-                                return;
-                            }
-                        }
-                        else
-                        {
-                            return;
-                        }
-
-                        String controllerName = InfoList.get(2) + " - " + InfoList.get(5);
-
-                        if(deviceAPI == null) return;
-
-                        boolean bLogStatus = deviceAPI.GetLogOnOff();
-
-                        Log.d(TAG, "LogStatus : " + bLogStatus);
-
-                        if(bLogStatus == true)
-                        {
-                            Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-                        }
-                        else
-                        {
-                            Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                        }
-                        controllerVO = new ControllerVO(type
-                                , controllerName
-                                , Count
-                                , Current
-                        );
-                    }
-                }
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_RF_DOOR_CAMERA:
-            {
-                int Count = Const.CONTROLLER_ONOFF_COUNT;
-                int Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DOOR_CAMERA);
-                if ((InfoList != null) && (InfoList.size() > 5))
-                {
-                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3)))
-                    {
-                        String strType = InfoList.get(5);
-                        if(strType.equals(Const.DOOR_CAMERA_TYPE_RF_DOOR_CAMERA))
-                        {
-                            try
-                            {
-                                RFDoorCamAPI rfDoorCamAPI = mWallPadAPI.Get_RFDoorCamController();
-                                deviceAPI = rfDoorCamAPI;
-                                DoorCamType = 1;
-                            }
-                            catch (RuntimeException re) {
-                                LogUtil.errorLogInfo("", TAG, re);
-                            }
-                            catch(Exception e)
-                            {
-                                Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                                //e.printStackTrace();
-                                LogUtil.errorLogInfo("", TAG, e);
-                                return;
-                            }
-                        }
-                        else if (strType.equals(Const.DOOR_CAMERA_TYPE_SMART_KEY) || strType.equals(Const.DOOR_CAMERA_TYPE_SMART_KEY_EXTERNAL) || strType.equals(Const.DOOR_CAMERA_TYPE_IOT_SMART) ||
-                                 strType.equals(Const.DOOR_CAMERA_TYPE_HYOSUNG_SMART) || strType.equals(Const.DOOR_CAMERA_TYPE_DAEWOO_SMART)
-                                )
-                        {
-                            try
-                            {
-                                SmartKeyRfDoorAPI smartKeyRfDoorAPI = mWallPadAPI.Get_SmartKeyRfDoorController();
-                                deviceAPI = smartKeyRfDoorAPI;
-                                DoorCamType = 2;
-                            }
-                            catch (RuntimeException re) {
-                                LogUtil.errorLogInfo("", TAG, re);
-                            }
-                            catch(Exception e)
-                            {
-                                Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                                //e.printStackTrace();
-                                LogUtil.errorLogInfo("",TAG, e);
-                                return;
-                            }
-                        }
-                        else
-                        {
-                            return;
-                        }
-
-                        String controllerName = InfoList.get(2) + " - " + InfoList.get(5);
-
-                        if(deviceAPI == null){return;}
-
-                        boolean bLogStatus = deviceAPI.GetLogOnOff();
-
-                        Log.d(TAG, "LogStatus : " + bLogStatus);
-
-                        if(bLogStatus == true)
-                        {
-                            Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-                        }
-                        else
-                        {
-                            Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                        }
-                        controllerVO = new ControllerVO(type
-                                , controllerName
-                                , Count
-                                , Current
-                        );
-
-                        if(DoorCamType == 2)
-                        {
-                            if (controllerVO != null)
-                                mControllerList.add(controllerVO);
-
-                            WallpadStatusData wallpadStatusData = new WallpadStatusData(mActivity);
-                            boolean SmartKeyDetectionAlarm = wallpadStatusData.GetSmartKeyDetectionAlarm();
-                            if (DEBUG)  Log.i(TAG, "GetSmartKeyDetectionAlarm - ret = " + SmartKeyDetectionAlarm);
-                            wallpadStatusData.closeDB();
-                            if (SmartKeyDetectionAlarm == true)
-                            {
-                                Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-                            }
-                            else
-                            {
-                                Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                            }
-
-                            controllerVO = new ControllerVO(Const.CONTROLLER_TYPE_SMART_RFCAM_SOUND_ONOFF
-                                    , mActivity.getString(R.string.setting_debugging_set_smartrf_cam_sound_onoff)
-                                    , Count
-                                    , Current
-                            );
-                        }
-                    }
-                }
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_HDC_GATEWAY:
-            {
-                int Count = Const.CONTROLLER_ONOFF_COUNT;
-                int Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-
-                String controllerName = "IGW200D 게이트웨이";
-
-                try
-                {
-                    IGW200dAPI iGW200dAPI = mWallPadAPI.Get_IGW200dController();
-                    deviceAPI = iGW200dAPI;
-                }
-                catch (RuntimeException re) {
-                    LogUtil.errorLogInfo("", TAG, re);
-                }
-                catch(Exception e)
-                {
-                    Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                    //e.printStackTrace();
-                    LogUtil.errorLogInfo("",TAG, e);
-                    return;
-                }
-
-                if(deviceAPI == null){return;}
-
-                boolean bLogStatus = deviceAPI.GetLogOnOff();
-
-                Log.d(TAG, "LogStatus : " + bLogStatus);
-
-                if(bLogStatus == true)
-                {
-                    Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-                }
-                else
-                {
-                    Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                }
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , Count
-                        , Current
-                );
-
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_HDC_ALLLIGHT:
-            {
-                int Count = Const.CONTROLLER_ONOFF_COUNT;
-                int Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-
-                String controllerName = "현산 일괄소등릴레이";
-                try
-                {
-                    AllLightHDCAPI allLightHDCAPI = mWallPadAPI.Get_AllLightHDCController();
-                    deviceAPI = allLightHDCAPI;
-                }
-                catch (RuntimeException re) {
-                    LogUtil.errorLogInfo("", TAG, re);
-                }
-                catch(Exception e)
-                {
-                    Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                    //e.printStackTrace();
-                    LogUtil.errorLogInfo("", TAG, e);
-                    return;
-                }
-
-                if(deviceAPI == null){return;}
-
-                boolean bLogStatus = deviceAPI.GetLogOnOff();
-
-                Log.d(TAG, "LogStatus : " + bLogStatus);
-
-                if(bLogStatus == true)
-                {
-                    Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-                }
-                else
-                {
-                    Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                }
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , Count
-                        , Current
-                );
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_1:
-            {
-                int Count = Const.CONTROLLER_ONOFF_COUNT;
-                int Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-
-                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ENERGY_DEVICES) == true)
-                {
-                    try
-                    {
-                        EnergyMeterAPI energyMeterAPI = mWallPadAPI.Get_EnergyMeterController();
-                        deviceAPI = energyMeterAPI;
-                    }
-                    catch (RuntimeException re) {
-                        LogUtil.errorLogInfo("", TAG, re);
-                    }
-                    catch(Exception e)
-                    {
-                        Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                        //e.printStackTrace();
-                        LogUtil.errorLogInfo("",TAG, e);
-                        return;
-                    }
-                    if(deviceAPI == null){return;}
-
-                    boolean bLogStatus = deviceAPI.GetLogOnOff();
-                    Log.d(TAG, "LogStatus : " + bLogStatus);
-
-                    if(bLogStatus == true)
-                    {
-                        Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-                    }
-                    else
-                    {
-                        Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                    }
-
-                    String controllerName = "에너지미터";
-                    controllerVO = new ControllerVO(type
-                            , controllerName
-                            , Count
-                            , Current
-                    );
-                }
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_1:
-            {
-                int Count = Const.CONTROLLER_ONOFF_COUNT;
-                int Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-
-                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_IDLE_POWER_SAVING_SWITCH) == true)
-                {
-                    try
-                    {
-                        CutOffConcentAPI cutOffConcentAPI = mWallPadAPI.Get_CutOffConcentController();
-                        deviceAPI = cutOffConcentAPI;
-                    }
-                    catch (RuntimeException re) {
-                        LogUtil.errorLogInfo("", TAG, re);
-                    }
-                    catch(Exception e)
-                    {
-                        Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                        //e.printStackTrace();
-                        LogUtil.errorLogInfo("",TAG, e);
-                        return;
-                    }
-                    if(deviceAPI == null){return;}
-
-                    boolean bLogStatus = deviceAPI.GetLogOnOff();
-                    Log.d(TAG, "LogStatus : " + bLogStatus);
-
-                    if(bLogStatus == true)
-                    {
-                        Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-                    }
-                    else
-                    {
-                        Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                    }
-
-                    String controllerName = "대기전력 차단 스위치";
-                    controllerVO = new ControllerVO(type
-                            , controllerName
-                            , Count
-                            , Current
-                    );
-                }
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_1:
-            {
-                int Count = Const.CONTROLLER_ONOFF_COUNT;
-                int Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-
-                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ENERGY_MODULE) == true)
-                {
-                    try
-                    {
-                        EnergyModuleAPI energyModuleAPI = mWallPadAPI.Get_EnergyModuleController();
-                        deviceAPI = energyModuleAPI;
-                    }
-                    catch (RuntimeException re) {
-                        LogUtil.errorLogInfo("", TAG, re);
-                    }
-                    catch(Exception e)
-                    {
-                        Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                        //e.printStackTrace();
-                        LogUtil.errorLogInfo("", TAG, e);
-                        return;
-                    }
-                    if(deviceAPI == null){return;}
-                    boolean bLogStatus = deviceAPI.GetLogOnOff();
-                    Log.d(TAG, "LogStatus : " + bLogStatus);
-
-                    if(bLogStatus == true)
-                    {
-                        Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-                    }
-                    else
-                    {
-                        Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                    }
-
-                    String controllerName = "에너지 모듈";
-                    controllerVO = new ControllerVO(type
-                            , controllerName
-                            , Count
-                            , Current
-                    );
-                }
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_CALLAPP_TIMEOUT_ONOFF:
-            {
-                String controllerName = "통화타임아웃";
-
-                int Count = Const.CONTROLLER_ONOFF_COUNT;
-                int Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-/*
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_CALL_TIMEOUT);
-                if ((InfoList != null) && (InfoList.size() > 3)) {
-                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
-                        Current = 1;
-                    }
-                }
-                if(Current == 1)
-                {
-                    Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-                    Log.d(TAG, "bCallTimeout use");
-                }
-                else
-                {
-                    Log.d(TAG, "bCallTimeout don't use");
-                    Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                }
-*/
-
-                WallpadDeviceSet devset = new WallpadDeviceSet(mActivity);
-                boolean DB_Value = devset.Get_CallAppCallTimeout();
-                devset.closeDB();
-
-                if(DB_Value ==  true)
-                {
-                    Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-                    Log.d(TAG, "bCallTimeout use");
-                }
-                else
-                {
-                    Log.d(TAG, "bCallTimeout don't use");
-                    Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                }
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , Count
-                        , Current
-                );
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_SMART_DIST:
-            {
-                int Count = Const.CONTROLLER_ONOFF_COUNT;
-                int Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-
-                String controllerName = "스마트분전반";
-
-                try
-                {
-                    SdbAPI sdbAPI = mWallPadAPI.Get_SdbController();
-                    deviceAPI = sdbAPI;
-                }
-                catch (RuntimeException re) {
-                    LogUtil.errorLogInfo("", TAG, re);
-                }
-                catch(Exception e)
-                {
-                    Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                    //e.printStackTrace();
-                    LogUtil.errorLogInfo("",TAG, e);
-                    return;
-                }
-
-                if(deviceAPI == null){return;}
-
-                boolean bLogStatus = deviceAPI.GetLogOnOff();
-
-                Log.d(TAG, "LogStatus : " + bLogStatus);
-
-                if(bLogStatus == true)
-                {
-                    Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-                }
-                else
-                {
-                    Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                }
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , Count
-                        , Current
-                );
-
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_SMART_DIST_LIVEM:
-            {
-                int Count = Const.CONTROLLER_ONOFF_COUNT;
-                int Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-
-                String controllerName = "스마트분전반 - 거실EM";
-
-                try
-                {
-                    Sdb_LivingRoomLightAPI sdb_livingRoomLightAPI = mWallPadAPI.Get_Sdb_LivingRoomLightAPI();
-                    deviceAPI = sdb_livingRoomLightAPI;
-                }
-                catch (RuntimeException re) {
-                    LogUtil.errorLogInfo("", TAG, re);
-                }
-                catch(Exception e)
-                {
-                    Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                    //e.printStackTrace();
-                    LogUtil.errorLogInfo("", TAG, e);
-                    return;
-                }
-
-                if(deviceAPI == null){return;}
-
-                boolean bLogStatus = deviceAPI.GetLogOnOff();
-
-                Log.d(TAG, "LogStatus : " + bLogStatus);
-
-                if(bLogStatus == true)
-                {
-                    Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-                }
-                else
-                {
-                    Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                }
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , Count
-                        , Current
-                );
-
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_ELECTRIC_RANGE1:
-            {
-                int Count = Const.CONTROLLER_ONOFF_COUNT;
-                int Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-
-                String controllerName = "전기레인지";
-
-                try
-                {
-                    ElectricRange_API electricRange_api = mWallPadAPI.Get_ElectricRange_API();
-                    deviceAPI = electricRange_api;
-                }
-                catch (RuntimeException re) {
-                    LogUtil.errorLogInfo("", TAG, re);
-                }
-                catch(Exception e)
-                {
-                    Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                    //e.printStackTrace();
-                    LogUtil.errorLogInfo("", TAG, e);
-                    return;
-                }
-
-                if(deviceAPI == null){return;}
-
-                boolean bLogStatus = deviceAPI.GetLogOnOff();
-
-                Log.d(TAG, "LogStatus : " + bLogStatus);
-
-                if(bLogStatus == true)
-                {
-                    Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
-                }
-                else
-                {
-                    Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-                }
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , Count
-                        , Current
-                );
-
-            }
-            break;
-
-            default:
-                break;
-        }
-
-        if (controllerVO != null)
-            mControllerList.add(controllerVO);
-    }
-
-
-    /*
-
-    @Override
-    public void onResume() {
-        if (DEBUG)  Log.d(TAG, "onResume() ");
-
-        super.onResume();
-
-        registerBroadCastReceiver();
-    }
-
-
-    @Override
-    public void onPause() {
-        if (DEBUG)  Log.d(TAG, "onPause() ");
-
-        super.onPause();
-
-        unregisterBroadCastReceiver();
-
-        closeDialog();
-        closeCommonDialog();
-    }
-
-
-
-
-
-    @Override
-    public void onDetach() {
-        super.onDetach();
-
-        //mWallPadAPI = null;
-    }
-
-     */
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-
-        // Clear SoundPool
-        if(mSoundPool != null)
-        {
-            mSoundPool.release();
-            mSoundPool = null;
-        }
-    }
-
-
-    @Override
-    public void onSaveInstanceState(Bundle outState) {
-        super.onSaveInstanceState(outState);
-    }
-
-
-    // init StartGoogleLauncher
-    private void initStartGoogleLauncher() {
-        Button btnStartGoogleLauncher = (Button)mRootView.findViewById(R.id.btn_run_google_launcher);
-        btnStartGoogleLauncher.setOnClickListener(mButtonClick);
-    }
-
-    private class SpinnerItemSelectedListener implements OnItemSelectedListener {
-        int mType = 0;
-        String mControllerName;
-        int mPrePosition = 0;
-        private boolean bFirst = true;
-        private boolean bItemChanging = false;
-
-        @Override
-        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
-            if (DEBUG)   Log.d(TAG, "onItemSelected() position : " + position);
-
-            Log.d(TAG, "[JEFF] onItemSelected() position [" + position + "], mControllerName [" + mControllerName + "]");
-
-            if (!bFirst) {
-                if (!bItemChanging) {
-                    bItemChanging = true;
-
-                    String itemName = parent.getItemAtPosition(position).toString();
-                    Log.d(TAG, "[JEFF] onItemSelected() position [" + position + "], itemName [" + itemName + "], mControllerName [" + mControllerName + "]");
-                    openDialog(null, mType, position, itemName, mControllerName, this, parent, mPrePosition);
-                }
-                else
-                    bItemChanging = false;
-            }
-            else
-                bFirst = false;
-
-            mPrePosition = position;
-        }
-
-        @Override
-        public void onNothingSelected(AdapterView<?> parent) {
-        }
-
-        // Item 변경완료 여부를 설정
-        public void setItemChangeCompleted(boolean itemChanged) {
-            if (itemChanged)
-                bItemChanging = false;
-        }
-    }
-
-
-    private DialogUtil mDialog;
-    // open dialog
-    public void openDialog(final SwitchButton switchButton, final int type, final int position
-            , final String itemName, final String controllerName
-            , final SpinnerItemSelectedListener spinnerItemSelectedListener, final View view, final int prePosition ) {
-        mDialog = new DialogUtil(mActivity);
-        String title = controllerName + " 변경";
-        //String message = "개수를 " + String.valueOf(position) + " 으로 변경하시겠습니까?";
-        String message = "[" + itemName + "]  으로 변경하시겠습니까?";
-
-        DialogInterface.OnClickListener positiveListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        dialog.dismiss();
-
-                        onItemChanged(type, position, itemName);
-
-                        if (spinnerItemSelectedListener != null)
-                            spinnerItemSelectedListener.setItemChangeCompleted(true);
-                    }
-                };
-
-        DialogInterface.OnClickListener negativeListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        if (switchButton != null)
-                            switchButton.switchEnabled(!switchButton.IsSet());
-                        else if (spinnerItemSelectedListener != null) {
-                            Spinner spinner = (Spinner)view;
-                            spinner.setSelection(prePosition);
-                        }
-
-                        dialog.dismiss();
-                    }
-                };
-
-        mDialog.openCommonDialog(title, message, positiveListener, negativeListener);
-    }
-
-
-    public void closeDialog() {
-        if (mDialog != null) {
-            mDialog.closeDialog();
-            mDialog = null;
-        }
-    }
-
-
-
-
-
-
-
-    @Override
-    public void onSwitchChanged(SwitchButton switchButton, boolean isSet, int type, Object object) {
-        String typeName = (String)object;
-        int idx = isSet ? 0 : 1;
-        String itemName = null;
-        List<String> itemList = switchButton.getText();
-
-        if ((itemList != null) && (itemList.size() > 1)) {
-            itemName = itemList.get(idx);
-
-            if (DEBUG)   Log.d(TAG, "onSwitchChanged() itemName : " + itemName
-                    +  ", typeName : " + typeName
-            );
-        }
-
-        openDialog(switchButton, type, idx/*isSet*/, itemName, typeName
-                , null, null, -1);
-    }
-
-
-    private View.OnClickListener mButtonClick = new View.OnClickListener() {
-        @Override
-        public void onClick(View v) {
-
-            PlayButtonSound();
-
-            switch(v.getId())
-            {
-                case R.id.btn_run_google_launcher:
-                {
-                    if (DEBUG)  Log.d(TAG, "onClick() btn_run_google_launcher" );
-
-                    try
-                    {
-                        ComponentName cn = new ComponentName("com.android.launcher3", "com.android.launcher3.Launcher");
-                        Intent intent = new Intent(Intent.ACTION_MAIN);
-                        intent.addCategory(Intent.CATEGORY_LAUNCHER);
-                        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
-                                | Intent.FLAG_ACTIVITY_NEW_TASK);
-                        intent.setComponent(cn);
-                        startActivity(intent);
-                    }
-                    catch (RuntimeException re) {
-                        LogUtil.errorLogInfo("", TAG, re);
-                    }
-                    catch(Exception e)
-                    {
-                        //e.printStackTrace();
-                        LogUtil.errorLogInfo("",TAG, e);
-                    }
-
-                }
-                break;
-
-                default:
-                    break;
-            }
-
-        }
-    };
-
-
-    public void PlayButtonSound()
-    {
-        Log.v(TAG, "PlayButtonSound()");
-        if(mSoundPool == null) return;
-
-        mSoundPool.play(TOUCH_LATCHED, 1, 1, 0, 0, 1f);
-    }
-
-    @Override
-    public void onItemChanged(int controllerIdx, int position, String itemName)
-    {
-        //String controllerName = mControllerList.get(controllerIdx).getName();
-        //String message = controllerName + " 를 " + (itemName) + "로 변경하였습니다.";
-
-
-        if (DEBUG)  Log.d(TAG, "onItemChanged() controllerIdx : " + controllerIdx
-                + ", position : " + position
-                + ", itemName : " + itemName
-        );
-
-        MainActivity.setFinishTimerReset();
-
-
-        int type = mControllerList.get(controllerIdx).getType();
-        if (type >= Const.CONTROLLER_TYPE_BASE) {
-            ControllerVO controllerVO = mControllerList.get(controllerIdx);
-            if (controllerVO != null) {
-                controllerVO.setInitCount(position);
-            }
-        }
-
-        if (DEBUG)  Log.d(TAG, "doTestController() type : " + type);
-
-        switch (type) {
-            case Const.CONTROLLER_TYPE_GAS:
-            case Const.CONTROLLER_TYPE_VENTILATION:
-            case Const.CONTROLLER_TYPE_HEATER:
-            case Const.CONTROLLER_TYPE_DOOR_LOCK:
-            case Const.CONTROLLER_TYPE_REALTIME_MEASURING_METER:
-            case Const.CONTROLLER_TYPE_LIGHT_BATCH_CONTROLL:
-            case Const.CONTROLLER_TYPE_LIGHT_TYPE:
-            case Const.CONTROLLER_TYPE_RF_DOOR_CAMERA:
-            case Const.CONTROLLER_TYPE_HDC_GATEWAY:
-            case Const.CONTROLLER_TYPE_HDC_ALLLIGHT:
-            case Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_1:
-            case Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_1:
-            case Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_1:
-            case Const.CONTROLLER_TYPE_SMART_RFCAM_SOUND_ONOFF:
-            case Const.CONTROLLER_TYPE_CALLAPP_TIMEOUT_ONOFF:
-            case Const.CONTROLLER_TYPE_SMART_DIST:
-            case Const.CONTROLLER_TYPE_SMART_DIST_LIVEM:
-            case Const.CONTROLLER_TYPE_ELECTRIC_RANGE1:
-                updateSetUsedToSubDevice(type, position, itemName);
-                break;
-
-        }
-
-
-    }
-
-    private void updateSetUsedToSubDevice(int type, int position, String itemName)
-    {
-        if (DEBUG) Log.d(TAG, "updateSetUsedToSubDevice() type : " + type + ", position : " + position + ", itemName : " + itemName);
-
-        if (itemName == null) return;
-
-        switch (type)
-        {
-            case Const.CONTROLLER_TYPE_GAS:
-            {
-                try
-                {
-                    GasAPI gasApi = mWallPadAPI.Get_GasController();          // 가스제어기 API
-                    deviceAPI = gasApi;
-                }
-                catch (RuntimeException re) {
-                    LogUtil.errorLogInfo("", TAG, re);
-                }
-                catch(Exception e)
-                {
-                    Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                    //e.printStackTrace();
-                    LogUtil.errorLogInfo("", TAG, e);
-                }
-                DeviceSetLogOnOff(deviceAPI, position);
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_ELECTRIC_RANGE1:
-            {
-                try
-                {
-                    ElectricRange_API electricRange_api = mWallPadAPI.Get_ElectricRange_API();      // 전기레인지 API
-                    deviceAPI = electricRange_api;
-                }
-                catch (RuntimeException re) {
-                    LogUtil.errorLogInfo("", TAG, re);
-                }
-                catch(Exception e)
-                {
-                    Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                    //e.printStackTrace();
-                    LogUtil.errorLogInfo("", TAG, e);
-                }
-                DeviceSetLogOnOff(deviceAPI, position);
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_VENTILATION:
-            {
-                try
-                {
-                    VentiAPI ventiAPI = mWallPadAPI.Get_VentiController();
-                    deviceAPI = ventiAPI;
-                }
-                catch (RuntimeException re) {
-                    LogUtil.errorLogInfo("", TAG, re);
-                }
-                catch(Exception e)
-                {
-                    Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                    //e.printStackTrace();
-                    LogUtil.errorLogInfo("",TAG, e);
-                }
-                DeviceSetLogOnOff(deviceAPI, position);
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_HEATER:
-            {
-                try
-                {
-                    if(mWallPadAPI.GetHeatingKind() == 1)
-                    {
-                        HeatingV1API heatingV1API = mWallPadAPI.Get_HeatingV1Controller();
-                        deviceAPI = heatingV1API;
-                    }
-                    else if(mWallPadAPI.GetHeatingKind() == 2)
-                    {
-                        HeatingV2API heatingV2API = mWallPadAPI.Get_HeatingV2Controller();
-                        deviceAPI = heatingV2API;
-                    }
-                    else
-                    {
-                        Log.e(TAG, "Heating Find Error");
-                        return;
-                    }
-                }
-                catch (RuntimeException re) {
-                    LogUtil.errorLogInfo("", TAG, re);
-                }
-                catch(Exception e)
-                {
-                    Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                    //e.printStackTrace();
-                    LogUtil.errorLogInfo("",TAG, e);
-                }
-                DeviceSetLogOnOff(deviceAPI, position);
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_DOOR_LOCK:
-            {
-                try
-                {
-                    DLockAPI dLockAPI = mWallPadAPI.Get_DLockController();
-                    deviceAPI = dLockAPI;
-                }
-                catch (RuntimeException re) {
-                    LogUtil.errorLogInfo("", TAG, re);
-                }
-                catch(Exception e)
-                {
-                    Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                    //e.printStackTrace();
-                    LogUtil.errorLogInfo("", TAG, e);
-                }
-                DeviceSetLogOnOff(deviceAPI, position);
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_REALTIME_MEASURING_METER:
-            {
-                try
-                {
-                    RealTimeMeterAPI realTimeMeterAPI = mWallPadAPI.Get_RealTimeMeterController();
-                    deviceAPI = realTimeMeterAPI;
-                }
-                catch (RuntimeException re) {
-                    LogUtil.errorLogInfo("", TAG, re);
-                }
-                catch(Exception e)
-                {
-                    Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                    //e.printStackTrace();
-                    LogUtil.errorLogInfo("",TAG, e);
-                }
-                DeviceSetLogOnOff(deviceAPI, position);
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_LIGHT_BATCH_CONTROLL:
-            {
-                switch(AllLightSwitchType)
-                {
-                    case 1:
-                        try
-                        {
-                            SmartSwitchPolAPI smartSwitchPolAPI = mWallPadAPI.Get_SmartSwitchPolController();
-                            deviceAPI = smartSwitchPolAPI;
-                            DebugLogOutput("Get_SmartSwitchPolController");
-                        }
-                        catch (RuntimeException re) {
-                            LogUtil.errorLogInfo("", TAG, re);
-                        }
-                        catch(Exception e)
-                        {
-                            Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                            //e.printStackTrace();
-                            LogUtil.errorLogInfo("",TAG, e);
-                        }
-                        DeviceSetLogOnOff(deviceAPI, position);
-                        break;
-
-                    case 2:
-                        try
-                        {
-                            AllLightAPI allLightAPI = mWallPadAPI.Get_AllLightController();
-                            deviceAPI = allLightAPI;
-                            DebugLogOutput("Get_AllLightController");
-                        }
-                        catch (RuntimeException re) {
-                            LogUtil.errorLogInfo("", TAG, re);
-                        }
-                        catch(Exception e)
-                        {
-                            Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                            //e.printStackTrace();
-                            LogUtil.errorLogInfo("", TAG, e);
-                        }
-                        DeviceSetLogOnOff(deviceAPI, position);
-                        break;
-
-                    case 3:
-
-                        break;
-
-                    case 4:
-                        try
-                        {
-                            SmartSwitchEvtAPI smartSwitchEvtAPI = mWallPadAPI.Get_SmartSwitchEvtController();
-                            deviceAPI = smartSwitchEvtAPI;
-                            DebugLogOutput("Get_SmartSwitchEvtController");
-                        }
-                        catch (RuntimeException re) {
-                            LogUtil.errorLogInfo("", TAG, re);
-                        }
-                        catch(Exception e)
-                        {
-                            Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                            //e.printStackTrace();
-                            LogUtil.errorLogInfo("", TAG, e);
-                        }
-                        DeviceSetLogOnOff(deviceAPI, position);
-                        break;
-
-                    default:
-                        break;
-                }
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_LIGHT_TYPE:
-            {
-                switch(LightSwitchType)
-                {
-                    case 1:
-                        try
-                        {
-                            LightAPI lightAPI = mWallPadAPI.Get_LightController();
-                            deviceAPI = lightAPI;
-                        }
-                        catch (RuntimeException re) {
-                            LogUtil.errorLogInfo("", TAG, re);
-                        }
-                        catch(Exception e)
-                        {
-                            Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                            //e.printStackTrace();
-                            LogUtil.errorLogInfo("", TAG, e);
-                        }
-                        DeviceSetLogOnOff(deviceAPI, position);
-                        break;
-
-                    case 2:
-                        try
-                        {
-                            MultiSwitchAPI multiSwitchAPI = mWallPadAPI.Get_MultiSwitchController();
-                            deviceAPI = multiSwitchAPI;
-                        }
-                        catch (RuntimeException re) {
-                            LogUtil.errorLogInfo("", TAG, re);
-                        }
-                        catch(Exception e)
-                        {
-                            Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                            //e.printStackTrace();
-                            LogUtil.errorLogInfo("",TAG, e);
-                        }
-                        DeviceSetLogOnOff(deviceAPI, position);
-                        break;
-
-                    case 3:
-                        try
-                        {
-                            IntLightAPI intLightAPI = mWallPadAPI.Get_IntLightController();
-                            deviceAPI = intLightAPI;
-                        }
-                        catch (RuntimeException re) {
-                            LogUtil.errorLogInfo("", TAG, re);
-                        }
-                        catch(Exception e)
-                        {
-                            Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                            //e.printStackTrace();
-                            LogUtil.errorLogInfo("",TAG, e);
-                        }
-                        DeviceSetLogOnOff(deviceAPI, position);
-                        break;
-
-                    default:
-                        break;
-                }
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_RF_DOOR_CAMERA:
-            {
-                switch(DoorCamType)
-                {
-                    case 1:
-                        try
-                        {
-                            RFDoorCamAPI rfDoorCamAPI = mWallPadAPI.Get_RFDoorCamController();
-                            deviceAPI = rfDoorCamAPI;
-                        }
-                        catch (RuntimeException re) {
-                            LogUtil.errorLogInfo("", TAG, re);
-                        }
-                        catch(Exception e)
-                        {
-                            Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                            //e.printStackTrace();
-                            LogUtil.errorLogInfo("", TAG, e);
-                        }
-                        DeviceSetLogOnOff(deviceAPI, position);
-                        break;
-
-                    case 2:
-                        try
-                        {
-                            SmartKeyRfDoorAPI smartKeyRfDoorAPI = mWallPadAPI.Get_SmartKeyRfDoorController();
-                            deviceAPI = smartKeyRfDoorAPI;
-                        }
-                        catch (RuntimeException re) {
-                            LogUtil.errorLogInfo("", TAG, re);
-                        }
-                        catch(Exception e)
-                        {
-                            Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                            //e.printStackTrace();
-                            LogUtil.errorLogInfo("", TAG, e);
-                        }
-                        DeviceSetLogOnOff(deviceAPI, position);
-                        break;
-
-                    default:
-                        break;
-                }
-            }
-            break;
-            case Const.CONTROLLER_TYPE_SMART_RFCAM_SOUND_ONOFF:
-            {
-                boolean bSet = false;
-                if (position == 1)
-                {
-                    bSet = true;
-                }
-
-                if (DEBUG)  Log.d(TAG, "SetDevLogSet() " + "Smart RF Cam Sound on : " + bSet);
-
-                WallpadStatusData wallpadStatusData = new WallpadStatusData(mActivity);
-                wallpadStatusData.SetSmartKeyDetectionAlarm(bSet);
-                wallpadStatusData.closeDB();
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_HDC_GATEWAY:
-            {
-                try
-                {
-                    IGW200dAPI iGW200dAPI = mWallPadAPI.Get_IGW200dController();
-                    deviceAPI = iGW200dAPI;
-                }
-                catch (RuntimeException re) {
-                    LogUtil.errorLogInfo("", TAG, re);
-                }
-                catch(Exception e)
-                {
-                    Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                    //e.printStackTrace();
-                    LogUtil.errorLogInfo("", TAG, e);
-                }
-                DeviceSetLogOnOff(deviceAPI, position);
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_SMART_DIST:
-            {
-                try
-                {
-                    SdbAPI sdbAPI = mWallPadAPI.Get_SdbController();
-                    deviceAPI = sdbAPI;
-                }
-                catch (RuntimeException re) {
-                    LogUtil.errorLogInfo("", TAG, re);
-                }
-                catch(Exception e)
-                {
-                    Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                    //e.printStackTrace();
-                    LogUtil.errorLogInfo("", TAG, e);
-                }
-                DeviceSetLogOnOff(deviceAPI, position);
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_SMART_DIST_LIVEM:
-            {
-                Log.e(TAG, "[updateSetUsedToSubDevice] Const.CONTROLLER_TYPE_SMART_DIST_LIVEM");
-                try
-                {
-                    Sdb_LivingRoomLightAPI sdb_livingRoomLightAPI = mWallPadAPI.Get_Sdb_LivingRoomLightAPI();
-                    deviceAPI = sdb_livingRoomLightAPI;
-                }
-                catch (RuntimeException re) {
-                    LogUtil.errorLogInfo("", TAG, re);
-                }
-                catch(Exception e)
-                {
-                    Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                    //e.printStackTrace();
-                    LogUtil.errorLogInfo("", TAG, e);
-                }
-                DeviceSetLogOnOff(deviceAPI, position);
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_HDC_ALLLIGHT:
-            {
-                try
-                {
-                    AllLightHDCAPI allLightHDCAPI = mWallPadAPI.Get_AllLightHDCController();
-                    deviceAPI = allLightHDCAPI;
-                }
-                catch (RuntimeException re) {
-                    LogUtil.errorLogInfo("", TAG, re);
-                }
-                catch(Exception e)
-                {
-                    Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                    LogUtil.errorLogInfo("",TAG, e);
-                }
-                DeviceSetLogOnOff(deviceAPI, position);
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_1:
-            {
-                try
-                {
-                    EnergyMeterAPI energyMeterAPI = mWallPadAPI.Get_EnergyMeterController();
-                    deviceAPI = energyMeterAPI;
-                }
-                catch (RuntimeException re) {
-                    LogUtil.errorLogInfo("", TAG, re);
-                }
-                catch(Exception e)
-                {
-                    Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                    //e.printStackTrace();
-                    LogUtil.errorLogInfo("",TAG, e);
-                }
-                DeviceSetLogOnOff(deviceAPI, position);
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_1:
-            {
-                try
-                {
-                    CutOffConcentAPI cutOffConcentAPI = mWallPadAPI.Get_CutOffConcentController();
-                    deviceAPI = cutOffConcentAPI;
-                }
-                catch (RuntimeException re) {
-                    LogUtil.errorLogInfo("", TAG, re);
-                }
-                catch(Exception e)
-                {
-                    Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                    //e.printStackTrace();
-                    LogUtil.errorLogInfo("", TAG, e);
-                }
-                DeviceSetLogOnOff(deviceAPI, position);
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_1:
-            {
-                try
-                {
-                    EnergyModuleAPI energyModuleAPI = mWallPadAPI.Get_EnergyModuleController();
-                    deviceAPI = energyModuleAPI;
-                }
-                catch (RuntimeException re) {
-                    LogUtil.errorLogInfo("", TAG, re);
-                }
-                catch(Exception e)
-                {
-                    Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
-                    //e.printStackTrace();
-                    LogUtil.errorLogInfo("", TAG, e);
-                }
-                DeviceSetLogOnOff(deviceAPI, position);
-            }
-            break;
-
-            case Const.CONTROLLER_TYPE_CALLAPP_TIMEOUT_ONOFF:
-            {
-                try
-                {
-                    WallpadDeviceSet devset = new WallpadDeviceSet(mActivity);
-
-                    if(position == 0) //사용안함
-                    {
-                        if (DEBUG)  Log.d(TAG, "position() : " + position + " - 사용안함");
-                        devset.Set_CallAppCallTimeout(false);
-                    }
-                    else if(position == 1) //사용함
-                    {
-                        if (DEBUG)  Log.d(TAG, "position() : " + position + " - 사용함");
-                        devset.Set_CallAppCallTimeout(true);
-                    }
-                    devset.closeDB();
-                }
-                catch (RuntimeException re) {
-                    LogUtil.errorLogInfo("", TAG, re);
-                }
-                catch(Exception e)
-                {
-                    //e.printStackTrace();
-                    LogUtil.errorLogInfo("", TAG, e);
-                }
-            }
-            break;
-
-            default:
-                break;
-        }
-    }
-
-    void DeviceSetLogOnOff(WallPadDevAPI DeviceAPI, int position) {
-        try {
-            if (DeviceAPI == null) {
-                Log.w(TAG, "[DeviceSetLogOnOff] DeviceAPI is null!!");
-                return;
-            }
-
-            if (position == 0) {
-                // 사용안함
-                if (DEBUG) Log.d(TAG, "[DeviceSetLogOnOff] position() : " + position + " - 사용안함");
-                deviceAPI.SetLogOnOff(false);
-            }
-            else if(position == 1) {
-                // 사용함
-                if (DEBUG) Log.d(TAG, "[DeviceSetLogOnOff] position() : " + position + " - 사용함");
-                deviceAPI.SetLogOnOff(true);
-            }
-            else {
-                Log.w(TAG, "[DeviceSetLogOnOff] position is not available!! -> position : " + position);
-            }
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
-        } catch (Exception e) {
-            Log.e(TAG, "[Exception] DeviceSetLogOnOff(WallPadDevAPI DeviceAPI, int position)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
-        }
-    }
-}
+package com.artncore.managersetting.ui.fragments;
+
+import java.util.ArrayList;
+import java.util.List;
+import kr.co.icontrols.wallpadsupport.Version;
+import kr.co.icontrols.wallpadsupport.WpadScale;
+import android.annotation.SuppressLint;
+import android.app.Activity;
+import android.content.ComponentName;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.media.AudioManager;
+import android.media.SoundPool;
+import android.os.Bundle;
+//import android.support.v4.app.Fragment;
+import androidx.fragment.app.Fragment;
+import androidx.core.view.MotionEventCompat;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.View.OnTouchListener;
+import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemSelectedListener;
+import android.widget.Button;
+import android.widget.ListView;
+import android.widget.Spinner;
+import com.artncore.WallPadDataMgr.WallpadDeviceSet;
+import com.artncore.WallPadDataMgr.WallpadStatusData;
+import com.artncore.managersetting.dao.MainDatabaseManager;
+import com.artncore.managersetting.domain.Const;
+import com.artncore.managersetting.domain.ControllerVO;
+import com.artncore.managersetting.ui.ControllerListAdapter;
+import com.artncore.managersetting.ui.ControllerListAdapter.ItemChangedListener;
+import com.artncore.managersetting.ui.SwitchButton;
+import com.artncore.managersetting.ui.activities.MainActivity;
+import com.artncore.managersetting.util.DialogUtil;
+import com.artncore.wallpadapi.AllLightAPI;
+import com.artncore.wallpadapi.AllLightHDCAPI;
+import com.artncore.wallpadapi.CutOffConcentAPI;
+import com.artncore.wallpadapi.DLockAPI;
+import com.artncore.wallpadapi.ElectricRange_API;
+import com.artncore.wallpadapi.EnergyMeterAPI;
+import com.artncore.wallpadapi.EnergyModuleAPI;
+import com.artncore.wallpadapi.GasAPI;
+import com.artncore.wallpadapi.HeatingV1API;
+import com.artncore.wallpadapi.HeatingV2API;
+import com.artncore.wallpadapi.IGW200dAPI;
+import com.artncore.wallpadapi.IntLightAPI;
+import com.artncore.wallpadapi.LightAPI;
+import com.artncore.wallpadapi.MultiSwitchAPI;
+import com.artncore.wallpadapi.RFDoorCamAPI;
+import com.artncore.wallpadapi.RealTimeMeterAPI;
+import com.artncore.wallpadapi.SdbAPI;
+import com.artncore.wallpadapi.Sdb_LivingRoomLightAPI;
+import com.artncore.wallpadapi.SmartKeyRfDoorAPI;
+import com.artncore.wallpadapi.SmartSwitchEvtAPI;
+import com.artncore.wallpadapi.SmartSwitchPolAPI;
+import com.artncore.wallpadapi.VentiAPI;
+import com.artncore.wallpadapi.WallPadAPI;
+import com.artncore.wallpadapi.WallPadDevAPI;
+import com.artncore.managersetting.R;
+
+/**
+ * A list fragment representing a list of Items. This fragment also supports
+ * tablet devices by allowing list items to be given an 'activated' state upon
+ * selection. This helps indicate which item is currently being viewed in a
+ * {link ItemDetailFragment}.
+ * <p>
+ * Activities containing this fragment MUST implement the {link Callbacks}
+ * interface.
+ */
+public class SettingDebuggingFragment extends Fragment implements SwitchButton.SwitchButtonChangedListener, ItemChangedListener {
+    private static final String TAG = "SettingDebuggingFragment";
+
+
+    private final boolean DEBUG = true;
+
+    private final boolean DEBUG_LOG_ON = true;
+    private void DebugLogOutput(String s) { if(DEBUG_LOG_ON) Log.d(TAG, s); }
+
+    //[Model]
+    private int ModelType = Version.getModelType();
+    //private int ModelType = Version.MODEL_TYPE.IHN_1030_D;
+
+    public final int DEBUGGING_TYPE_BASE =       Const.CONTROLLER_TYPE_BASE;
+    public final int DEBUGGING_TYPE_LOG_PATH =                              DEBUGGING_TYPE_BASE + 0;
+    public final int DEBUGGING_TYPE_LOG_LEVEL =                             DEBUGGING_TYPE_BASE + 1;
+    public final int DEBUGGING_TYPE_LOG_SET_PERIOD =                        DEBUGGING_TYPE_BASE + 2;
+    public final int DEBUGGING_TYPE_LOG_START_DATE =                        DEBUGGING_TYPE_BASE + 3;
+    public final int DEBUGGING_TYPE_LOG_START_TIME =                        DEBUGGING_TYPE_BASE + 4;
+    public final int DEBUGGING_TYPE_LOG_END_DATE =                          DEBUGGING_TYPE_BASE + 5;
+    public final int DEBUGGING_TYPE_LOG_END_TIME =                          DEBUGGING_TYPE_BASE + 6;
+    public final int DEBUGGING_TYPE_LOG_START_END =                         DEBUGGING_TYPE_BASE + 7;
+    public final int DEBUGGING_TYPE_LOG_FILE_VIEWER =                       DEBUGGING_TYPE_BASE + 8;
+    public final int DEBUGGING_TYPE_LOG_BACKUP_TO_USB =                     DEBUGGING_TYPE_BASE + 9;
+
+    public final int DEBUGGING_TYPE_LOG_OUTPUT_CALL_SUB_DEVICE =            DEBUGGING_TYPE_BASE + 100;
+    public final int DEBUGGING_TYPE_LOG_OUTPUT_WIRELESS_REMOCON =           DEBUGGING_TYPE_BASE + 110;
+    public final int DEBUGGING_TYPE_LOG_OUTPUT_LIGHT_BATCH_CONTROLL =       DEBUGGING_TYPE_BASE + 120;
+    public final int DEBUGGING_TYPE_LOG_OUTPUT_LIGHT_CONTROLLER =           DEBUGGING_TYPE_BASE + 130;
+    public final int DEBUGGING_TYPE_LOG_OUTPUT_LIGHT_MULTI_SWITCH =         DEBUGGING_TYPE_BASE + 140;
+    public final int DEBUGGING_TYPE_LOG_OUTPUT_DIGITAL_DOOR_LOCK =          DEBUGGING_TYPE_BASE + 150;
+    public final int DEBUGGING_TYPE_LOG_OUTPUT_VENTILATION =                DEBUGGING_TYPE_BASE + 160;
+    public final int DEBUGGING_TYPE_LOG_OUTPUT_REALTIME_MEASURING_METER =   DEBUGGING_TYPE_BASE + 170;
+    public final int DEBUGGING_TYPE_LOG_OUTPUT_ELECTRICALLY_CURTAIN =       DEBUGGING_TYPE_BASE + 180;
+    public final int DEBUGGING_TYPE_LOG_OUTPUT_SMART_SWITCH =               DEBUGGING_TYPE_BASE + 190;
+    public final int DEBUGGING_TYPE_LOG_OUTPUT_RF_DOOR_CAMERA =             DEBUGGING_TYPE_BASE + 200;
+    public final int DEBUGGING_TYPE_LOG_OUTPUT_GAS_CONTROLLER =             DEBUGGING_TYPE_BASE + 210;
+    public final int DEBUGGING_TYPE_LOG_OUTPUT_HEATER_CONTROLLER =          DEBUGGING_TYPE_BASE + 220;
+
+
+    public final int DEBUGGING_TYPE_LOG_OUTPUT_SYSTEM_AIRCON =              DEBUGGING_TYPE_BASE + 230;
+    public final int DEBUGGING_TYPE_LOG_OUTPUT_ELECTRIC_RANGE =             DEBUGGING_TYPE_BASE + 240;
+
+    public final int DEBUGGING_TYPE_LOG_OUTPUT_HD_MTM =                     DEBUGGING_TYPE_BASE + 300;
+    public final int DEBUGGING_TYPE_LOG_OUTPUT_HD_UKS =                     DEBUGGING_TYPE_BASE + 301;
+    public final int DEBUGGING_TYPE_LOG_OUTPUT_HD_USS =                     DEBUGGING_TYPE_BASE + 302;
+
+    public final int DEBUGGING_TYPE_RUN_GOOGLE_LAUNCHER =                   DEBUGGING_TYPE_BASE + 400;
+    public final int DEBUGGING_TYPE_SMART_RF_CAM_SOUND_ONOFF =              DEBUGGING_TYPE_BASE + 500;
+
+    public static final int LOG_PATH_TYPE_NAND_INDEX = 0;
+    public static final int LOG_PATH_TYPE_SERVER_INDEX = 1;
+
+    private Activity mActivity;
+    private WallPadAPI mWallPadAPI;
+
+    private MainDatabaseManager mMainDatabaseManager;
+    private ListView mControllerListView;
+
+    private View mRootView;
+
+    private List<ControllerVO> mControllerList;
+    WallPadDevAPI deviceAPI = null;
+
+    //제어기기 타입 타입
+    private int AllLightSwitchType = 0; //일괄소등
+    private int LightSwitchType = 0; //조명
+    private int DoorCamType = 0; //현관카메라
+
+    //터치음 재생
+    private SoundPool mSoundPool = null;
+    private final int SOUNDPOOL_MAX_STREAMS = 8;
+    private int TOUCH_LATCHED;
+
+    // constructor
+    public SettingDebuggingFragment() {
+    }
+
+    @Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+
+        mActivity = activity;
+        mMainDatabaseManager = MainActivity.getMainDatabaseManager();
+
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        if (DEBUG)  Log.d(TAG, "onCreate() ");
+
+        super.onCreate(savedInstanceState);
+
+        mWallPadAPI = MainActivity.getWallPadAPI();
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+                             Bundle savedInstanceState) {
+        mRootView= (View) inflater.inflate(R.layout.logoutput_setting_container,
+                container, false);
+
+
+        return mRootView;
+    }
+
+    @Override
+    public void onViewCreated(View view, Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+
+        if (savedInstanceState != null) {}
+
+        mControllerListView = (ListView) view.findViewById(R.id.controller_list);
+
+        mControllerListView.setOnTouchListener(new OnTouchListener() {
+
+            @SuppressLint("ClickableViewAccessibility")
+            @Override
+            public boolean onTouch(View v, MotionEvent event) {
+                switch (MotionEventCompat.getActionMasked(event)) {
+
+                    case MotionEvent.ACTION_UP:
+                        MainActivity.setFinishTimerReset();
+                        break;
+
+                    default:
+                        break;
+                }
+                return false;
+            }
+        });
+
+        Log.v(TAG,"onCreateInputView ---- SoundPool");
+        mSoundPool = new SoundPool(SOUNDPOOL_MAX_STREAMS, AudioManager.STREAM_MUSIC, 0);
+        String filepath = null;
+
+        filepath = "/system/media/audio/wallpad/effect/touch-latched.wav";
+        TOUCH_LATCHED = mSoundPool.load(filepath, 1);
+        Log.v(TAG,"TOUCH_LATCHED :"+TOUCH_LATCHED);
+
+        initStartGoogleLauncher();
+        initView1();
+    }
+
+    private void initView1()
+    {
+        getControllerList();
+
+        if(ModelType == Version.MODEL_TYPE.IHN_1030_D)
+        {
+            ControllerListAdapter adapter = new ControllerListAdapter(mActivity
+                    , R.layout.setting_controller_item_1024x600_a20
+                    , mControllerList
+                    , this);
+            mControllerListView.setAdapter(adapter);
+        }
+        else
+        {
+            ControllerListAdapter adapter = new ControllerListAdapter(mActivity
+                    , R.layout.setting_controller_item
+                    , mControllerList
+                    , this);
+            mControllerListView.setAdapter(adapter);
+        }
+
+    }
+
+    private void getControllerList() {
+        mControllerList = new ArrayList<ControllerVO>();
+
+        if (mWallPadAPI != null) {
+
+            if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ZERO_ENERGY_HOUSE)) {
+                addControllerVO(Const.CONTROLLER_TYPE_HEATER);
+                addControllerVO(Const.CONTROLLER_TYPE_LIGHT_BATCH_CONTROLL);
+                addControllerVO(Const.CONTROLLER_TYPE_REALTIME_MEASURING_METER);
+                addControllerVO(Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_1);
+                addControllerVO(Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_1);
+            }
+            else {
+                addControllerVO(Const.CONTROLLER_TYPE_LIGHT_TYPE);
+                addControllerVO(Const.CONTROLLER_TYPE_GAS);
+                addControllerVO(Const.CONTROLLER_TYPE_ELECTRIC_RANGE1);
+                addControllerVO(Const.CONTROLLER_TYPE_HEATER);
+                addControllerVO(Const.CONTROLLER_TYPE_VENTILATION);
+                addControllerVO(Const.CONTROLLER_TYPE_LIGHT_BATCH_CONTROLL);
+
+                addControllerVO(Const.CONTROLLER_TYPE_REALTIME_MEASURING_METER);
+                addControllerVO(Const.CONTROLLER_TYPE_RF_DOOR_CAMERA);
+
+                if (Version.getGatewayUsage()) {
+                    addControllerVO(Const.CONTROLLER_TYPE_DOOR_LOCK);
+                    addControllerVO(Const.CONTROLLER_TYPE_HDC_GATEWAY);
+                    addControllerVO(Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_1);
+                    addControllerVO(Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_1);
+                    addControllerVO(Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_1);
+                }
+            }
+
+            addControllerVO(Const.CONTROLLER_TYPE_CALLAPP_TIMEOUT_ONOFF);
+
+            if (ModelType == Version.MODEL_TYPE.IHN_D101 || ModelType == Version.MODEL_TYPE.IHN_D101_I
+                    || ModelType == Version.MODEL_TYPE.IHN_D101K || ModelType == Version.MODEL_TYPE.IHN_D101K_I) {
+                addControllerVO(Const.CONTROLLER_TYPE_SMART_DIST);
+                addControllerVO(Const.CONTROLLER_TYPE_SMART_DIST_LIVEM);
+            }
+
+            if (DEBUG)  Log.d(TAG, "mControllerList.size() : " + mControllerList.size());
+        }
+
+    }
+
+    private void addControllerVO(int type) {
+        ControllerVO controllerVO = null;
+
+        switch (type) {
+
+            case Const.CONTROLLER_TYPE_GAS:
+            {
+                int gasCount = Const.CONTROLLER_ONOFF_COUNT;
+
+                int gasCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_GAS) == true)
+                {
+                    try
+                    {
+                        GasAPI gasApi = mWallPadAPI.Get_GasController();          // 가스제어기 API
+                        deviceAPI = gasApi;
+                    }
+                    catch(Exception e)
+                    {
+                        Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                        e.printStackTrace();
+                        return;
+                    }
+
+                    if(deviceAPI == null){return;}
+
+                    boolean bLogStatus = deviceAPI.GetLogOnOff();
+                    Log.d(TAG, "LogStatus : " + bLogStatus);
+
+                    if(bLogStatus == true)
+                    {
+                        gasCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+                    }
+                    else
+                    {
+                        gasCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                    }
+
+
+                    String controllerName = mActivity.getString(R.string.contoller_gas);
+                    controllerVO = new ControllerVO(type
+                            , controllerName
+                            , gasCount
+                            , gasCurrent
+                    );
+
+                }
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_HEATER:
+            {
+                int heatingCount = Const.CONTROLLER_ONOFF_COUNT;
+                int heatingCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+
+                String tempHeatingKind = "Find Type Error";
+                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_HEATER) == true)
+                {
+                    try
+                    {
+                        if(mWallPadAPI.GetHeatingKind() == 1)
+                        {
+                            HeatingV1API heatingV1API = mWallPadAPI.Get_HeatingV1Controller();
+                            deviceAPI = heatingV1API;
+                            tempHeatingKind = "V1";
+                        }
+                        else if(mWallPadAPI.GetHeatingKind() == 2)
+                        {
+                            HeatingV2API heatingV2API = mWallPadAPI.Get_HeatingV2Controller();
+                            deviceAPI = heatingV2API;
+                            tempHeatingKind = "V2";
+                        }
+                    }
+                    catch(Exception e)
+                    {
+                        Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                        e.printStackTrace();
+                        return;
+                    }
+                    if(deviceAPI == null){return;}
+
+                    boolean bLogStatus = deviceAPI.GetLogOnOff();
+                    Log.d(TAG, "LogStatus : " + bLogStatus);
+
+                    if(bLogStatus == true)
+                    {
+                        heatingCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+                    }
+                    else
+                    {
+                        heatingCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                    }
+
+
+                    String controllerName = mActivity.getString(R.string.contoller_heater) + " - "+tempHeatingKind;
+                    controllerVO = new ControllerVO(type
+                            , controllerName
+                            , heatingCount
+                            , heatingCurrent
+                    );
+
+                }
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_VENTILATION:
+            {
+                int ventilationCount = Const.CONTROLLER_ONOFF_COUNT;
+
+                int ventilationCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_VENTILATION);
+                if ((InfoList != null) && (InfoList.size() > 5))
+                {
+                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3)))
+                    {
+                        String strType = InfoList.get(5);
+
+                        String controllerName = mActivity.getString(R.string.contoller_ventilation) + " - "+strType;
+
+                        try
+                        {
+                            VentiAPI ventiAPI = mWallPadAPI.Get_VentiController();
+                            deviceAPI = ventiAPI;
+                        }
+                        catch(Exception e)
+                        {
+                            Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                            e.printStackTrace();
+                            return;
+                        }
+                        if(deviceAPI == null){return;}
+
+                        boolean bLogStatus = deviceAPI.GetLogOnOff();
+
+                        Log.d(TAG, "LogStatus : " + bLogStatus);
+
+                        if(bLogStatus == true)
+                        {
+                            ventilationCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+                        }
+                        else
+                        {
+                            ventilationCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                        }
+                        controllerVO = new ControllerVO(type
+                                , controllerName
+                                , ventilationCount
+                                , ventilationCurrent
+                        );
+                    }
+                }
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_DOOR_LOCK:
+            {
+                int doorlockCount = Const.CONTROLLER_ONOFF_COUNT;
+
+                int doorlockCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DOOR_LOCK);
+                if ((InfoList != null) && (InfoList.size() > 5))
+                {
+                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3)))
+                    {
+                        String strType = InfoList.get(5);
+
+                        String controllerName = mActivity.getString(R.string.contoller_door_lock) + " - "+strType;
+
+                        try
+                        {
+                            DLockAPI dLockAPI = mWallPadAPI.Get_DLockController();
+                            deviceAPI = dLockAPI;
+                        }
+                        catch(Exception e)
+                        {
+                            Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                            e.printStackTrace();
+                            return;
+                        }
+                        if(deviceAPI == null){return;}
+
+                        boolean bLogStatus = deviceAPI.GetLogOnOff();
+
+                        Log.d(TAG, "LogStatus : " + bLogStatus);
+
+                        if(bLogStatus == true)
+                        {
+                            doorlockCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+                        }
+                        else
+                        {
+                            doorlockCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                        }
+                        controllerVO = new ControllerVO(type
+                                , controllerName
+                                , doorlockCount
+                                , doorlockCurrent
+                        );
+                    }
+                }
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_REALTIME_MEASURING_METER:
+            {
+                int realmeterCount = Const.CONTROLLER_ONOFF_COUNT;
+
+                int realmeterCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_REALTIME_MEASURING_METER) == true)
+                {
+                    try
+                    {
+                        RealTimeMeterAPI realTimeMeterAPI = mWallPadAPI.Get_RealTimeMeterController();
+                        deviceAPI = realTimeMeterAPI;
+                    }
+                    catch(Exception e)
+                    {
+                        Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                        e.printStackTrace();
+                        return;
+                    }
+                    if(deviceAPI == null){return;}
+
+                    boolean bLogStatus = deviceAPI.GetLogOnOff();
+                    Log.d(TAG, "LogStatus : " + bLogStatus);
+
+                    if(bLogStatus == true)
+                    {
+                        realmeterCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+                    }
+                    else
+                    {
+                        realmeterCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                    }
+
+                    String controllerName = mActivity.getString(R.string.contoller_realtime_masuring_meter);
+                    controllerVO = new ControllerVO(type
+                            , controllerName
+                            , realmeterCount
+                            , realmeterCurrent
+                    );
+                }
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_LIGHT_BATCH_CONTROLL:
+            {
+                int Count = Const.CONTROLLER_ONOFF_COUNT;
+                int Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SMART_SWITCH_LIGHT_AND_BATCH_CONTROL);
+                if ((InfoList != null) && (InfoList.size() > 5))
+                {
+                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3)))
+                    {
+                        String strType = InfoList.get(5);
+                        if(strType.equals(Const.LIGHT_BATCH_CONTROL_TYPE_COMMON_SMART_SWITCH))
+                        {
+                            try
+                            {
+                                SmartSwitchPolAPI smartSwitchPolAPI = mWallPadAPI.Get_SmartSwitchPolController();
+                                deviceAPI = smartSwitchPolAPI;
+                                AllLightSwitchType = 1;
+                            }
+                            catch(Exception e)
+                            {
+                                Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                                e.printStackTrace();
+                                return;
+                            }
+                        }
+                        else if (strType.equals(Const.LIGHT_BATCH_CONTROL_TYPE_COMMON_BATCH_CONTROLLER))
+                        {
+                            try
+                            {
+                                AllLightAPI allLightAPI = mWallPadAPI.Get_AllLightController();
+                                deviceAPI = allLightAPI;
+                                AllLightSwitchType = 2;
+                            }
+                            catch(Exception e)
+                            {
+                                Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                                e.printStackTrace();
+                                return;
+                            }
+                        }
+                        else if (strType.equals(Const.LIGHT_BATCH_CONTROL_TYPE_HDC_SMART_SWITCH))
+                        {
+                            try
+                            {
+                                SmartSwitchEvtAPI smartSwitchEvtAPI = mWallPadAPI.Get_SmartSwitchEvtController();
+                                deviceAPI = smartSwitchEvtAPI;
+                                AllLightSwitchType = 4;
+                            }
+                            catch(Exception e)
+                            {
+                                Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                                e.printStackTrace();
+                                return;
+                            }
+                        }
+                        else if (strType.equals(Const.LIGHT_BATCH_CONTROL_TYPE_HDC_LCD_SMART_SWITCH))
+                        {
+                            try
+                            {
+                                SmartSwitchPolAPI smartSwitchPolAPI = mWallPadAPI.Get_SmartSwitchPolController();
+                                deviceAPI = smartSwitchPolAPI;
+                                AllLightSwitchType = 1;
+                            }
+                            catch(Exception e)
+                            {
+                                Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                                e.printStackTrace();
+                                return;
+                            }
+                        }
+                        else
+                        {
+                            return;
+                        }
+
+                        String controllerName = "";
+
+                        if((WpadScale.getWidthPixels() == 800) && (WpadScale.getHeightPixels() == 480))
+                        {
+                            controllerName = InfoList.get(2);
+                        }
+                        else
+                        {
+                            controllerName = InfoList.get(2) + " - " + InfoList.get(5);
+                        }
+
+
+                        if(deviceAPI == null){return;}
+
+                        boolean bLogStatus = deviceAPI.GetLogOnOff();
+
+                        Log.d(TAG, "LogStatus : " + bLogStatus);
+
+                        if(bLogStatus == true)
+                        {
+                            Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+                        }
+                        else
+                        {
+                            Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                        }
+                        controllerVO = new ControllerVO(type
+                                , controllerName
+                                , Count
+                                , Current
+                        );
+                    }
+                }
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_LIGHT_TYPE:
+            {
+                int Count = Const.CONTROLLER_ONOFF_COUNT;
+                int Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LIGHT);
+                if ((InfoList != null) && (InfoList.size() > 5))
+                {
+                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3)))
+                    {
+                        String strType = InfoList.get(5);
+                        if(strType.equals(Const.LIGHT_CONTROLLER_TYPE_LIVING_ROOM))
+                        {
+                            try
+                            {
+                                LightAPI lightAPI = mWallPadAPI.Get_LightController();
+                                deviceAPI = lightAPI;
+                                LightSwitchType = 1;
+                            }
+                            catch(Exception e)
+                            {
+                                Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                                e.printStackTrace();
+                                return;
+                            }
+                        }
+                        else if (strType.equals(Const.LIGHT_CONTROLLER_TYPE_ROOMS))
+                        {
+                            try
+                            {
+                                MultiSwitchAPI multiSwitchAPI = mWallPadAPI.Get_MultiSwitchController();
+                                deviceAPI = multiSwitchAPI;
+                                LightSwitchType = 2;
+                            }
+                            catch(Exception e)
+                            {
+                                Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                                e.printStackTrace();
+                                return;
+                            }
+                        }
+                        else if (strType.equals(Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_NORMAL))
+                        {
+                            try
+                            {
+                                IntLightAPI intLightAPI = mWallPadAPI.Get_IntLightController();
+                                deviceAPI = intLightAPI;
+                                LightSwitchType = 3;
+                                addControllerVO(Const.CONTROLLER_TYPE_HDC_ALLLIGHT);
+                            }
+                            catch(Exception e)
+                            {
+                                Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                                e.printStackTrace();
+                                return;
+                            }
+                        }
+                        else if (strType.equals(Const.LIGHT_CONTROLLER_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT))
+                        {
+                            try
+                            {
+                                IntLightAPI intLightAPI = mWallPadAPI.Get_IntLightController();
+                                deviceAPI = intLightAPI;
+                                LightSwitchType = 3;
+                            }
+                            catch(Exception e)
+                            {
+                                Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                                e.printStackTrace();
+                                return;
+                            }
+                        }
+                        else
+                        {
+                            return;
+                        }
+
+                        String controllerName = InfoList.get(2) + " - " + InfoList.get(5);
+
+                        if(deviceAPI == null) return;
+
+                        boolean bLogStatus = deviceAPI.GetLogOnOff();
+
+                        Log.d(TAG, "LogStatus : " + bLogStatus);
+
+                        if(bLogStatus == true)
+                        {
+                            Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+                        }
+                        else
+                        {
+                            Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                        }
+                        controllerVO = new ControllerVO(type
+                                , controllerName
+                                , Count
+                                , Current
+                        );
+                    }
+                }
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_RF_DOOR_CAMERA:
+            {
+                int Count = Const.CONTROLLER_ONOFF_COUNT;
+                int Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DOOR_CAMERA);
+                if ((InfoList != null) && (InfoList.size() > 5))
+                {
+                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3)))
+                    {
+                        String strType = InfoList.get(5);
+                        if(strType.equals(Const.DOOR_CAMERA_TYPE_RF_DOOR_CAMERA))
+                        {
+                            try
+                            {
+                                RFDoorCamAPI rfDoorCamAPI = mWallPadAPI.Get_RFDoorCamController();
+                                deviceAPI = rfDoorCamAPI;
+                                DoorCamType = 1;
+                            }
+                            catch(Exception e)
+                            {
+                                Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                                e.printStackTrace();
+                                return;
+                            }
+                        }
+                        else if (strType.equals(Const.DOOR_CAMERA_TYPE_SMART_KEY) || strType.equals(Const.DOOR_CAMERA_TYPE_IOT_SMART) ||
+                                 strType.equals(Const.DOOR_CAMERA_TYPE_HYOSUNG_SMART) || strType.equals(Const.DOOR_CAMERA_TYPE_DAEWOO_SMART)
+                                )
+                        {
+                            try
+                            {
+                                SmartKeyRfDoorAPI smartKeyRfDoorAPI = mWallPadAPI.Get_SmartKeyRfDoorController();
+                                deviceAPI = smartKeyRfDoorAPI;
+                                DoorCamType = 2;
+                            }
+                            catch(Exception e)
+                            {
+                                Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                                e.printStackTrace();
+                                return;
+                            }
+                        }
+                        else
+                        {
+                            return;
+                        }
+
+                        String controllerName = InfoList.get(2) + " - " + InfoList.get(5);
+
+                        if(deviceAPI == null){return;}
+
+                        boolean bLogStatus = deviceAPI.GetLogOnOff();
+
+                        Log.d(TAG, "LogStatus : " + bLogStatus);
+
+                        if(bLogStatus == true)
+                        {
+                            Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+                        }
+                        else
+                        {
+                            Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                        }
+                        controllerVO = new ControllerVO(type
+                                , controllerName
+                                , Count
+                                , Current
+                        );
+
+                        if(DoorCamType == 2)
+                        {
+                            if (controllerVO != null)
+                                mControllerList.add(controllerVO);
+
+                            WallpadStatusData wallpadStatusData = new WallpadStatusData(mActivity);
+                            boolean SmartKeyDetectionAlarm = wallpadStatusData.GetSmartKeyDetectionAlarm();
+                            if (DEBUG)  Log.i(TAG, "GetSmartKeyDetectionAlarm - ret = " + SmartKeyDetectionAlarm);
+                            wallpadStatusData.closeDB();
+                            if (SmartKeyDetectionAlarm == true)
+                            {
+                                Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+                            }
+                            else
+                            {
+                                Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                            }
+
+                            controllerVO = new ControllerVO(Const.CONTROLLER_TYPE_SMART_RFCAM_SOUND_ONOFF
+                                    , mActivity.getString(R.string.setting_debugging_set_smartrf_cam_sound_onoff)
+                                    , Count
+                                    , Current
+                            );
+                        }
+                    }
+                }
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_HDC_GATEWAY:
+            {
+                int Count = Const.CONTROLLER_ONOFF_COUNT;
+                int Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+
+                String controllerName = "IGW200D 게이트웨이";
+
+                try
+                {
+                    IGW200dAPI iGW200dAPI = mWallPadAPI.Get_IGW200dController();
+                    deviceAPI = iGW200dAPI;
+                }
+                catch(Exception e)
+                {
+                    Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                    e.printStackTrace();
+                    return;
+                }
+
+                if(deviceAPI == null){return;}
+
+                boolean bLogStatus = deviceAPI.GetLogOnOff();
+
+                Log.d(TAG, "LogStatus : " + bLogStatus);
+
+                if(bLogStatus == true)
+                {
+                    Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+                }
+                else
+                {
+                    Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                }
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , Count
+                        , Current
+                );
+
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_HDC_ALLLIGHT:
+            {
+                int Count = Const.CONTROLLER_ONOFF_COUNT;
+                int Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+
+                String controllerName = "현산 일괄소등릴레이";
+                try
+                {
+                    AllLightHDCAPI allLightHDCAPI = mWallPadAPI.Get_AllLightHDCController();
+                    deviceAPI = allLightHDCAPI;
+                }
+                catch(Exception e)
+                {
+                    Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                    e.printStackTrace();
+                    return;
+                }
+
+                if(deviceAPI == null){return;}
+
+                boolean bLogStatus = deviceAPI.GetLogOnOff();
+
+                Log.d(TAG, "LogStatus : " + bLogStatus);
+
+                if(bLogStatus == true)
+                {
+                    Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+                }
+                else
+                {
+                    Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                }
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , Count
+                        , Current
+                );
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_1:
+            {
+                int Count = Const.CONTROLLER_ONOFF_COUNT;
+                int Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+
+                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ENERGY_DEVICES) == true)
+                {
+                    try
+                    {
+                        EnergyMeterAPI energyMeterAPI = mWallPadAPI.Get_EnergyMeterController();
+                        deviceAPI = energyMeterAPI;
+                    }
+                    catch(Exception e)
+                    {
+                        Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                        e.printStackTrace();
+                        return;
+                    }
+                    if(deviceAPI == null){return;}
+
+                    boolean bLogStatus = deviceAPI.GetLogOnOff();
+                    Log.d(TAG, "LogStatus : " + bLogStatus);
+
+                    if(bLogStatus == true)
+                    {
+                        Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+                    }
+                    else
+                    {
+                        Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                    }
+
+                    String controllerName = "에너지미터";
+                    controllerVO = new ControllerVO(type
+                            , controllerName
+                            , Count
+                            , Current
+                    );
+                }
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_1:
+            {
+                int Count = Const.CONTROLLER_ONOFF_COUNT;
+                int Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+
+                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_IDLE_POWER_SAVING_SWITCH) == true)
+                {
+                    try
+                    {
+                        CutOffConcentAPI cutOffConcentAPI = mWallPadAPI.Get_CutOffConcentController();
+                        deviceAPI = cutOffConcentAPI;
+                    }
+                    catch(Exception e)
+                    {
+                        Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                        e.printStackTrace();
+                        return;
+                    }
+                    if(deviceAPI == null){return;}
+
+                    boolean bLogStatus = deviceAPI.GetLogOnOff();
+                    Log.d(TAG, "LogStatus : " + bLogStatus);
+
+                    if(bLogStatus == true)
+                    {
+                        Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+                    }
+                    else
+                    {
+                        Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                    }
+
+                    String controllerName = "대기전력 차단 스위치";
+                    controllerVO = new ControllerVO(type
+                            , controllerName
+                            , Count
+                            , Current
+                    );
+                }
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_1:
+            {
+                int Count = Const.CONTROLLER_ONOFF_COUNT;
+                int Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+
+                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ENERGY_MODULE) == true)
+                {
+                    try
+                    {
+                        EnergyModuleAPI energyModuleAPI = mWallPadAPI.Get_EnergyModuleController();
+                        deviceAPI = energyModuleAPI;
+                    }
+                    catch(Exception e)
+                    {
+                        Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                        e.printStackTrace();
+                        return;
+                    }
+                    if(deviceAPI == null){return;}
+                    boolean bLogStatus = deviceAPI.GetLogOnOff();
+                    Log.d(TAG, "LogStatus : " + bLogStatus);
+
+                    if(bLogStatus == true)
+                    {
+                        Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+                    }
+                    else
+                    {
+                        Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                    }
+
+                    String controllerName = "에너지 모듈";
+                    controllerVO = new ControllerVO(type
+                            , controllerName
+                            , Count
+                            , Current
+                    );
+                }
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_CALLAPP_TIMEOUT_ONOFF:
+            {
+                String controllerName = "통화타임아웃";
+
+                int Count = Const.CONTROLLER_ONOFF_COUNT;
+                int Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+/*
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_CALL_TIMEOUT);
+                if ((InfoList != null) && (InfoList.size() > 3)) {
+                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+                        Current = 1;
+                    }
+                }
+                if(Current == 1)
+                {
+                    Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+                    Log.d(TAG, "bCallTimeout use");
+                }
+                else
+                {
+                    Log.d(TAG, "bCallTimeout don't use");
+                    Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                }
+*/
+
+                WallpadDeviceSet devset = new WallpadDeviceSet(mActivity);
+                boolean DB_Value = devset.Get_CallAppCallTimeout();
+                devset.closeDB();
+
+                if(DB_Value ==  true)
+                {
+                    Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+                    Log.d(TAG, "bCallTimeout use");
+                }
+                else
+                {
+                    Log.d(TAG, "bCallTimeout don't use");
+                    Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                }
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , Count
+                        , Current
+                );
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_SMART_DIST:
+            {
+                int Count = Const.CONTROLLER_ONOFF_COUNT;
+                int Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+
+                String controllerName = "스마트분전반";
+
+                try
+                {
+                    SdbAPI sdbAPI = mWallPadAPI.Get_SdbController();
+                    deviceAPI = sdbAPI;
+                }
+                catch(Exception e)
+                {
+                    Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                    e.printStackTrace();
+                    return;
+                }
+
+                if(deviceAPI == null){return;}
+
+                boolean bLogStatus = deviceAPI.GetLogOnOff();
+
+                Log.d(TAG, "LogStatus : " + bLogStatus);
+
+                if(bLogStatus == true)
+                {
+                    Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+                }
+                else
+                {
+                    Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                }
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , Count
+                        , Current
+                );
+
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_SMART_DIST_LIVEM:
+            {
+                int Count = Const.CONTROLLER_ONOFF_COUNT;
+                int Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+
+                String controllerName = "스마트분전반 - 거실EM";
+
+                try
+                {
+                    Sdb_LivingRoomLightAPI sdb_livingRoomLightAPI = mWallPadAPI.Get_Sdb_LivingRoomLightAPI();
+                    deviceAPI = sdb_livingRoomLightAPI;
+                }
+                catch(Exception e)
+                {
+                    Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                    e.printStackTrace();
+                    return;
+                }
+
+                if(deviceAPI == null){return;}
+
+                boolean bLogStatus = deviceAPI.GetLogOnOff();
+
+                Log.d(TAG, "LogStatus : " + bLogStatus);
+
+                if(bLogStatus == true)
+                {
+                    Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+                }
+                else
+                {
+                    Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                }
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , Count
+                        , Current
+                );
+
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_ELECTRIC_RANGE1:
+            {
+                int Count = Const.CONTROLLER_ONOFF_COUNT;
+                int Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+
+                String controllerName = "전기레인지";
+
+                try
+                {
+                    ElectricRange_API electricRange_api = mWallPadAPI.Get_ElectricRange_API();
+                    deviceAPI = electricRange_api;
+                }
+                catch(Exception e)
+                {
+                    Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                    e.printStackTrace();
+                    return;
+                }
+
+                if(deviceAPI == null){return;}
+
+                boolean bLogStatus = deviceAPI.GetLogOnOff();
+
+                Log.d(TAG, "LogStatus : " + bLogStatus);
+
+                if(bLogStatus == true)
+                {
+                    Current = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+                }
+                else
+                {
+                    Current = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+                }
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , Count
+                        , Current
+                );
+
+            }
+            break;
+
+            default:
+                break;
+        }
+
+        if (controllerVO != null)
+            mControllerList.add(controllerVO);
+    }
+
+
+    /*
+
+    @Override
+    public void onResume() {
+        if (DEBUG)  Log.d(TAG, "onResume() ");
+
+        super.onResume();
+
+        registerBroadCastReceiver();
+    }
+
+
+    @Override
+    public void onPause() {
+        if (DEBUG)  Log.d(TAG, "onPause() ");
+
+        super.onPause();
+
+        unregisterBroadCastReceiver();
+
+        closeDialog();
+        closeCommonDialog();
+    }
+
+
+
+
+
+    @Override
+    public void onDetach() {
+        super.onDetach();
+
+        //mWallPadAPI = null;
+    }
+
+     */
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+
+        // Clear SoundPool
+        if(mSoundPool != null)
+        {
+            mSoundPool.release();
+            mSoundPool = null;
+        }
+    }
+
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+    }
+
+
+    // init StartGoogleLauncher
+    private void initStartGoogleLauncher() {
+        Button btnStartGoogleLauncher = (Button)mRootView.findViewById(R.id.btn_run_google_launcher);
+        btnStartGoogleLauncher.setOnClickListener(mButtonClick);
+    }
+
+    private class SpinnerItemSelectedListener implements OnItemSelectedListener {
+        int mType = 0;
+        String mControllerName;
+        int mPrePosition = 0;
+        private boolean bFirst = true;
+        private boolean bItemChanging = false;
+
+        @Override
+        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
+            if (DEBUG)   Log.d(TAG, "onItemSelected() position : " + position);
+
+            Log.d(TAG, "[JEFF] onItemSelected() position [" + position + "], mControllerName [" + mControllerName + "]");
+
+            if (!bFirst) {
+                if (!bItemChanging) {
+                    bItemChanging = true;
+
+                    String itemName = parent.getItemAtPosition(position).toString();
+                    Log.d(TAG, "[JEFF] onItemSelected() position [" + position + "], itemName [" + itemName + "], mControllerName [" + mControllerName + "]");
+                    openDialog(null, mType, position, itemName, mControllerName, this, parent, mPrePosition);
+                }
+                else
+                    bItemChanging = false;
+            }
+            else
+                bFirst = false;
+
+            mPrePosition = position;
+        }
+
+        @Override
+        public void onNothingSelected(AdapterView<?> parent) {
+        }
+
+        // Item 변경완료 여부를 설정
+        public void setItemChangeCompleted(boolean itemChanged) {
+            if (itemChanged)
+                bItemChanging = false;
+        }
+    }
+
+
+    private DialogUtil mDialog;
+    // open dialog
+    public void openDialog(final SwitchButton switchButton, final int type, final int position
+            , final String itemName, final String controllerName
+            , final SpinnerItemSelectedListener spinnerItemSelectedListener, final View view, final int prePosition ) {
+        mDialog = new DialogUtil(mActivity);
+        String title = controllerName + " 변경";
+        //String message = "개수를 " + String.valueOf(position) + " 으로 변경하시겠습니까?";
+        String message = "[" + itemName + "]  으로 변경하시겠습니까?";
+
+        DialogInterface.OnClickListener positiveListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        dialog.dismiss();
+
+                        onItemChanged(type, position, itemName);
+
+                        if (spinnerItemSelectedListener != null)
+                            spinnerItemSelectedListener.setItemChangeCompleted(true);
+                    }
+                };
+
+        DialogInterface.OnClickListener negativeListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        if (switchButton != null)
+                            switchButton.switchEnabled(!switchButton.IsSet());
+                        else if (spinnerItemSelectedListener != null) {
+                            Spinner spinner = (Spinner)view;
+                            spinner.setSelection(prePosition);
+                        }
+
+                        dialog.dismiss();
+                    }
+                };
+
+        mDialog.openCommonDialog(title, message, positiveListener, negativeListener);
+    }
+
+
+    public void closeDialog() {
+        if (mDialog != null) {
+            mDialog.closeDialog();
+            mDialog = null;
+        }
+    }
+
+
+
+
+
+
+
+    @Override
+    public void onSwitchChanged(SwitchButton switchButton, boolean isSet, int type, Object object) {
+        String typeName = (String)object;
+        int idx = isSet ? 0 : 1;
+        String itemName = null;
+        List<String> itemList = switchButton.getText();
+
+        if ((itemList != null) && (itemList.size() > 1)) {
+            itemName = itemList.get(idx);
+
+            if (DEBUG)   Log.d(TAG, "onSwitchChanged() itemName : " + itemName
+                    +  ", typeName : " + typeName
+            );
+        }
+
+        openDialog(switchButton, type, idx/*isSet*/, itemName, typeName
+                , null, null, -1);
+    }
+
+
+    private View.OnClickListener mButtonClick = new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+
+            PlayButtonSound();
+
+            switch(v.getId())
+            {
+                case R.id.btn_run_google_launcher:
+                {
+                    if (DEBUG)  Log.d(TAG, "onClick() btn_run_google_launcher" );
+
+                    try
+                    {
+                        ComponentName cn = new ComponentName("com.android.launcher3", "com.android.launcher3.Launcher");
+                        Intent intent = new Intent(Intent.ACTION_MAIN);
+                        intent.addCategory(Intent.CATEGORY_LAUNCHER);
+                        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
+                                | Intent.FLAG_ACTIVITY_NEW_TASK);
+                        intent.setComponent(cn);
+                        startActivity(intent);
+                    }
+                    catch(Exception e)
+                    {
+                        e.printStackTrace();
+                    }
+
+                }
+                break;
+
+                default:
+                    break;
+            }
+
+        }
+    };
+
+
+    public void PlayButtonSound()
+    {
+        Log.v(TAG, "PlayButtonSound()");
+        if(mSoundPool == null) return;
+
+        mSoundPool.play(TOUCH_LATCHED, 1, 1, 0, 0, 1f);
+    }
+
+    @Override
+    public void onItemChanged(int controllerIdx, int position, String itemName)
+    {
+        //String controllerName = mControllerList.get(controllerIdx).getName();
+        //String message = controllerName + " 를 " + (itemName) + "로 변경하였습니다.";
+
+
+        if (DEBUG)  Log.d(TAG, "onItemChanged() controllerIdx : " + controllerIdx
+                + ", position : " + position
+                + ", itemName : " + itemName
+        );
+
+        MainActivity.setFinishTimerReset();
+
+
+        int type = mControllerList.get(controllerIdx).getType();
+        if (type >= Const.CONTROLLER_TYPE_BASE) {
+            ControllerVO controllerVO = mControllerList.get(controllerIdx);
+            if (controllerVO != null) {
+                controllerVO.setInitCount(position);
+            }
+        }
+
+        if (DEBUG)  Log.d(TAG, "doTestController() type : " + type);
+
+        switch (type) {
+            case Const.CONTROLLER_TYPE_GAS:
+            case Const.CONTROLLER_TYPE_VENTILATION:
+            case Const.CONTROLLER_TYPE_HEATER:
+            case Const.CONTROLLER_TYPE_DOOR_LOCK:
+            case Const.CONTROLLER_TYPE_REALTIME_MEASURING_METER:
+            case Const.CONTROLLER_TYPE_LIGHT_BATCH_CONTROLL:
+            case Const.CONTROLLER_TYPE_LIGHT_TYPE:
+            case Const.CONTROLLER_TYPE_RF_DOOR_CAMERA:
+            case Const.CONTROLLER_TYPE_HDC_GATEWAY:
+            case Const.CONTROLLER_TYPE_HDC_ALLLIGHT:
+            case Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_1:
+            case Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_1:
+            case Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_1:
+            case Const.CONTROLLER_TYPE_SMART_RFCAM_SOUND_ONOFF:
+            case Const.CONTROLLER_TYPE_CALLAPP_TIMEOUT_ONOFF:
+            case Const.CONTROLLER_TYPE_SMART_DIST:
+            case Const.CONTROLLER_TYPE_SMART_DIST_LIVEM:
+            case Const.CONTROLLER_TYPE_ELECTRIC_RANGE1:
+                updateSetUsedToSubDevice(type, position, itemName);
+                break;
+
+        }
+
+
+    }
+
+    private void updateSetUsedToSubDevice(int type, int position, String itemName)
+    {
+        if (DEBUG) Log.d(TAG, "updateSetUsedToSubDevice() type : " + type + ", position : " + position + ", itemName : " + itemName);
+
+        if (itemName == null) return;
+
+        switch (type)
+        {
+            case Const.CONTROLLER_TYPE_GAS:
+            {
+                try
+                {
+                    GasAPI gasApi = mWallPadAPI.Get_GasController();          // 가스제어기 API
+                    deviceAPI = gasApi;
+                }
+                catch(Exception e)
+                {
+                    Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                    e.printStackTrace();
+                }
+                DeviceSetLogOnOff(deviceAPI, position);
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_ELECTRIC_RANGE1:
+            {
+                try
+                {
+                    ElectricRange_API electricRange_api = mWallPadAPI.Get_ElectricRange_API();      // 전기레인지 API
+                    deviceAPI = electricRange_api;
+                }
+                catch(Exception e)
+                {
+                    Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                    e.printStackTrace();
+                }
+                DeviceSetLogOnOff(deviceAPI, position);
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_VENTILATION:
+            {
+                try
+                {
+                    VentiAPI ventiAPI = mWallPadAPI.Get_VentiController();
+                    deviceAPI = ventiAPI;
+                }
+                catch(Exception e)
+                {
+                    Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                    e.printStackTrace();
+                }
+                DeviceSetLogOnOff(deviceAPI, position);
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_HEATER:
+            {
+                try
+                {
+                    if(mWallPadAPI.GetHeatingKind() == 1)
+                    {
+                        HeatingV1API heatingV1API = mWallPadAPI.Get_HeatingV1Controller();
+                        deviceAPI = heatingV1API;
+                    }
+                    else if(mWallPadAPI.GetHeatingKind() == 2)
+                    {
+                        HeatingV2API heatingV2API = mWallPadAPI.Get_HeatingV2Controller();
+                        deviceAPI = heatingV2API;
+                    }
+                    else
+                    {
+                        Log.e(TAG, "Heating Find Error");
+                        return;
+                    }
+                }
+                catch(Exception e)
+                {
+                    Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                    e.printStackTrace();
+                }
+                DeviceSetLogOnOff(deviceAPI, position);
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_DOOR_LOCK:
+            {
+                try
+                {
+                    DLockAPI dLockAPI = mWallPadAPI.Get_DLockController();
+                    deviceAPI = dLockAPI;
+                }
+                catch(Exception e)
+                {
+                    Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                    e.printStackTrace();
+                }
+                DeviceSetLogOnOff(deviceAPI, position);
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_REALTIME_MEASURING_METER:
+            {
+                try
+                {
+                    RealTimeMeterAPI realTimeMeterAPI = mWallPadAPI.Get_RealTimeMeterController();
+                    deviceAPI = realTimeMeterAPI;
+                }
+                catch(Exception e)
+                {
+                    Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                    e.printStackTrace();
+                }
+                DeviceSetLogOnOff(deviceAPI, position);
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_LIGHT_BATCH_CONTROLL:
+            {
+                switch(AllLightSwitchType)
+                {
+                    case 1:
+                        try
+                        {
+                            SmartSwitchPolAPI smartSwitchPolAPI = mWallPadAPI.Get_SmartSwitchPolController();
+                            deviceAPI = smartSwitchPolAPI;
+                            DebugLogOutput("Get_SmartSwitchPolController");
+                        }
+                        catch(Exception e)
+                        {
+                            Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                            e.printStackTrace();
+                        }
+                        DeviceSetLogOnOff(deviceAPI, position);
+                        break;
+
+                    case 2:
+                        try
+                        {
+                            AllLightAPI allLightAPI = mWallPadAPI.Get_AllLightController();
+                            deviceAPI = allLightAPI;
+                            DebugLogOutput("Get_AllLightController");
+                        }
+                        catch(Exception e)
+                        {
+                            Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                            e.printStackTrace();
+                        }
+                        DeviceSetLogOnOff(deviceAPI, position);
+                        break;
+
+                    case 3:
+
+                        break;
+
+                    case 4:
+                        try
+                        {
+                            SmartSwitchEvtAPI smartSwitchEvtAPI = mWallPadAPI.Get_SmartSwitchEvtController();
+                            deviceAPI = smartSwitchEvtAPI;
+                            DebugLogOutput("Get_SmartSwitchEvtController");
+                        }
+                        catch(Exception e)
+                        {
+                            Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                            e.printStackTrace();
+                        }
+                        DeviceSetLogOnOff(deviceAPI, position);
+                        break;
+
+                    default:
+                        break;
+                }
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_LIGHT_TYPE:
+            {
+                switch(LightSwitchType)
+                {
+                    case 1:
+                        try
+                        {
+                            LightAPI lightAPI = mWallPadAPI.Get_LightController();
+                            deviceAPI = lightAPI;
+                        }
+                        catch(Exception e)
+                        {
+                            Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                            e.printStackTrace();
+                        }
+                        DeviceSetLogOnOff(deviceAPI, position);
+                        break;
+
+                    case 2:
+                        try
+                        {
+                            MultiSwitchAPI multiSwitchAPI = mWallPadAPI.Get_MultiSwitchController();
+                            deviceAPI = multiSwitchAPI;
+                        }
+                        catch(Exception e)
+                        {
+                            Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                            e.printStackTrace();
+                        }
+                        DeviceSetLogOnOff(deviceAPI, position);
+                        break;
+
+                    case 3:
+                        try
+                        {
+                            IntLightAPI intLightAPI = mWallPadAPI.Get_IntLightController();
+                            deviceAPI = intLightAPI;
+                        }
+                        catch(Exception e)
+                        {
+                            Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                            e.printStackTrace();
+                        }
+                        DeviceSetLogOnOff(deviceAPI, position);
+                        break;
+
+                    default:
+                        break;
+                }
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_RF_DOOR_CAMERA:
+            {
+                switch(DoorCamType)
+                {
+                    case 1:
+                        try
+                        {
+                            RFDoorCamAPI rfDoorCamAPI = mWallPadAPI.Get_RFDoorCamController();
+                            deviceAPI = rfDoorCamAPI;
+                        }
+                        catch(Exception e)
+                        {
+                            Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                            e.printStackTrace();
+                        }
+                        DeviceSetLogOnOff(deviceAPI, position);
+                        break;
+
+                    case 2:
+                        try
+                        {
+                            SmartKeyRfDoorAPI smartKeyRfDoorAPI = mWallPadAPI.Get_SmartKeyRfDoorController();
+                            deviceAPI = smartKeyRfDoorAPI;
+                        }
+                        catch(Exception e)
+                        {
+                            Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                            e.printStackTrace();
+                        }
+                        DeviceSetLogOnOff(deviceAPI, position);
+                        break;
+
+                    default:
+                        break;
+                }
+            }
+            break;
+            case Const.CONTROLLER_TYPE_SMART_RFCAM_SOUND_ONOFF:
+            {
+                boolean bSet = false;
+                if (position == 1)
+                {
+                    bSet = true;
+                }
+
+                if (DEBUG)  Log.d(TAG, "SetDevLogSet() " + "Smart RF Cam Sound on : " + bSet);
+
+                WallpadStatusData wallpadStatusData = new WallpadStatusData(mActivity);
+                wallpadStatusData.SetSmartKeyDetectionAlarm(bSet);
+                wallpadStatusData.closeDB();
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_HDC_GATEWAY:
+            {
+                try
+                {
+                    IGW200dAPI iGW200dAPI = mWallPadAPI.Get_IGW200dController();
+                    deviceAPI = iGW200dAPI;
+                }
+                catch(Exception e)
+                {
+                    Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                    e.printStackTrace();
+                }
+                DeviceSetLogOnOff(deviceAPI, position);
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_SMART_DIST:
+            {
+                try
+                {
+                    SdbAPI sdbAPI = mWallPadAPI.Get_SdbController();
+                    deviceAPI = sdbAPI;
+                }
+                catch(Exception e)
+                {
+                    Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                    e.printStackTrace();
+                }
+                DeviceSetLogOnOff(deviceAPI, position);
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_SMART_DIST_LIVEM:
+            {
+                Log.e(TAG, "[updateSetUsedToSubDevice] Const.CONTROLLER_TYPE_SMART_DIST_LIVEM");
+                try
+                {
+                    Sdb_LivingRoomLightAPI sdb_livingRoomLightAPI = mWallPadAPI.Get_Sdb_LivingRoomLightAPI();
+                    deviceAPI = sdb_livingRoomLightAPI;
+                }
+                catch(Exception e)
+                {
+                    Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                    e.printStackTrace();
+                }
+                DeviceSetLogOnOff(deviceAPI, position);
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_HDC_ALLLIGHT:
+            {
+                try
+                {
+                    AllLightHDCAPI allLightHDCAPI = mWallPadAPI.Get_AllLightHDCController();
+                    deviceAPI = allLightHDCAPI;
+                }
+                catch(Exception e)
+                {
+                    Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                    e.printStackTrace();
+                }
+                DeviceSetLogOnOff(deviceAPI, position);
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_ENERGY_METER_ROOMS_1:
+            {
+                try
+                {
+                    EnergyMeterAPI energyMeterAPI = mWallPadAPI.Get_EnergyMeterController();
+                    deviceAPI = energyMeterAPI;
+                }
+                catch(Exception e)
+                {
+                    Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                    e.printStackTrace();
+                }
+                DeviceSetLogOnOff(deviceAPI, position);
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_IDLE_POWER_SAVING_SWITCH_ROOMS_1:
+            {
+                try
+                {
+                    CutOffConcentAPI cutOffConcentAPI = mWallPadAPI.Get_CutOffConcentController();
+                    deviceAPI = cutOffConcentAPI;
+                }
+                catch(Exception e)
+                {
+                    Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                    e.printStackTrace();
+                }
+                DeviceSetLogOnOff(deviceAPI, position);
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_ENERGY_MODULE_ROOMS_1:
+            {
+                try
+                {
+                    EnergyModuleAPI energyModuleAPI = mWallPadAPI.Get_EnergyModuleController();
+                    deviceAPI = energyModuleAPI;
+                }
+                catch(Exception e)
+                {
+                    Log.e(TAG, "[Device_ApiLoad] - " + e.toString());
+                    e.printStackTrace();
+                }
+                DeviceSetLogOnOff(deviceAPI, position);
+            }
+            break;
+
+            case Const.CONTROLLER_TYPE_CALLAPP_TIMEOUT_ONOFF:
+            {
+                try
+                {
+                    WallpadDeviceSet devset = new WallpadDeviceSet(mActivity);
+
+                    if(position == 0) //사용안함
+                    {
+                        if (DEBUG)  Log.d(TAG, "position() : " + position + " - 사용안함");
+                        devset.Set_CallAppCallTimeout(false);
+                    }
+                    else if(position == 1) //사용함
+                    {
+                        if (DEBUG)  Log.d(TAG, "position() : " + position + " - 사용함");
+                        devset.Set_CallAppCallTimeout(true);
+                    }
+                    devset.closeDB();
+                }
+                catch(Exception e)
+                {
+                    e.printStackTrace();
+                }
+            }
+            break;
+
+            default:
+                break;
+        }
+    }
+
+    void DeviceSetLogOnOff(WallPadDevAPI DeviceAPI, int position) {
+        try {
+            if (DeviceAPI == null) {
+                Log.w(TAG, "[DeviceSetLogOnOff] DeviceAPI is null!!");
+                return;
+            }
+
+            if (position == 0) {
+                // 사용안함
+                if (DEBUG) Log.d(TAG, "[DeviceSetLogOnOff] position() : " + position + " - 사용안함");
+                deviceAPI.SetLogOnOff(false);
+            }
+            else if(position == 1) {
+                // 사용함
+                if (DEBUG) Log.d(TAG, "[DeviceSetLogOnOff] position() : " + position + " - 사용함");
+                deviceAPI.SetLogOnOff(true);
+            }
+            else {
+                Log.w(TAG, "[DeviceSetLogOnOff] position is not available!! -> position : " + position);
+            }
+        } catch (Exception e) {
+            Log.e(TAG, "[Exception] DeviceSetLogOnOff(WallPadDevAPI DeviceAPI, int position)");
+            e.printStackTrace();
+        }
+    }
+}

+ 79 - 350
ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/SettingDetailFunctionFragment.java

@@ -57,8 +57,6 @@ import com.artncore.wallpadapi.IntLightAPI;
 import com.artncore.wallpadapi.WallPadAPI;
 import com.artncore.managersetting.MainApplication;
 import com.artncore.managersetting.R;
-import com.artncore.wallpadapi.WallPadDevAPI;
-import com.util.LogUtil;
 
 
 /**
@@ -133,7 +131,7 @@ public class SettingDetailFunctionFragment extends Fragment
     public final int DETAIL_TYPE_SMARTKITCHEN_USE =                             DETAIL_TYPE_BASE + 44;
 
     public final int DETAIL_TYPE_EASYMODEUX_USE =                               DETAIL_TYPE_BASE + 45;
-    public final int DETAIL_TYPE_ESCAPELADDER_DOWN_SEND =						DETAIL_TYPE_BASE + 46;
+    public final int DETAIL_TYPE_ESCAPELADDER_DOWN_RECV =						DETAIL_TYPE_BASE + 46;
 
     public final int DETAIL_TYPE_SEND_BATHPHONE_VOLUMESET =                     DETAIL_TYPE_BASE + 47;
     public final int DETAIL_TYPE_SEND_KITCHENTV_VOLUMESET =                     DETAIL_TYPE_BASE + 48;
@@ -145,18 +143,15 @@ public class SettingDetailFunctionFragment extends Fragment
     public final int DETAIL_TYPE_STRANGER_RECORD_USE =                          DETAIL_TYPE_BASE + 52;
     public final int DETAIL_TYPE_EMERGENCY_CONTACT_SWITCH_USE =                 DETAIL_TYPE_BASE + 53;
     public final int DETAIL_TYPE_SENDWEATHER_REVERSE =                          DETAIL_TYPE_BASE + 54;
-    public final int DETAIL_TYPE_BATHSENSOR_USE =                               DETAIL_TYPE_BASE + 55;
+    public final int DETAIL_TYPE_SYSTEMAIRCON_HEAT_SUPPORT =                    DETAIL_TYPE_BASE + 55;
+    public final int DETAIL_TYPE_BATHSENSOR_USE =                               DETAIL_TYPE_BASE + 56;
 
-    public final int DETAIL_TYPE_REMOTECALLSVR_WEBPORT =                          DETAIL_TYPE_BASE + 56;
-    public final int DETAIL_TYPE_LCDKEEPER_USE =                                  DETAIL_TYPE_BASE + 57;
-    public final int DETAIL_TYPE_VENTI_SERVICE_QR_USE =                           DETAIL_TYPE_BASE + 58;
-    public final int DETAIL_TYPE_THEDISABLED_HOME_SET =                           DETAIL_TYPE_BASE + 59;
-    public final int DETAIL_TYPE_CO2_REDUCTION_SET =                              DETAIL_TYPE_BASE + 60;
-    public final int DETAIL_TYPE_HEATLIGHTROOM_NAMESET =                          DETAIL_TYPE_BASE + 61;
-
-    public final int DETAIL_TYPE_KAKAO_HOME =                                     DETAIL_TYPE_BASE + 62;
-    public final int DETAIL_TYPE_SMARTIOTCAM_FLIP =                               DETAIL_TYPE_BASE + 63;
-    public final int DETAIL_TYPE_CONSTRUCTION_SPECIAL_FUNC =                      DETAIL_TYPE_BASE + 64;
+    public final int DETAIL_TYPE_REMOTECALLSVR_WEBPORT =                          DETAIL_TYPE_BASE + 57;
+    public final int DETAIL_TYPE_LCDKEEPER_USE =                                  DETAIL_TYPE_BASE + 58;
+    public final int DETAIL_TYPE_VENTI_SERVICE_QR_USE =                           DETAIL_TYPE_BASE + 59;
+    public final int DETAIL_TYPE_THEDISABLED_HOME_SET =                           DETAIL_TYPE_BASE + 60;
+    public final int DETAIL_TYPE_CO2_REDUCTION_SET =                              DETAIL_TYPE_BASE + 61;
+    public final int DETAIL_TYPE_HEATLIGHTROOM_NAMESET =                          DETAIL_TYPE_BASE + 62;
 
     private Activity mActivity;
     private WallPadAPI mWallPadAPI;
@@ -324,14 +319,10 @@ public class SettingDetailFunctionFragment extends Fragment
             iniHdcLivLight_Make_P1();
             iniHdcLivLight_Make_P2();
         }
-        catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
-        }
         catch (Exception hdcLightEx)
         {
             Log.e(TAG, "Add (LIGHT_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT) EXCEPTION !!!");
-            //hdcLightEx.printStackTrace();
-            LogUtil.errorLogInfo("",TAG, hdcLightEx);
+            hdcLightEx.printStackTrace();
         }
 
         initRegistrationWirelessDoorLock();
@@ -401,7 +392,7 @@ public class SettingDetailFunctionFragment extends Fragment
 
         init_EasyModeUXUse();
 
-        initEscapeLadderDownSend();
+        initEscapeLadderDownRecv();
 
         initBathPhoneVolumeSetSend();
 
@@ -421,6 +412,8 @@ public class SettingDetailFunctionFragment extends Fragment
 
         initSendWeatherReverseUse();
 
+        initSystemAirconHeatSupport();
+
         init_BathSensorUse();
 
         init_LCDKeeperUse();
@@ -432,61 +425,25 @@ public class SettingDetailFunctionFragment extends Fragment
         init_CO2ReductionSet();
 
         init_HeatLightRoom_NameSet();
-
-        //카카오홈
-        initKakaoHome();
-
-        init_SmartIOTCam_Flip();
-        
-        init_Construction_SpecialFunc();
     }
 
-    private void initEscapeLadderDownSend()
+    private void initEscapeLadderDownRecv()
     {
-        int type = DETAIL_TYPE_ESCAPELADDER_DOWN_SEND;
-        String typeName = mActivity.getString(R.string.detail_function_escapeladder_down_send);
+        int type = DETAIL_TYPE_ESCAPELADDER_DOWN_RECV;
+        String typeName = mActivity.getString(R.string.detail_function_escapeladder_down_recv);
 
-        Spinner spinner = (Spinner)mRootView.findViewById(R.id.escapeladder_spinner);
+        SwitchButton switchButton = (SwitchButton)mRootView.findViewById(R.id.btn_switch_escapeladder_down_recv);
+        switchButton.setSwitchButtonChangedListener(this, type, typeName);
 
         List<String> listString = new ArrayList<String>();
-        listString.add("사용안함");
-        listString.add("윗집");
-        listString.add("아랫집");
-
-        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 escapeladder type");
-
-        SpinnerItemSelectedListener itemSelectedListener = new SpinnerItemSelectedListener(type, typeName);
-        spinner.setOnItemSelectedListener(itemSelectedListener);
-
-        int escapeLadderInitIdx = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-
-        List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ESCAPELADDER_DOWN_SEND);
-        if ((InfoList != null)) {
-            Log.d(TAG, "[initEscapeLadderDownSend] InfoList.size() = " + InfoList.size())            ;
-            if (InfoList.size() > 5) {
-                if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+        listString.add(mActivity.getString(R.string.do_used));
+        listString.add(mActivity.getString(R.string.do_not_used));
 
-                    int value = 0;
-                    if(InfoList.get(5).equals("윗집"))
-                    {
-                        value = 1;
-                    }
-                    else if(InfoList.get(5).equals("아랫집"))
-                    {
-                        value = 2;
-                    }
-                    escapeLadderInitIdx = value;
-                }
-            }
-        }
+        switchButton.setText(listString);
 
-        spinner.setSelection(escapeLadderInitIdx);
+        boolean initValue = mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ESCAPELADDER_DOWN_RECV);
+        Log.d(TAG, "[SettingDetail] Init Escape Ladder Down Recv : " + initValue);
+        switchButton.switchEnabled(initValue);
     }
 
     private void init_LivingEm_Kitchen_Light()
@@ -565,13 +522,9 @@ public class SettingDetailFunctionFragment extends Fragment
 						Log.i(TAG, "[mIntLightCheckHandler] - HdcLivLight_Program_Num = " + HdcLivLight_Program_Num);
 						m_IntLightCtrl.LightProgramSave(HdcLivLight_Program_Num);
 					}
-                    catch (RuntimeException re) {
-                        LogUtil.errorLogInfo("", TAG, re);
-                    }
-                    catch(Exception ex)
+					catch(Exception ex)
 					{
-						//ex.printStackTrace();
-						LogUtil.errorLogInfo("", TAG, ex);
+						ex.printStackTrace();
 					}
 				}
             }
@@ -790,27 +743,6 @@ public class SettingDetailFunctionFragment extends Fragment
     }
 
 
-    // init KakaoHome View(카카오홈)
-    private void initKakaoHome() {
-        int type = DETAIL_TYPE_KAKAO_HOME;
-        String typeName = mActivity.getString(R.string.detail_function_kakao_home_set);
-
-        SwitchButton switchButton = (SwitchButton)mRootView.findViewById(R.id.btn_switch_kakao_home_set);
-        switchButton.setSwitchButtonChangedListener(this, type, typeName);
-
-
-        List<String> listString = new ArrayList<String>();
-        listString.add(mActivity.getString(R.string.do_used));
-        listString.add(mActivity.getString(R.string.do_not_used));
-
-        switchButton.setText(listString);
-
-        WallpadDeviceSet devset = new WallpadDeviceSet(getContext());
-
-        boolean initValue = mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_KAKAO_HOME);
-        switchButton.switchEnabled(initValue);
-    }
-
     // init RFDoorCamera View
     private void initRFDoorCamera() {
         int type = DETAIL_TYPE_RF_DOOR_CAMERA;
@@ -839,7 +771,7 @@ public class SettingDetailFunctionFragment extends Fragment
             listString.add(Const.DOOR_CAMERA_TYPE_SMART_KEY_DOOR_CAMERA);
             listString.add(Const.DOOR_CAMERA_TYPE_RF_DOOR_CAMERA);
             listString.add(Const.DOOR_CAMERA_TYPE_UKS);
-            listString.add(Const.DOOR_CAMERA_TYPE_SMART_KEY_EXTERNAL);
+            listString.add(Const.DOOR_CAMERA_TYPE_IOT_SMART);
             listString.add(Const.DOOR_CAMERA_TYPE_HYOSUNG_SMART);
             listString.add(Const.DOOR_CAMERA_TYPE_DAEWOO_SMART);
         }
@@ -893,7 +825,7 @@ public class SettingDetailFunctionFragment extends Fragment
                         else if (InfoList.get(5).equals(Const.DOOR_CAMERA_TYPE_UKS)) {
                             DoorCameraInitIdx = 3;
                         }
-                        else if (InfoList.get(5).equals(Const.DOOR_CAMERA_TYPE_SMART_KEY_EXTERNAL)) {
+                        else if (InfoList.get(5).equals(Const.DOOR_CAMERA_TYPE_IOT_SMART)) {
                             DoorCameraInitIdx = 4;
                         }
                         else if (InfoList.get(5).equals(Const.DOOR_CAMERA_TYPE_HYOSUNG_SMART)) {
@@ -1770,7 +1702,8 @@ public class SettingDetailFunctionFragment extends Fragment
         List<String> listString = new ArrayList<String>();
         listString.add("기본");
         listString.add("메트로");
-        listString.add("효성");
+        listString.add("효성-제어있음");
+        listString.add("효성-제어없음");
         listString.add("힘찬");
 
         ArrayAdapter arrayAdapter = new ArrayAdapter(mActivity
@@ -1795,14 +1728,18 @@ public class SettingDetailFunctionFragment extends Fragment
                 {
                     value = 1;
                 }
-                else if(InfoList.get(5).equals("효성"))
+                else if(InfoList.get(5).equals("효성-제어있음"))
                 {
                     value = 2;
                 }
-                else if(InfoList.get(5).equals("힘찬"))
+                else if(InfoList.get(5).equals("효성-제어없음"))
                 {
                     value = 3;
                 }
+                else if(InfoList.get(5).equals("힘찬"))
+                {
+                    value = 4;
+                }
 
                 mainGuiIdx = value;
             }
@@ -2003,6 +1940,23 @@ public class SettingDetailFunctionFragment extends Fragment
         switchButton.switchEnabled(initValue);
     }
 
+    private void initSystemAirconHeatSupport() {
+        int type = DETAIL_TYPE_SYSTEMAIRCON_HEAT_SUPPORT;
+        String typeName = mActivity.getString(R.string.detail_function_systemaircon_heat_support);
+
+        SwitchButton switchButton = (SwitchButton)mRootView.findViewById(R.id.btn_switch_systemaircon_heat_support);
+        switchButton.setSwitchButtonChangedListener(this, type, typeName);
+
+        List<String> listString = new ArrayList<String>();
+        listString.add(mActivity.getString(R.string.do_used));
+        listString.add(mActivity.getString(R.string.do_not_used));
+
+        switchButton.setText(listString);
+
+        boolean initValue = mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SYSTEMAIRCON_HEAT_SUPPORT);
+        switchButton.switchEnabled(initValue);
+    }
+
     private void init_BathSensorUse() {
         int type = DETAIL_TYPE_BATHSENSOR_USE;
         String typeName = mActivity.getString(R.string.detail_function_bathsensor_use);
@@ -2145,68 +2099,6 @@ public class SettingDetailFunctionFragment extends Fragment
         switchButton.switchEnabled(initValue);
     }
 
-    private void init_SmartIOTCam_Flip() {
-        int type = DETAIL_TYPE_SMARTIOTCAM_FLIP;
-        String typeName = mActivity.getString(R.string.detail_function_smartiotcam_flip);
-
-        SwitchButton switchButton = (SwitchButton)mRootView.findViewById(R.id.btn_switch_smartiotcam_flip_set);
-        switchButton.setSwitchButtonChangedListener(this, type, typeName);
-
-        List<String> listString = new ArrayList<String>();
-        listString.add(mActivity.getString(R.string.do_used));
-        listString.add(mActivity.getString(R.string.do_not_used));
-
-        switchButton.setText(listString);
-
-        boolean initValue = mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SMARTIOTCAM_FLIP);
-        switchButton.switchEnabled(initValue);
-    }
-
-    private void init_Construction_SpecialFunc() {
-        int type = DETAIL_TYPE_CONSTRUCTION_SPECIAL_FUNC;
-        String typeName = mActivity.getString(R.string.detail_function_construction_special_function);
-
-        Spinner spinner = (Spinner)mRootView.findViewById(R.id.construction_special_func_spinner);
-
-        List<String> listString = new ArrayList<String>();
-        listString.add("사용안함");
-        listString.add("SK건설");
-        listString.add("대우건설");
-
-
-        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 construction firm type");
-
-        SpinnerItemSelectedListener itemSelectedListener = new SpinnerItemSelectedListener(type, typeName);
-        spinner.setOnItemSelectedListener(itemSelectedListener);
-
-        int webPortInitIdx = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
-
-        List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_CONSTRUCTION_SPECIAL_FUNC);
-        if ((InfoList != null) && (InfoList.size() > 5)) {
-            int value = 0;
-            if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
-                if(InfoList.get(5).equals("SK건설"))
-                {
-                    value = 1;
-                }
-                if(InfoList.get(5).equals("대우건설"))
-                {
-                    value = 2;
-                }
-
-                webPortInitIdx = value;
-            }
-        }
-
-        spinner.setSelection(webPortInitIdx);
-    }
-
     // reload View
     public void reloadView(int type) {
         if (DEBUG)  Log.d(TAG, "reloadView() type : " + type);
@@ -2272,7 +2164,7 @@ public class SettingDetailFunctionFragment extends Fragment
             case DETAIL_TYPE_SMARTPOST_USE:
             case DETAIL_TYPE_SMARTKITCHEN_USE:
             case DETAIL_TYPE_EASYMODEUX_USE:
-            case DETAIL_TYPE_ESCAPELADDER_DOWN_SEND:
+            case DETAIL_TYPE_ESCAPELADDER_DOWN_RECV:
             case DETAIL_TYPE_SEND_BATHPHONE_VOLUMESET:
             case DETAIL_TYPE_SEND_KITCHENTV_VOLUMESET:
             case DETAIL_TYPE_SEND_LIVINGEM_KITCHEN_LIGHT:
@@ -2281,6 +2173,7 @@ public class SettingDetailFunctionFragment extends Fragment
             case DETAIL_TYPE_STRANGER_RECORD_USE:
             case DETAIL_TYPE_EMERGENCY_CONTACT_SWITCH_USE:
             case DETAIL_TYPE_SENDWEATHER_REVERSE:
+            case DETAIL_TYPE_SYSTEMAIRCON_HEAT_SUPPORT:
             case DETAIL_TYPE_BATHSENSOR_USE:
             case DETAIL_TYPE_REMOTECALLSVR_WEBPORT:
             case DETAIL_TYPE_LCDKEEPER_USE:
@@ -2288,9 +2181,6 @@ public class SettingDetailFunctionFragment extends Fragment
             case DETAIL_TYPE_THEDISABLED_HOME_SET:
             case DETAIL_TYPE_CO2_REDUCTION_SET:
             case DETAIL_TYPE_HEATLIGHTROOM_NAMESET:
-            case DETAIL_TYPE_KAKAO_HOME:
-            case DETAIL_TYPE_SMARTIOTCAM_FLIP:
-            case DETAIL_TYPE_CONSTRUCTION_SPECIAL_FUNC:
                 break;
 
             default:
@@ -2413,12 +2303,9 @@ public class SettingDetailFunctionFragment extends Fragment
            IntentFilter filter = new IntentFilter();
            filter.addAction(BR_EVENT_SEND_SUBDEVICE_VOLUMESET);
            getContext().registerReceiver(mBRReceiver, filter, null, null);
-       } catch (RuntimeException re) {
-           Log.e(TAG, re.toString());
        } catch (Exception e) {
            Log.e(TAG, "[Exception] registerBRReceiver()");
-           //e.printStackTrace();
-           LogUtil.errorLogInfo("", TAG, e);
+           e.printStackTrace();
        }
     }
 
@@ -2427,12 +2314,9 @@ public class SettingDetailFunctionFragment extends Fragment
             if (mBRReceiver != null) {
                 getContext().unregisterReceiver(mBRReceiver);
             }
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
         } catch (Exception e) {
             Log.e(TAG, "[Exception] unRegisterBRReceiver()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("",TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -2454,12 +2338,9 @@ public class SettingDetailFunctionFragment extends Fragment
                         Toast.makeText(getContext(), strCallOwner + " 통화 음량값 전송 " + strResult + "!!", Toast.LENGTH_SHORT).show();
                     }
                 }
-            } catch (RuntimeException re) {
-                Log.e(TAG, re.toString());
             } catch (Exception e) {
                 Log.e(TAG, "[Exception] BRReceiver.onReceive()");
-                //e.printStackTrace();
-                LogUtil.errorLogInfo("", TAG, e);
+                e.printStackTrace();
             }
         }
     }
@@ -2601,14 +2482,10 @@ public class SettingDetailFunctionFragment extends Fragment
                         mIntent.putExtra("EVENT", BR_EVENT_ModemReset);
                         mActivity.sendBroadcast(mIntent);
                     }
-                    catch (RuntimeException re) {
-                        Log.e(TAG, re.toString());
-                    }
                     catch (Exception e)
                     {
                         Log.e(TAG, "[Exception] sendPSTNModemInit()");
-                        //e.printStackTrace();
-                        LogUtil.errorLogInfo("",TAG, e);
+                        e.printStackTrace();
                     }
                 }
                 break;
@@ -2623,12 +2500,9 @@ public class SettingDetailFunctionFragment extends Fragment
                         mIntent.setAction(BR_SubDeviceVolume);
                         mIntent.putExtra("EVENT", BR_EVENT_Bathphone_VolumeSetSend);
                         mActivity.sendBroadcast(mIntent);
-                    } catch (RuntimeException re) {
-                        Log.e(TAG, re.toString());
                     } catch (Exception e) {
                         Log.e(TAG, "[Exception] sendBathPhoneVolumeSet");
-                        //e.printStackTrace();
-                        LogUtil.errorLogInfo("", TAG, e);
+                        e.printStackTrace();
                     }
                 }
                 break;
@@ -2643,12 +2517,9 @@ public class SettingDetailFunctionFragment extends Fragment
                         mIntent.setAction(BR_SubDeviceVolume);
                         mIntent.putExtra("EVENT", BR_EVENT_KitchenTV_VolumeSetSend);
                         mActivity.sendBroadcast(mIntent);
-                    } catch (RuntimeException re) {
-                        Log.e(TAG, re.toString());
                     } catch (Exception e) {
                         Log.e(TAG, "[Exception] sendKitchenTVVolumeSet");
-                        //e.printStackTrace();
-                        LogUtil.errorLogInfo("",TAG, e);
+                        e.printStackTrace();
                     }
                 }
                 break;
@@ -2857,68 +2728,9 @@ public class SettingDetailFunctionFragment extends Fragment
             return;
 
         switch (type) {
-            case DETAIL_TYPE_ESCAPELADDER_DOWN_SEND:
-            {
-                int i = 4;
-
-                final String controllerName = mMainDatabaseManager.getSubDevID(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ESCAPELADDER_DOWN_SEND);
-                if (controllerName != null) {
-                    value = controllerName;
-
-                    value += "("
-                            + Const.CONTROLLER_SETTING_DO_USED
-                            + ")"
-                    ;
-
-                    String escapeladder = "사용안함";
-                    if(position == 1)
-                    {
-                        escapeladder = "윗집";
-                    }
-                    else if (position == 2)
-                    {
-                        escapeladder = "아랫집";
-                    }
-
-                    if (position <= 3) {
-                        value += Const.CONTROLLER_SETTING_TYPE
-                                + "("
-                                + escapeladder
-                                + ")"
-                        ;
-
-                        i += 2;
-                    }
-
-                    List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ESCAPELADDER_DOWN_SEND);
-                    if ((InfoList != null) && (InfoList.size() > 1)) {
-                        String deviceNo = InfoList.get(0);
-                        String circuitNo = InfoList.get(1);
-
-                        value = deviceNo
-                                + "("
-
-                                + circuitNo
-                                + ":"
-
-                                + value
-                        ;
-
-                        for (; i + 1 <InfoList.size(); i=i+2) {
-                            value += InfoList.get(i)
-                                    + "("
-                                    + InfoList.get(i+1)
-                                    + ")";
-                        }
-
-                        value += ")";
-
-                        Log.d(TAG, "[updateSetUsedToSubDevice] escapeladder value: " + value);
-                        mMainDatabaseManager.setSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ESCAPELADDER_DOWN_SEND, 0, value);
-                    }
-                }
-            }
-            break;
+            case DETAIL_TYPE_ESCAPELADDER_DOWN_RECV:
+                mMainDatabaseManager.updateSetUsedToSubDeviceSwitchButtonOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ESCAPELADDER_DOWN_RECV, position);
+                break;
 
             case DETAIL_TYPE_SEND_LIVINGEM_KITCHEN_LIGHT:
                 mMainDatabaseManager.updateSetUsedToSubDeviceSwitchButtonOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_LIVINGEM_KITCHEN_LIGHT, position);
@@ -2988,10 +2800,6 @@ public class SettingDetailFunctionFragment extends Fragment
                     {
                         typeName =  Const.DOOR_CAMERA_TYPE_SMART_KEY;
                     }
-                    else if(itemName.equals(Const.DOOR_CAMERA_TYPE_SMART_KEY_EXTERNAL))
-                    {
-                        typeName = Const.DOOR_CAMERA_TYPE_SMART_KEY_EXTERNAL;
-                    }
                     else if(itemName.equals(Const.DOOR_CAMERA_TYPE_UKS))
                     {
                         typeName =  Const.DOOR_CAMERA_TYPE_UKS;
@@ -3042,16 +2850,8 @@ public class SettingDetailFunctionFragment extends Fragment
                     if (Build.VERSION.SDK_INT > 23) {
                         if (typeName.equals(Const.DOOR_CAMERA_TYPE_IOT_SMART)) {
                             Log.i(TAG, "[updateSetUsedToSubDevice] Wallpad camera setting: AHD door cam + wallpad cam!!");
-                            WallpadDeviceSet deviceSet = new WallpadDeviceSet(getContext());
-                            if(deviceSet!=null)
-                            {
-                                boolean bFlip = deviceSet.Get_SmartIOTCamFlipUse();
-                                deviceSet.closeDB();
-                                Log.i(TAG, "[updateSetUsedToSubDevice] Wallpad camera setting: AHD door cam + wallpad cam!! bFlip [" + bFlip + "]");
-                                V40IF mV40IF = new V40IF();
-                                if (bFlip) mV40IF.setCameraConfigure(Const.WALLPAD_CAM_AHD_FRONT_FLIP);
-                                else mV40IF.setCameraConfigure(Const.WALLPAD_CAM_AHD_FRONT);
-                            }
+                            V40IF mV40IF = new V40IF();
+                            mV40IF.setCameraConfigure(Const.WALLPAD_CAM_AHD_FRONT);
                         }
                         else {
                             Log.i(TAG, "[updateSetUsedToSubDevice] Wallpad camera setting: normal door cam + wallpad cam!!");
@@ -3791,14 +3591,18 @@ public class SettingDetailFunctionFragment extends Fragment
                     }
                     else if (position == 2)
                     {
-                        selectValue = Const.MAIN_GUI_TYPE_HYOSUNG;
+                        selectValue = Const.MAIN_GUI_TYPE_HYOSUNG_CTR_ON;
                     }
                     else if (position == 3)
+                    {
+                        selectValue = Const.MAIN_GUI_TYPE_HYOSUNG_CTR_OFF;
+                    }
+                    else if (position == 4)
                     {
                         selectValue = Const.MAIN_GUI_TYPE_HIMCHAN;
                     }
 
-                    if (position <= 3) {
+                    if (position <= 4) {
                         value += Const.CONTROLLER_SETTING_TYPE
                                 + "("
                                 + selectValue
@@ -3973,71 +3777,6 @@ public class SettingDetailFunctionFragment extends Fragment
             }
             break;
 
-            case DETAIL_TYPE_CONSTRUCTION_SPECIAL_FUNC:
-            {
-                int i = 4;
-
-                final String controllerName = mMainDatabaseManager.getSubDevID(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_CONSTRUCTION_SPECIAL_FUNC);
-                if (controllerName != null) {
-                    value = controllerName;
-
-                    value += "("
-                            + Const.CONTROLLER_SETTING_DO_USED
-                            + ")"
-                    ;
-
-                    String firm = "사용안함";
-                    if(position == 1)
-                    {
-                        firm = "SK건설";
-                    }
-                    else if (position == 2)
-                    {
-                        firm = "대우건설";
-                    }
-
-                    if (position <= 2) {
-                        value += Const.CONTROLLER_SETTING_TYPE
-                                + "("
-                                + firm
-                                + ")"
-                        ;
-
-                        i += 2;
-
-                    }
-
-
-                    List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_CONSTRUCTION_SPECIAL_FUNC);
-                    if ((InfoList != null) && (InfoList.size() > 1)) {
-                        String deviceNo = InfoList.get(0);
-                        String circuitNo = InfoList.get(1);
-
-                        value = deviceNo
-                                + "("
-
-                                + circuitNo
-                                + ":"
-
-                                + value
-                        ;
-
-                        for (; i + 1 <InfoList.size(); i=i+2) {
-                            value += InfoList.get(i)
-                                    + "("
-                                    + InfoList.get(i+1)
-                                    + ")";
-                        }
-
-                        value += ")";
-
-                        Log.d(TAG, "[updateSetUsedToSubDevice] value: " + value);
-                        mMainDatabaseManager.setSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_CONSTRUCTION_SPECIAL_FUNC, 0, value);
-                    }
-                }
-            }
-            break;
-
             case DETAIL_TYPE_MOBILE_APP_AUTH:
                 mMainDatabaseManager.updateSetUsedToSubDeviceSwitchButtonOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_MOBILE_APP_USER_AUTH, position);
                 break;
@@ -4078,6 +3817,10 @@ public class SettingDetailFunctionFragment extends Fragment
                 mMainDatabaseManager.updateSetUsedToSubDeviceSwitchButtonOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SENDWEATHER_REVERSRE, position);
                 break;
 
+            case DETAIL_TYPE_SYSTEMAIRCON_HEAT_SUPPORT:
+                mMainDatabaseManager.updateSetUsedToSubDeviceSwitchButtonOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SYSTEMAIRCON_HEAT_SUPPORT, position);
+                break;
+
             case DETAIL_TYPE_BATHSENSOR_USE:
                 mMainDatabaseManager.updateSetUsedToSubDeviceSwitchButtonOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_BATHSENSOR_USE, position);
                 break;
@@ -4098,23 +3841,11 @@ public class SettingDetailFunctionFragment extends Fragment
                 mMainDatabaseManager.updateSetUsedToSubDeviceSwitchButtonOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_HEATLIGHTROOM_NAMESET, position);
                 break;
 
-            case DETAIL_TYPE_SMARTIOTCAM_FLIP:
-                mMainDatabaseManager.updateSetUsedToSubDeviceSwitchButtonOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SMARTIOTCAM_FLIP, position);
-                break;
-
             case DETAIL_TYPE_REGISTRATION_WIRELESS_DOOR_LOCK:
             case DETAIL_TYPE_SEND_HEART_BEAT:
             case DETAIL_TYPE_TOUCH_CALIBRATION:
                 break;
 
-            //카카오홈
-            case DETAIL_TYPE_KAKAO_HOME:
-                mMainDatabaseManager.updateSetUsedToSubDeviceSwitchButtonOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_KAKAO_HOME, position);
-                WallpadDeviceSet wdst = new WallpadDeviceSet(this.getContext());
-                wdst.Set_KakaoShow(true);
-                wdst.closeDB();
-                break;
-
             default:
                 break;
         }
@@ -4148,7 +3879,7 @@ public class SettingDetailFunctionFragment extends Fragment
             case DETAIL_TYPE_NON_INTERNET_SUPPORT:
             case DETAIL_TYPE_SMARTPOST_USE:
             case DETAIL_TYPE_SMARTKITCHEN_USE:
-            case DETAIL_TYPE_ESCAPELADDER_DOWN_SEND:
+            case DETAIL_TYPE_ESCAPELADDER_DOWN_RECV:
             case DETAIL_TYPE_SEND_LIVINGEM_KITCHEN_LIGHT:
             case DETAIL_TYPE_EASYMODEUX_USE:
             case DETAIL_TYPE_REMOTECALL_DOOROPEN_USE:
@@ -4159,15 +3890,12 @@ public class SettingDetailFunctionFragment extends Fragment
             case DETAIL_TYPE_BATHSENSOR_USE:
             case DETAIL_TYPE_LCDKEEPER_USE:
             case DETAIL_TYPE_VENTI_SERVICE_QR_USE:
-            case DETAIL_TYPE_KAKAO_HOME://카카오홈
-            case DETAIL_TYPE_SMARTIOTCAM_FLIP:
-            case DETAIL_TYPE_CONSTRUCTION_SPECIAL_FUNC:
-            case DETAIL_TYPE_ELEVATOR:
                 updateSetUsedToSubDevice(type, position, itemName);
 
                 MainApplication.getApplication().setReboot();
                 break;
 
+            case DETAIL_TYPE_ELEVATOR:
             case DETAIL_TYPE_FIELD_TYPE:
             case DETAIL_TYPE_TIME_SETTING:
             case DETAIL_TYPE_CUSTOMER_SERVICE_GUARD:
@@ -4184,6 +3912,7 @@ public class SettingDetailFunctionFragment extends Fragment
             case DETAIL_TYPE_SECURITY_INDOORMODE_SENSOR_USE:
             case DETAIL_TYPE_LOCATION_CONFIRM:
             case DETAIL_TYPE_RELIEF_CALL:
+            case DETAIL_TYPE_SYSTEMAIRCON_HEAT_SUPPORT:
             case DETAIL_TYPE_REMOTECALLSVR_WEBPORT:
             case DETAIL_TYPE_THEDISABLED_HOME_SET:
             case DETAIL_TYPE_CO2_REDUCTION_SET:

+ 14 - 54
ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/SettingEMLivingRegiFrag.java

@@ -44,7 +44,6 @@ import com.artncore.wallpadapi.Sdb_LivingRoomLightAPI;
 import com.artncore.wallpadapi.Sdb_LivingRoomLightAPI.CONCENT_REG_MODE;
 import com.artncore.wallpadapi.Sdb_LivingRoomLightAPI.LIGHT_REG_MODE;
 import com.artncore.wallpadapi.WallPadAPI;
-import com.util.LogUtil;
 
 import java.util.List;
 
@@ -278,12 +277,9 @@ public class SettingEMLivingRegiFrag extends Fragment implements SwitchButton.Sw
             init_outlet_regi_text();
 
             if (SDBLivingEMCheckHandler != null) SDBLivingEMCheckHandler.sendEmptyMessageDelayed(HANDLERMSG.CHECK_API_CONNECTION, 10);
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
         } catch (Exception e) {
             Log.e(TAG, "[Exception] initView()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
 
         //initRegistrationWirelessDoorLock();
@@ -495,12 +491,9 @@ public class SettingEMLivingRegiFrag extends Fragment implements SwitchButton.Sw
                 else {
                     Log.w(TAG, "[SDBLivingEMCtrlHandler] msg.what is not defined -> " + msg.what);
                 }
-            } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
-        } catch (Exception e) {
+            } catch (Exception e) {
                 Log.e(TAG, "[Exception] SDBLivingEMRegiStatusCheckHandler");
-                //e.printStackTrace();
-                LogUtil.errorLogInfo("", TAG, e);
+                e.printStackTrace();
             }
         }
     };
@@ -593,12 +586,9 @@ public class SettingEMLivingRegiFrag extends Fragment implements SwitchButton.Sw
 //                Log.i(TAG, "[SDBLivingEMCtrlHandler] mLivingEMData.Data.LedLight[" + i + "].Info.ToString [" + mLivingEMData.Data.LedLight[i].Info.ToString((byte) 0, (byte) i) + "]");
 //                Log.i(TAG, "[SDBLivingEMCtrlHandler] mLivingEMData.Data.LedLight[" + i + "].Data.ToString [" + mLivingEMData.Data.LedLight[i].Data.ToString((byte) 0, (byte) i) + "]");
 //            }
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
         } catch (Exception e) {
             Log.e(TAG, "[Exception] updateScreenObjects()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -614,12 +604,9 @@ public class SettingEMLivingRegiFrag extends Fragment implements SwitchButton.Sw
             BTN_LIGHT_REGI_START.setOnClickListener(mButtonClicks);
 
             BTN_LIGHT_REGI_START.setEnabled(false);
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
         } catch (Exception e) {
             Log.e(TAG, "[Exception] init_light_regi_start()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("",TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -632,12 +619,9 @@ public class SettingEMLivingRegiFrag extends Fragment implements SwitchButton.Sw
             BTN_LIGHT_REGI_EXTENDTIME.setOnClickListener(mButtonClicks);
 
             BTN_LIGHT_REGI_EXTENDTIME.setEnabled(false);
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
         } catch (Exception e) {
             Log.e(TAG, "[Exception] init_light_regi_extendtime()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("",TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -650,12 +634,9 @@ public class SettingEMLivingRegiFrag extends Fragment implements SwitchButton.Sw
             BTN_LIGHT_REGI_END.setOnClickListener(mButtonClicks);
 
             BTN_LIGHT_REGI_END.setEnabled(false);
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
         } catch (Exception e) {
             Log.e(TAG, "[Exception] init_light_regi_end()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -666,12 +647,9 @@ public class SettingEMLivingRegiFrag extends Fragment implements SwitchButton.Sw
             PGBAR_LIGHT_REGISTERING.setProgress(0);
             //pgbar_concent_registering.setEnabled(false);
             PGBAR_LIGHT_REGISTERING.setVisibility(View.INVISIBLE);
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
         } catch (Exception e) {
             Log.e(TAG, "[Exception] init_light_regi_pgbar()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("",TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -681,12 +659,9 @@ public class SettingEMLivingRegiFrag extends Fragment implements SwitchButton.Sw
         try {
             TXT_LIGHT_CNT = (TextView)mRootView.findViewById(R.id.tv_em_livingroom_light_regi_count);
             TXT_LIGHT_CNT.setText(strLightRegiCnt);
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
         } catch (Exception e) {
             Log.e(TAG, "[Exception] init_outlet_regi_text()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -704,12 +679,9 @@ public class SettingEMLivingRegiFrag extends Fragment implements SwitchButton.Sw
             BTN_OUTLET_REGI_START.setOnClickListener(mButtonClicks);
 
             BTN_OUTLET_REGI_START.setEnabled(false);
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
         } catch (Exception e) {
 	        Log.e(TAG, "[Exception] init_outlet_regi_start()");
-	        //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+	        e.printStackTrace();
         }
 	}
 
@@ -722,12 +694,9 @@ public class SettingEMLivingRegiFrag extends Fragment implements SwitchButton.Sw
             BTN_OUTLET_REGI_EXTENDTIME.setOnClickListener(mButtonClicks);
 
             BTN_OUTLET_REGI_EXTENDTIME.setEnabled(false);
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
         } catch (Exception e) {
             Log.e(TAG, "[Exception] init_outlet_regi_extendtime()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("",TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -740,12 +709,9 @@ public class SettingEMLivingRegiFrag extends Fragment implements SwitchButton.Sw
             BTN_OUTLET_REGI_END.setOnClickListener(mButtonClicks);
 
             BTN_OUTLET_REGI_END.setEnabled(false);
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
         } catch (Exception e) {
             Log.e(TAG, "[Exception] init_outlet_regi_end()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
 	}
 
@@ -756,12 +722,9 @@ public class SettingEMLivingRegiFrag extends Fragment implements SwitchButton.Sw
             PGBAR_OUTLET_REGISTERING.setProgress(0);
             //pgbar_concent_registering.setEnabled(false);
             PGBAR_OUTLET_REGISTERING.setVisibility(View.INVISIBLE);
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
         } catch (Exception e) {
             Log.e(TAG, "[Exception] init_outlet_regi_pgbar()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -771,12 +734,9 @@ public class SettingEMLivingRegiFrag extends Fragment implements SwitchButton.Sw
         try {
             TXT_OUTLET_CNT = (TextView)mRootView.findViewById(R.id.tv_em_livingroom_outlet_regi_count);
             TXT_OUTLET_CNT.setText(strOutletRegiCnt);
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
         } catch (Exception e) {
             Log.e(TAG, "[Exception] init_outlet_regi_text()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("",TAG, e);
+            e.printStackTrace();
         }
     }
 

+ 1002 - 1010
ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/SettingEnergyManagementFragment.java

@@ -1,1010 +1,1002 @@
-package com.artncore.managersetting.ui.fragments;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import kr.co.icontrols.wallpadsupport.Version;
-import android.app.Activity;
-import android.os.Bundle;
-//import android.support.v4.app.Fragment;
-import androidx.fragment.app.Fragment;
-import androidx.core.view.MotionEventCompat;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.View.OnTouchListener;
-import android.widget.ListView;
-
-
-import com.artncore.WallPadDataMgr.WallpadStatusData;
-import com.artncore.managersetting.dao.MainDatabaseManager;
-import com.artncore.managersetting.domain.Const;
-import com.artncore.managersetting.domain.ControllerVO;
-import com.artncore.managersetting.ui.ControllerListAdapter;
-import com.artncore.managersetting.ui.activities.MainActivity;
-import com.artncore.managersetting.util.StringUtil;
-import com.artncore.wallpadapi.WallPadAPI;
-import com.artncore.managersetting.MainApplication;
-import com.artncore.managersetting.R;
-
-/**
- * A list fragment representing a list of Items. This fragment also supports
- * tablet devices by allowing list items to be given an 'activated' state upon
- * selection. This helps indicate which item is currently being viewed in a
- * {link ItemDetailFragment}.
- * <p>
- * Activities containing this fragment MUST implement the {link Callbacks}
- * interface.
- */
-public class SettingEnergyManagementFragment extends Fragment
-        implements ControllerListAdapter.ItemChangedListener {
-
-    private static final String TAG = "SettingEnergyManagementFragment";
-
-    private final boolean DEBUG = true;
-
-    public final int ENERGY_TYPE_BASE =         Const.COMMON_TYPE_BASE;
-    public final int ENERGY_TYPE_ENERGY_METER =                 ENERGY_TYPE_BASE + 0;
-    public final int ENERGY_TYPE_IDLE_POWER_SAVING_SWITCH =     ENERGY_TYPE_BASE + 1;
-    public final int ENERGY_TYPE_ENERGY_MODULE =                ENERGY_TYPE_BASE + 2;
-    public final int ENERGY_TYPE_REALTIME_MESURING_METER =      ENERGY_TYPE_BASE + 3;
-    public final int ENERGY_TYPE_REMOTE_MESURING_METER =        ENERGY_TYPE_BASE + 4;
-    public final int ENERGY_TYPE_EMS_SUPPORT =                  ENERGY_TYPE_BASE + 5;
-    public final int ENERGY_TYPE_ENERGY_COST_TABLE =            ENERGY_TYPE_BASE + 6;
-    public final int ENERGY_TYPE_ENERGY_SERVER_CONNECT =        ENERGY_TYPE_BASE + 7;
-    public final int ENERGY_TYPE_ZERO_ENERGY_HOUSE =            ENERGY_TYPE_BASE + 8;
-    public final int ENERGY_TYPE_DISTRIBUTION_BOARD =           ENERGY_TYPE_BASE + 9;
-    public final int ENERGY_TYPE_POWERCONTROLLER =              ENERGY_TYPE_BASE + 10;
-
-
-    public final int ENERGY_TYPE_REMOTE_MESURING_METER_DEFAULT_VALUE =             3;
-
-    private Activity mActivity;
-    private WallPadAPI mWallPadAPI;
-    private MainDatabaseManager mMainDatabaseManager;
-
-    private ListView mControllerListView;
-    private List<ControllerVO> mControllerList = new ArrayList<ControllerVO>();
-
-    //[DB]
-    WallpadStatusData DBMGR = null;
-
-    //[Model]
-    private int ModelType = Version.getModelType();
-
-    // constructor
-    public SettingEnergyManagementFragment() {
-    }
-
-    @Override
-    public void onAttach(Activity activity) {
-        super.onAttach(activity);
-
-        mActivity = activity;
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        if (DEBUG)  Log.d(TAG, "onCreate() ");
-
-        super.onCreate(savedInstanceState);
-
-        mWallPadAPI = MainActivity.getWallPadAPI();
-        mMainDatabaseManager = MainActivity.getMainDatabaseManager();
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-        View rootView = (View) inflater.inflate(R.layout.controller_setting_container,
-                container, false);
-
-        return (View)rootView;
-    }
-
-    @Override
-    public void onViewCreated(View view, Bundle savedInstanceState) {
-        super.onViewCreated(view, savedInstanceState);
-
-        if (savedInstanceState != null) {}
-
-        mControllerListView = (ListView) view.findViewById(R.id.controller_list);
-
-        mControllerListView.setOnTouchListener(new OnTouchListener() {
-
-            @Override
-            public boolean onTouch(View v, MotionEvent event) {
-                switch (MotionEventCompat.getActionMasked(event)) {
-
-                    case MotionEvent.ACTION_UP:
-                        MainActivity.setFinishTimerReset();
-                        break;
-
-                    default:
-                        break;
-                }
-                return false;
-            }
-        });
-
-        initListView();
-    }
-
-    /* (non-Javadoc)
-     * @see android.support.v4.app.Fragment#onDestroy()
-     */
-    @Override
-    public void onDestroy() {
-        // TODO Auto-generated method stub
-        super.onDestroy();
-        if(DBMGR != null) DBMGR.closeDB();
-    }
-
-    @Override
-    public void onDetach() {
-        super.onDetach();
-
-        mWallPadAPI = null;
-    }
-
-
-    @Override
-    public void onSaveInstanceState(Bundle outState) {
-        super.onSaveInstanceState(outState);
-    }
-
-
-    // init ListView
-    private void initListView() {
-        getControllerList();
-
-        ControllerListAdapter adapter = new ControllerListAdapter(mActivity
-                , R.layout.setting_controller_item
-                , mControllerList
-                , this);
-
-        mControllerListView.setAdapter(adapter);
-    }
-
-
-    // return controllerList
-    private void getControllerList() {
-        if (mWallPadAPI != null) {
-            if (ModelType == Version.MODEL_TYPE.IHN_1020GL
-                    || ModelType == Version.MODEL_TYPE.IHN_1010GL || ModelType == Version.MODEL_TYPE.IHN_1010GL_I) {
-                addControllerVO(ENERGY_TYPE_ENERGY_METER); //아이파크 에너지
-                addControllerVO(ENERGY_TYPE_IDLE_POWER_SAVING_SWITCH); //대기전력 차단스위치
-                addControllerVO(ENERGY_TYPE_ENERGY_MODULE); //에너지 모듈
-            }
-            else if (ModelType == Version.MODEL_TYPE.IHN_D101 || ModelType == Version.MODEL_TYPE.IHN_D101_I
-                    || ModelType == Version.MODEL_TYPE.IHN_D101K || ModelType == Version.MODEL_TYPE.IHN_D101K_I) {
-                addControllerVO(ENERGY_TYPE_DISTRIBUTION_BOARD); // 분전반
-            }
-            addControllerVO(ENERGY_TYPE_REALTIME_MESURING_METER);
-            addControllerVO(ENERGY_TYPE_REMOTE_MESURING_METER); //원격검침
-            addControllerVO(ENERGY_TYPE_ENERGY_SERVER_CONNECT); //에너지관리서버 연동
-            addControllerVO(ENERGY_TYPE_ZERO_ENERGY_HOUSE); //제로에너지하우스
-            addControllerVO(ENERGY_TYPE_POWERCONTROLLER); //통합전력제어기
-
-        }
-    }
-
-
-    // controllerList에 type유형의 controller를 추가
-    private void addControllerVO(int type) {
-        ControllerVO controllerVO = null;
-
-        switch (type) {
-            case ENERGY_TYPE_ENERGY_METER:
-            {
-                int energyMeterCount = Const.CONTROLLER_ONOFF_COUNT;
-                // TO DO
-                int energyMeterCurrent = 0;
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ENERGY_DEVICES);
-                if ((InfoList != null) && (InfoList.size() > 3)) {
-                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
-                        energyMeterCurrent = 1;
-                    }
-                }
-
-                if (DEBUG)  Log.d(TAG, "energyMeterCurrent : " + energyMeterCurrent);
-
-                String controllerName = mActivity.getString(R.string.setting_energy_energy_meter);
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , energyMeterCount
-                        , energyMeterCurrent
-                );
-            }
-            break;
-
-            case ENERGY_TYPE_IDLE_POWER_SAVING_SWITCH:
-            {
-                int powerSavingCount = Const.CONTROLLER_ONOFF_COUNT;
-                // TO DO
-                int powerSavingCurrent = 0;
-
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_IDLE_POWER_SAVING_SWITCH);
-                if ((InfoList != null) && (InfoList.size() > 3)) {
-                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
-                        powerSavingCurrent = 1;
-                    }
-                }
-
-                if (DEBUG)  Log.d(TAG, "powerSavingCurrent : " + powerSavingCurrent);
-
-                String controllerName = mActivity.getString(R.string.setting_energy_idle_power_saving_switch);
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , powerSavingCount
-                        , powerSavingCurrent
-                );
-            }
-            break;
-
-            case ENERGY_TYPE_ENERGY_MODULE:
-            {
-                int powerSavingCount = Const.CONTROLLER_ONOFF_COUNT;
-                // TO DO
-                int energyModuleCurrent = 0;
-
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ENERGY_MODULE);
-                if ((InfoList != null) && (InfoList.size() > 3)) {
-                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
-                        energyModuleCurrent = 1;
-                    }
-                }
-
-                if (DEBUG)  Log.d(TAG, "EnergyModuleCurrent : " + energyModuleCurrent);
-
-                String controllerName = mActivity.getString(R.string.setting_energy_energy_module);
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , powerSavingCount
-                        , energyModuleCurrent
-                );
-            }
-            break;
-
-            case ENERGY_TYPE_ENERGY_SERVER_CONNECT:
-            {
-                int Count = Const.CONTROLLER_ONOFF_COUNT;
-                // TO DO
-                int Current = 0;
-
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ENERGY_SERVER_CONNECT);
-                if ((InfoList != null) && (InfoList.size() > 3)) {
-                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
-                        Current = 1;
-                    }
-                }
-
-                if (DEBUG)  Log.d(TAG, "Energy Server Connect Current : " + Current);
-
-                String controllerName = mActivity.getString(R.string.setting_energy_energy_server_connect);
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , Count
-                        , Current
-                );
-            }
-            break;
-
-            case ENERGY_TYPE_ZERO_ENERGY_HOUSE:
-            {
-                int Count = Const.CONTROLLER_ONOFF_COUNT;
-                // TO DO
-                int Current = 0;
-
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ZERO_ENERGY_HOUSE);
-                if ((InfoList != null) && (InfoList.size() > 3)) {
-                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
-                        Current = 1;
-                    }
-                }
-
-                if (DEBUG)  Log.d(TAG, "Zero Energy House Current : " + Current);
-
-                String controllerName = mActivity.getString(R.string.setting_energy_zero_energy_house);
-
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , Count
-                        , Current
-                );
-            }
-            break;
-
-            case ENERGY_TYPE_REALTIME_MESURING_METER:
-            {
-                int meterCount = Const.CONTROLLER_REALTIME_MEASURING_METER_MAX_COUNT;
-                int meterCurrent = 0; //mWallpadStatusData.GetHeatingCNT();
-
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_REALTIME_MEASURING_METER);
-                if ((InfoList != null) && (InfoList.size() < 5)) {
-                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
-                        String strType = InfoList.get(1);
-                        if (DEBUG)  Log.d(TAG, "ENERGY_TYPE_REALTIME_MESURING_METER : " + strType+"종");
-
-                        if(Integer.parseInt(strType) == 5)
-                        {
-                            meterCurrent = 2;
-                        }
-                        else if(Integer.parseInt(strType) == 3)
-                        {
-                            meterCurrent = 1;
-                        }
-                        else
-                        {
-                            meterCurrent = 0;
-                        }
-                    }
-                }
-
-                List<String> itemList = new ArrayList<String>();
-                itemList.add(mActivity.getString(R.string.do_not_used));
-                itemList.add(mActivity.getString(R.string.contoller_realtime_masuring_meter_item_3));
-                itemList.add(mActivity.getString(R.string.contoller_realtime_masuring_meter_item_5));
-
-                String controllerName = mActivity.getString(R.string.contoller_realtime_masuring_meter);
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , meterCount
-                        , meterCurrent
-                        , itemList
-                );
-            }
-            break;
-
-            case ENERGY_TYPE_REMOTE_MESURING_METER:
-            {
-                int remoteMeterCount = Const.CONTROLLER_REMOTE_MEASURING_METER_MAX_COUNT;
-                int remoteMeterCurrent = ENERGY_TYPE_REMOTE_MESURING_METER_DEFAULT_VALUE;
-
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_REMOTE_MESURING_METER);
-                if ((InfoList != null) && (InfoList.size() > 3))
-                {
-                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3)))
-                    {
-                        remoteMeterCurrent = 0;
-                    }
-                    else if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3)))
-                    {
-                        int circuitCount = StringUtil.getInt(InfoList.get(1), false);
-
-                        if (circuitCount == 2)
-                        {
-                            remoteMeterCurrent = 1;
-                        }
-                        else if (circuitCount == 3)
-                        {
-                            remoteMeterCurrent = 2;
-                        }
-                        else if (circuitCount == 5)
-                        {
-                            remoteMeterCurrent = 3;
-                        }
-                        else if (circuitCount == 6)
-                        {
-                            remoteMeterCurrent = 4;
-                        }
-                    }
-                }
-
-                if (DEBUG) Log.d(TAG, "RemoteMeterCurrent : " + remoteMeterCurrent);
-
-                List<String> itemList = new ArrayList<String>();
-                itemList.add(mActivity.getString(R.string.do_not_used));
-                itemList.add(mActivity.getString(R.string.contoller_realtime_masuring_meter_item_2));
-                itemList.add(mActivity.getString(R.string.contoller_realtime_masuring_meter_item_3));
-                // itemList.add(mActivity.getString(R.string.contoller_realtime_masuring_meter_item_4));
-                itemList.add(mActivity.getString(R.string.contoller_realtime_masuring_meter_item_5));
-                itemList.add(mActivity.getString(R.string.contoller_realtime_masuring_meter_item_6));
-
-                String controllerName = mActivity.getString(R.string.setting_additional_remote_mesuring_meter);
-
-                controllerVO = new ControllerVO(type, controllerName, remoteMeterCount, remoteMeterCurrent, itemList);
-
-                mControllerList.add(controllerVO);
-
-                if(InfoList!=null)
-                {
-                    if (DEBUG) Log.d(TAG, "InfoList.get(4) : " + InfoList.get(4)); // EMS
-                    if (DEBUG) Log.d(TAG, "InfoList.get(5) : " + InfoList.get(5)); // 사용함
-                }
-
-                // or
-                // 사용안함
-
-                int emsSupportCount = Const.CONTROLLER_ONOFF_COUNT;
-                // TO DO
-                int emsSupportCurrent = 0;
-
-                if(InfoList!=null)
-                {
-                    if (Const.REMOTE_METERING_EMS.equals(InfoList.get(4)))
-                    {
-                        if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(5)))
-                        {
-                            emsSupportCurrent = 0;
-                        }
-                        else if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(5)))
-                        {
-                            emsSupportCurrent = 1;
-                        }
-
-                    }
-                }
-
-
-                if (DEBUG) Log.d(TAG, "ENERGY_TYPE_EMS_SUPPORT : " + emsSupportCurrent);
-
-                controllerName = mActivity.getString(R.string.setting_energy_ems_support);
-
-                controllerVO = new ControllerVO(ENERGY_TYPE_EMS_SUPPORT, controllerName, emsSupportCount, emsSupportCurrent);
-
-                mControllerList.add(controllerVO);
-
-
-
-                int costSupportCount = Const.CONTROLLER_ONOFF_COUNT;
-                int costSupportCurrent = 0;
-
-                if(InfoList!=null && InfoList.size() > 6)
-                {
-                    if (Const.REMOTE_METERING_COST_TABLE.equals(InfoList.get(6)))
-                    {
-                        if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(7)))
-                        {
-                            costSupportCurrent = 0;
-                        }
-                        else if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(7)))
-                        {
-                            costSupportCurrent = 1;
-                        }
-                    }
-                }
-                else
-                {
-
-                }
-
-                if (DEBUG) Log.d(TAG, "ENERGY_TYPE_COST_TABLE_SUPPORT : " + costSupportCurrent);
-                controllerName = mActivity.getString(R.string.setting_energy_cost_table_support);
-                controllerVO = new ControllerVO(ENERGY_TYPE_ENERGY_COST_TABLE, controllerName, costSupportCount, costSupportCurrent);
-
-                mControllerList.add(controllerVO);
-
-
-
-            }
-            break;
-
-            case ENERGY_TYPE_DISTRIBUTION_BOARD:
-            {
-                int SdbCount = Const.CONTROLLER_ONOFF_COUNT;
-                int SdbCurrent = 0;
-
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DISTRIBUTION);
-                if ((InfoList != null) && (InfoList.size() > 3)) {
-                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
-                        String strType = InfoList.get(5);
-                        if (DEBUG)  Log.d(TAG, "ENERGY_TYPE_DISTRIBUTION_BOARD : " + strType);
-                        if(strType.equals(getString(R.string.contoller_energy_distribution_smart)))
-                        {
-                            SdbCurrent = 1;
-                        }
-                        else if(strType.equals(getString(R.string.contoller_energy_distribution_knx)))
-                        {
-                            SdbCurrent = 2;
-                        }
-                        else
-                        {
-                            SdbCurrent = 0;
-                        }
-                    }
-                }
-
-                List<String> itemList = new ArrayList<String>();
-                itemList.add(mActivity.getString(R.string.do_not_used));
-                itemList.add(mActivity.getString(R.string.contoller_energy_distribution_smart));
-                itemList.add(mActivity.getString(R.string.contoller_energy_distribution_knx));
-
-                String controllerName = mActivity.getString(R.string.contoller_energy_distribution);
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , SdbCount
-                        , SdbCurrent
-                        , itemList
-                );
-            }
-            break;
-
-            case ENERGY_TYPE_POWERCONTROLLER:
-            {
-                int PowerCtrlCount = Const.CONTROLLER_ONOFF_COUNT;
-                int PowerCtrlCurrent = 0;
-
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_POWERCONTROLLER);
-                if ((InfoList != null) && (InfoList.size() > 3)) {
-                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
-                        String strType = InfoList.get(5);
-                        if (DEBUG)  Log.d(TAG, "ENERGY_TYPE_POWERCONTROLLER : " + strType);
-                        if(strType.equals(getString(R.string.contoller_powercontroller_direct)))
-                        {
-                            PowerCtrlCurrent = 1;
-                        }
-                        else if(strType.equals(getString(R.string.contoller_powercontroller_measure)))
-                        {
-                            PowerCtrlCurrent = 2;
-                        }
-                        else
-                        {
-                            PowerCtrlCurrent = 0;
-                        }
-                    }
-                }
-
-                List<String> itemList = new ArrayList<String>();
-                itemList.add(mActivity.getString(R.string.contoller_powercontroller_basic));
-                itemList.add(mActivity.getString(R.string.contoller_powercontroller_direct));
-                itemList.add(mActivity.getString(R.string.contoller_powercontroller_measure));
-
-                String controllerName = mActivity.getString(R.string.contoller_energy_powercontroller);
-                controllerVO = new ControllerVO(type
-                        , controllerName
-                        , PowerCtrlCount
-                        , PowerCtrlCurrent
-                        , itemList
-                );
-            }
-            break;
-
-            default:
-                break;
-        }
-
-        if (controllerVO != null) mControllerList.add(controllerVO);
-    }
-
-    // update item to DB
-    private void updateSetUsedToSubDevice(int type, final int position, final String itemName) {
-        if (DEBUG)  Log.d(TAG, "updateSetUsedToSubDevice() type : " + type
-                + ", position : " + position
-                + ", itemName : " + itemName
-        );
-        MainActivity.setFinishTimerReset();
-
-        String value = "";
-
-        if (itemName == null)
-            return;
-
-        switch (type) {
-            case ENERGY_TYPE_ENERGY_METER:
-            {
-                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ENERGY_DEVICES, position);
-            }
-            break;
-
-            case ENERGY_TYPE_IDLE_POWER_SAVING_SWITCH:
-            {
-                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_IDLE_POWER_SAVING_SWITCH, position);
-            }
-            break;
-
-            case ENERGY_TYPE_ENERGY_MODULE:
-            {
-                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ENERGY_MODULE, position);
-            }
-            break;
-
-            case ENERGY_TYPE_ENERGY_SERVER_CONNECT:
-            {
-                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ENERGY_SERVER_CONNECT, position);
-            }
-            break;
-
-            case ENERGY_TYPE_ZERO_ENERGY_HOUSE:
-            {
-                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ZERO_ENERGY_HOUSE, position);
-                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ENERGY_DEVICES, position);
-                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ENERGY_MODULE, position);
-            }
-            break;
-
-            case ENERGY_TYPE_REALTIME_MESURING_METER:
-            {
-                final String controllerName = mMainDatabaseManager.getSubDevID(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_REALTIME_MEASURING_METER);
-                String TempCircuitNo = "5";
-                if (controllerName != null)
-                {
-                    value = controllerName;
-                    if (position == 0)
-                    {
-                        value += "("
-                                + Const.CONTROLLER_SETTING_DO_NOT_USED
-                                + ")"
-                        ;
-                    }
-                    else
-                    {
-                        if (itemName.equals(Const.REALTIME_MEASURING_METER_TYPE_3))
-                        {
-                            TempCircuitNo = "3";
-                        }
-                        else if (itemName.equals(Const.REALTIME_MEASURING_METER_TYPE_5))
-                        {
-                            TempCircuitNo = "5";
-                        }
-                        value += "("
-                                + Const.CONTROLLER_SETTING_DO_USED
-                                + ")"
-                        ;
-                    }
-
-
-                    List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_REALTIME_MEASURING_METER);
-                    if ((InfoList != null) && (InfoList.size() > 1)) {
-                        String deviceNo = InfoList.get(0);
-                        //String circuitNo = InfoList.get(1);
-
-                        value = deviceNo
-                                + "("
-
-                                + TempCircuitNo
-                                + ":"
-
-                                + value
-
-                                + ")"
-                        ;
-
-                        mMainDatabaseManager.setSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_REALTIME_MEASURING_METER, 0, value);
-                    }
-                }
-            }
-            break;
-
-            case ENERGY_TYPE_REMOTE_MESURING_METER:
-            {
-                int itemType = MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_REMOTE_MESURING_METER;
-                String controllerName = mMainDatabaseManager.getSubDevID(itemType);
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(itemType);
-
-                if (controllerName != null) {
-                    value = controllerName;
-                    if (position == 0) {
-                        value += "("
-                                + Const.CONTROLLER_SETTING_DO_NOT_USED
-                                + ")"
-                        ;
-                    }
-                    else {
-                        value += "("
-                                + Const.CONTROLLER_SETTING_DO_USED
-                                + ")"
-                        ;
-                    }
-
-                    if ((InfoList != null) && (InfoList.size() > 1)) {
-                        String deviceNo = InfoList.get(0);
-                        String circuitNo = InfoList.get(1);
-                        if (position > 0)
-                        {
-                            if (itemName.equals(Const.REALTIME_MEASURING_METER_TYPE_2))
-                            {
-                                circuitNo = "2";
-                            }
-                            else if (itemName.equals(Const.REALTIME_MEASURING_METER_TYPE_3))
-                            {
-                                circuitNo = "3";
-                            }
-                            else if (itemName.equals(Const.REALTIME_MEASURING_METER_TYPE_5))
-                            {
-                                circuitNo = "5";
-                            }
-                            else if (itemName.equals(Const.REALTIME_MEASURING_METER_TYPE_6))
-                            {
-                                circuitNo = "6";
-                            }
-                        }
-
-                        value = deviceNo
-                                + "("
-
-                                + circuitNo
-                                + ":"
-
-                                + value
-                        ;
-
-                        for (int i=4; i + 1 <InfoList.size(); i=i+2) {
-                            value += InfoList.get(i)
-                                    + "("
-                                    + InfoList.get(i+1)
-                                    + ")"
-                            ;
-                        }
-                        value += ")"
-                        ;
-                        //devInfo = "1(5:원격검침(사용함)EMS(사용함))";
-
-                        mMainDatabaseManager.setSettingDataSubDev(itemType, 0, value);
-                    }
-                }
-            }
-            break;
-
-            case ENERGY_TYPE_EMS_SUPPORT:
-            {
-                int itemType = MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_REMOTE_MESURING_METER;
-                String controllerName = mMainDatabaseManager.getSubDevID(itemType);
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(itemType);
-
-                if (controllerName != null)
-                {
-
-                    if ((InfoList != null) && (InfoList.size() > 1))
-                    {
-                        String deviceNo = InfoList.get(0);
-                        String circuitNo = InfoList.get(1);
-                        String UseOrNot = InfoList.get(3);
-                        String EmsSupport;
-                        value = deviceNo + "("
-
-                                + circuitNo + ":"
-
-                                + controllerName + "("
-
-                                + UseOrNot + ")";
-
-                        if (Const.REMOTE_METERING_EMS.equals(InfoList.get(4)))
-                        {
-                            if (position == 0)
-                            {
-                                EmsSupport = "(" + Const.CONTROLLER_SETTING_DO_NOT_USED + ")";
-                            }
-                            else
-                            {
-                                EmsSupport = "(" + Const.CONTROLLER_SETTING_DO_USED + ")";
-                            }
-                            value += Const.REMOTE_METERING_EMS + EmsSupport;
-                        }
-
-                        value += Const.REMOTE_METERING_COST_TABLE + "("+InfoList.get(7)+")";
-
-                        value += ")";
-
-                        mMainDatabaseManager.setSettingDataSubDev(itemType, 0, value);
-
-                    }
-                }
-            }
-            break;
-
-            case ENERGY_TYPE_ENERGY_COST_TABLE:
-            {
-                int itemType = MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_REMOTE_MESURING_METER;
-                String controllerName = mMainDatabaseManager.getSubDevID(itemType);
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(itemType);
-
-                if (controllerName != null)
-                {
-
-                    if ((InfoList != null) && (InfoList.size() > 1))
-                    {
-                        String deviceNo = InfoList.get(0);
-                        String circuitNo = InfoList.get(1);
-                        String UseOrNot = InfoList.get(3);
-
-                        String CostTableSupport;
-                        value = deviceNo + "("
-
-                                + circuitNo + ":"
-
-                                + controllerName + "("
-
-                                + UseOrNot + ")" + Const.REMOTE_METERING_EMS + "(" + InfoList.get(5) + ")";
-
-                        if(InfoList.size() > 6)
-                        {
-                            if (Const.REMOTE_METERING_COST_TABLE.equals(InfoList.get(6)))
-                            {
-                                if (position == 0)
-                                {
-                                    CostTableSupport = "(" + Const.CONTROLLER_SETTING_DO_NOT_USED + ")";
-                                }
-                                else
-                                {
-                                    CostTableSupport = "(" + Const.CONTROLLER_SETTING_DO_USED + ")";
-                                }
-                                value += Const.REMOTE_METERING_COST_TABLE + CostTableSupport;
-                            }
-                        }
-                        else
-                        {
-                            if (position == 0)
-                            {
-                                CostTableSupport = "(" + Const.CONTROLLER_SETTING_DO_NOT_USED + ")";
-                            }
-                            else
-                            {
-                                CostTableSupport = "(" + Const.CONTROLLER_SETTING_DO_USED + ")";
-                            }
-                            value += Const.REMOTE_METERING_COST_TABLE + CostTableSupport;
-                        }
-
-                        value += ")";
-
-                        mMainDatabaseManager.setSettingDataSubDev(itemType, 0, value);
-                    }
-                }
-            }
-            break;
-
-            case ENERGY_TYPE_DISTRIBUTION_BOARD:
-            {
-                int itemType = MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DISTRIBUTION;
-                String controllerName = mMainDatabaseManager.getSubDevID(itemType);
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(itemType);
-
-                if (controllerName != null) {
-                    value = controllerName;
-                    if (position == 0) {
-                        value += "("
-                                + Const.CONTROLLER_SETTING_DO_NOT_USED
-                                + ")"
-                                + Const.CONTROLLER_SETTING_TYPE
-                                + "("
-                                + Const.CONTROLLER_SETTING_DO_NOT_USED
-                                + ")"
-                        ;
-                    }
-                    else {
-                        String typeName = null;
-                        if (itemName.equals(Const.CONTROLLER_SETTING_DO_NOT_USED))
-                            typeName = Const.CONTROLLER_SETTING_DO_NOT_USED;
-                        else if (itemName.equals(Const.CONTROLLER_DISTRIBUTION_KIND_SMART))
-                            typeName = Const.CONTROLLER_DISTRIBUTION_KIND_SMART;
-                        else if (itemName.equals(Const.CONTROLLER_DISTRIBUTION_KIND_KNX))
-                            typeName = Const.CONTROLLER_DISTRIBUTION_KIND_KNX;
-
-                        value += "("
-                                + Const.CONTROLLER_SETTING_DO_USED
-                                + ")"
-                                + Const.CONTROLLER_SETTING_TYPE
-                                + "("
-                                + typeName
-                                + ")"
-                        ;
-                    }
-
-                    if ((InfoList != null) && (InfoList.size() > 1)) {
-                        String deviceNo = InfoList.get(0);
-                        String circuitNo = InfoList.get(1);
-
-                        value = deviceNo
-                                + "("
-                                + circuitNo
-                                + ":"
-                                + value
-                                + ")"
-                        ;
-
-                        mMainDatabaseManager.setSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DISTRIBUTION, 0, value);
-                    }
-                }
-            }
-            break;
-
-            case ENERGY_TYPE_POWERCONTROLLER:
-            {
-                int itemType = MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_POWERCONTROLLER;
-                String controllerName = mMainDatabaseManager.getSubDevID(itemType);
-                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(itemType);
-
-                if (controllerName != null) {
-                    value = controllerName;
-                    if (position == 0) {
-                        value += "("
-                                + Const.CONTROLLER_SETTING_DO_USED
-                                + ")"
-                                + Const.CONTROLLER_SETTING_TYPE
-                                + "("
-                                + Const.CONTROLLER_POWERCONTROLLER_KIND_BASIC
-                                + ")"
-                        ;
-                    }
-                    else {
-                        String typeName = null;
-                        if (itemName.equals(Const.CONTROLLER_POWERCONTROLLER_KIND_BASIC))
-                            typeName = Const.CONTROLLER_POWERCONTROLLER_KIND_BASIC;
-                        else if (itemName.equals(Const.CONTROLLER_POWERCONTROLLER_KIND_DIRECT))
-                            typeName = Const.CONTROLLER_POWERCONTROLLER_KIND_DIRECT;
-                        else if (itemName.equals(Const.CONTROLLER_POWERCONTROLLER_KIND_MEASURE))
-                            typeName = Const.CONTROLLER_POWERCONTROLLER_KIND_MEASURE;
-
-                        value += "("
-                                + Const.CONTROLLER_SETTING_DO_USED
-                                + ")"
-                                + Const.CONTROLLER_SETTING_TYPE
-                                + "("
-                                + typeName
-                                + ")"
-                        ;
-                    }
-
-                    if ((InfoList != null) && (InfoList.size() > 1)) {
-                        String deviceNo = InfoList.get(0);
-                        String circuitNo = InfoList.get(1);
-
-                        value = deviceNo
-                                + "("
-                                + circuitNo
-                                + ":"
-                                + value
-                                + ")"
-                        ;
-
-                        mMainDatabaseManager.setSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_POWERCONTROLLER, 0, value);
-                    }
-                }
-            }
-            break;
-
-            default:
-                break;
-        }
-    }
-
-    @Override
-    public void onItemChanged(final int controllerIdx, final int position, final String itemName) {
-        String controllerName = mControllerList.get(controllerIdx).getName();
-        String message = controllerName + " 를 " + (itemName) + "로 변경하였습니다.";
-
-
-        if (DEBUG)  Log.d(TAG, "onItemChanged() controllerIdx : " + controllerIdx
-                + ", position : " + position
-                + ", itemName : " + itemName
-        );
-
-        MainActivity.setFinishTimerReset();
-
-        MainApplication.getApplication().setReboot();
-
-        //int type = ENERGY_TYPE_BASE + controllerIdx;
-        int type = mControllerList.get(controllerIdx).getType();
-
-        ControllerVO controllerVO = mControllerList.get(controllerIdx);
-        if (controllerVO != null) {
-            controllerVO.setInitCount(position);
-        }
-
-        switch (type) {
-            case ENERGY_TYPE_ENERGY_METER:
-            case ENERGY_TYPE_IDLE_POWER_SAVING_SWITCH:
-            case ENERGY_TYPE_ENERGY_MODULE:
-            case ENERGY_TYPE_REMOTE_MESURING_METER:
-            case ENERGY_TYPE_EMS_SUPPORT:
-            case ENERGY_TYPE_REALTIME_MESURING_METER:
-            case ENERGY_TYPE_ENERGY_COST_TABLE:
-            case ENERGY_TYPE_ENERGY_SERVER_CONNECT:
-            case ENERGY_TYPE_ZERO_ENERGY_HOUSE:
-            case ENERGY_TYPE_DISTRIBUTION_BOARD:
-            case ENERGY_TYPE_POWERCONTROLLER:
-                updateSetUsedToSubDevice(type, position, itemName);
-                break;
-
-            default:
-                break;
-        }
-    }
-
-}
+package com.artncore.managersetting.ui.fragments;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import kr.co.icontrols.wallpadsupport.Version;
+import android.app.Activity;
+import android.os.Bundle;
+//import android.support.v4.app.Fragment;
+import androidx.fragment.app.Fragment;
+import androidx.core.view.MotionEventCompat;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.View.OnTouchListener;
+import android.widget.ListView;
+
+
+import com.artncore.WallPadDataMgr.WallpadStatusData;
+import com.artncore.managersetting.dao.MainDatabaseManager;
+import com.artncore.managersetting.domain.Const;
+import com.artncore.managersetting.domain.ControllerVO;
+import com.artncore.managersetting.ui.ControllerListAdapter;
+import com.artncore.managersetting.ui.activities.MainActivity;
+import com.artncore.managersetting.util.StringUtil;
+import com.artncore.wallpadapi.WallPadAPI;
+import com.artncore.managersetting.MainApplication;
+import com.artncore.managersetting.R;
+
+/**
+ * A list fragment representing a list of Items. This fragment also supports
+ * tablet devices by allowing list items to be given an 'activated' state upon
+ * selection. This helps indicate which item is currently being viewed in a
+ * {link ItemDetailFragment}.
+ * <p>
+ * Activities containing this fragment MUST implement the {link Callbacks}
+ * interface.
+ */
+public class SettingEnergyManagementFragment extends Fragment
+        implements ControllerListAdapter.ItemChangedListener {
+
+    private static final String TAG = "SettingEnergyManagementFragment";
+
+    private final boolean DEBUG = true;
+
+    public final int ENERGY_TYPE_BASE =         Const.COMMON_TYPE_BASE;
+    public final int ENERGY_TYPE_ENERGY_METER =                 ENERGY_TYPE_BASE + 0;
+    public final int ENERGY_TYPE_IDLE_POWER_SAVING_SWITCH =     ENERGY_TYPE_BASE + 1;
+    public final int ENERGY_TYPE_ENERGY_MODULE =                ENERGY_TYPE_BASE + 2;
+    public final int ENERGY_TYPE_REALTIME_MESURING_METER =      ENERGY_TYPE_BASE + 3;
+    public final int ENERGY_TYPE_REMOTE_MESURING_METER =        ENERGY_TYPE_BASE + 4;
+    public final int ENERGY_TYPE_EMS_SUPPORT =                  ENERGY_TYPE_BASE + 5;
+    public final int ENERGY_TYPE_ENERGY_COST_TABLE =            ENERGY_TYPE_BASE + 6;
+    public final int ENERGY_TYPE_ENERGY_SERVER_CONNECT =        ENERGY_TYPE_BASE + 7;
+    public final int ENERGY_TYPE_ZERO_ENERGY_HOUSE =            ENERGY_TYPE_BASE + 8;
+    public final int ENERGY_TYPE_DISTRIBUTION_BOARD =           ENERGY_TYPE_BASE + 9;
+    public final int ENERGY_TYPE_POWERCONTROLLER =              ENERGY_TYPE_BASE + 10;
+
+
+    public final int ENERGY_TYPE_REMOTE_MESURING_METER_DEFAULT_VALUE =             3;
+
+    private Activity mActivity;
+    private WallPadAPI mWallPadAPI;
+    private MainDatabaseManager mMainDatabaseManager;
+
+    private ListView mControllerListView;
+    private List<ControllerVO> mControllerList = new ArrayList<ControllerVO>();
+
+    //[DB]
+    WallpadStatusData DBMGR = null;
+
+    //[Model]
+    private int ModelType = Version.getModelType();
+
+    // constructor
+    public SettingEnergyManagementFragment() {
+    }
+
+    @Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+
+        mActivity = activity;
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        if (DEBUG)  Log.d(TAG, "onCreate() ");
+
+        super.onCreate(savedInstanceState);
+
+        mWallPadAPI = MainActivity.getWallPadAPI();
+        mMainDatabaseManager = MainActivity.getMainDatabaseManager();
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+                             Bundle savedInstanceState) {
+        View rootView = (View) inflater.inflate(R.layout.controller_setting_container,
+                container, false);
+
+        return (View)rootView;
+    }
+
+    @Override
+    public void onViewCreated(View view, Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+
+        if (savedInstanceState != null) {}
+
+        mControllerListView = (ListView) view.findViewById(R.id.controller_list);
+
+        mControllerListView.setOnTouchListener(new OnTouchListener() {
+
+            @Override
+            public boolean onTouch(View v, MotionEvent event) {
+                switch (MotionEventCompat.getActionMasked(event)) {
+
+                    case MotionEvent.ACTION_UP:
+                        MainActivity.setFinishTimerReset();
+                        break;
+
+                    default:
+                        break;
+                }
+                return false;
+            }
+        });
+
+        initListView();
+    }
+
+    /* (non-Javadoc)
+     * @see android.support.v4.app.Fragment#onDestroy()
+     */
+    @Override
+    public void onDestroy() {
+        // TODO Auto-generated method stub
+        super.onDestroy();
+        if(DBMGR != null) DBMGR.closeDB();
+    }
+
+    @Override
+    public void onDetach() {
+        super.onDetach();
+
+        mWallPadAPI = null;
+    }
+
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+    }
+
+
+    // init ListView
+    private void initListView() {
+        getControllerList();
+
+        ControllerListAdapter adapter = new ControllerListAdapter(mActivity
+                , R.layout.setting_controller_item
+                , mControllerList
+                , this);
+
+        mControllerListView.setAdapter(adapter);
+    }
+
+
+    // return controllerList
+    private void getControllerList() {
+        if (mWallPadAPI != null) {
+            if (ModelType == Version.MODEL_TYPE.IHN_1020GL
+                    || ModelType == Version.MODEL_TYPE.IHN_1010GL || ModelType == Version.MODEL_TYPE.IHN_1010GL_I) {
+                addControllerVO(ENERGY_TYPE_ENERGY_METER); //아이파크 에너지
+                addControllerVO(ENERGY_TYPE_IDLE_POWER_SAVING_SWITCH); //대기전력 차단스위치
+                addControllerVO(ENERGY_TYPE_ENERGY_MODULE); //에너지 모듈
+            }
+            else if (ModelType == Version.MODEL_TYPE.IHN_D101 || ModelType == Version.MODEL_TYPE.IHN_D101_I
+                    || ModelType == Version.MODEL_TYPE.IHN_D101K || ModelType == Version.MODEL_TYPE.IHN_D101K_I) {
+                addControllerVO(ENERGY_TYPE_DISTRIBUTION_BOARD); // 분전반
+            }
+            addControllerVO(ENERGY_TYPE_REALTIME_MESURING_METER);
+            addControllerVO(ENERGY_TYPE_REMOTE_MESURING_METER); //원격검침
+            addControllerVO(ENERGY_TYPE_ENERGY_SERVER_CONNECT); //에너지관리서버 연동
+            addControllerVO(ENERGY_TYPE_ZERO_ENERGY_HOUSE); //제로에너지하우스
+            addControllerVO(ENERGY_TYPE_POWERCONTROLLER); //통합전력제어기
+
+        }
+    }
+
+
+    // controllerList에 type유형의 controller를 추가
+    private void addControllerVO(int type) {
+        ControllerVO controllerVO = null;
+
+        switch (type) {
+            case ENERGY_TYPE_ENERGY_METER:
+            {
+                int energyMeterCount = Const.CONTROLLER_ONOFF_COUNT;
+                // TO DO
+                int energyMeterCurrent = 0;
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ENERGY_DEVICES);
+                if ((InfoList != null) && (InfoList.size() > 3)) {
+                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+                        energyMeterCurrent = 1;
+                    }
+                }
+
+                if (DEBUG)  Log.d(TAG, "energyMeterCurrent : " + energyMeterCurrent);
+
+                String controllerName = mActivity.getString(R.string.setting_energy_energy_meter);
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , energyMeterCount
+                        , energyMeterCurrent
+                );
+            }
+            break;
+
+            case ENERGY_TYPE_IDLE_POWER_SAVING_SWITCH:
+            {
+                int powerSavingCount = Const.CONTROLLER_ONOFF_COUNT;
+                // TO DO
+                int powerSavingCurrent = 0;
+
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_IDLE_POWER_SAVING_SWITCH);
+                if ((InfoList != null) && (InfoList.size() > 3)) {
+                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+                        powerSavingCurrent = 1;
+                    }
+                }
+
+                if (DEBUG)  Log.d(TAG, "powerSavingCurrent : " + powerSavingCurrent);
+
+                String controllerName = mActivity.getString(R.string.setting_energy_idle_power_saving_switch);
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , powerSavingCount
+                        , powerSavingCurrent
+                );
+            }
+            break;
+
+            case ENERGY_TYPE_ENERGY_MODULE:
+            {
+                int powerSavingCount = Const.CONTROLLER_ONOFF_COUNT;
+                // TO DO
+                int energyModuleCurrent = 0;
+
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ENERGY_MODULE);
+                if ((InfoList != null) && (InfoList.size() > 3)) {
+                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+                        energyModuleCurrent = 1;
+                    }
+                }
+
+                if (DEBUG)  Log.d(TAG, "EnergyModuleCurrent : " + energyModuleCurrent);
+
+                String controllerName = mActivity.getString(R.string.setting_energy_energy_module);
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , powerSavingCount
+                        , energyModuleCurrent
+                );
+            }
+            break;
+
+            case ENERGY_TYPE_ENERGY_SERVER_CONNECT:
+            {
+                int Count = Const.CONTROLLER_ONOFF_COUNT;
+                // TO DO
+                int Current = 0;
+
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ENERGY_SERVER_CONNECT);
+                if ((InfoList != null) && (InfoList.size() > 3)) {
+                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+                        Current = 1;
+                    }
+                }
+
+                if (DEBUG)  Log.d(TAG, "Energy Server Connect Current : " + Current);
+
+                String controllerName = mActivity.getString(R.string.setting_energy_energy_server_connect);
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , Count
+                        , Current
+                );
+            }
+            break;
+
+            case ENERGY_TYPE_ZERO_ENERGY_HOUSE:
+            {
+                int Count = Const.CONTROLLER_ONOFF_COUNT;
+                // TO DO
+                int Current = 0;
+
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ZERO_ENERGY_HOUSE);
+                if ((InfoList != null) && (InfoList.size() > 3)) {
+                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+                        Current = 1;
+                    }
+                }
+
+                if (DEBUG)  Log.d(TAG, "Zero Energy House Current : " + Current);
+
+                String controllerName = mActivity.getString(R.string.setting_energy_zero_energy_house);
+
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , Count
+                        , Current
+                );
+            }
+            break;
+
+            case ENERGY_TYPE_REALTIME_MESURING_METER:
+            {
+                int meterCount = Const.CONTROLLER_REALTIME_MEASURING_METER_MAX_COUNT;
+                int meterCurrent = 0; //mWallpadStatusData.GetHeatingCNT();
+
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_REALTIME_MEASURING_METER);
+                if ((InfoList != null) && (InfoList.size() < 5)) {
+                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+                        String strType = InfoList.get(1);
+                        if (DEBUG)  Log.d(TAG, "ENERGY_TYPE_REALTIME_MESURING_METER : " + strType+"종");
+
+                        if(Integer.parseInt(strType) == 5)
+                        {
+                            meterCurrent = 2;
+                        }
+                        else if(Integer.parseInt(strType) == 3)
+                        {
+                            meterCurrent = 1;
+                        }
+                        else
+                        {
+                            meterCurrent = 0;
+                        }
+                    }
+                }
+
+                List<String> itemList = new ArrayList<String>();
+                itemList.add(mActivity.getString(R.string.do_not_used));
+                itemList.add(mActivity.getString(R.string.contoller_realtime_masuring_meter_item_3));
+                itemList.add(mActivity.getString(R.string.contoller_realtime_masuring_meter_item_5));
+
+                String controllerName = mActivity.getString(R.string.contoller_realtime_masuring_meter);
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , meterCount
+                        , meterCurrent
+                        , itemList
+                );
+            }
+            break;
+
+            case ENERGY_TYPE_REMOTE_MESURING_METER:
+            {
+                int remoteMeterCount = Const.CONTROLLER_REMOTE_MEASURING_METER_MAX_COUNT;
+                int remoteMeterCurrent = ENERGY_TYPE_REMOTE_MESURING_METER_DEFAULT_VALUE;
+
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_REMOTE_MESURING_METER);
+                if ((InfoList != null) && (InfoList.size() > 3))
+                {
+                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3)))
+                    {
+                        remoteMeterCurrent = 0;
+                    }
+                    else if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3)))
+                    {
+                        int circuitCount = StringUtil.getInt(InfoList.get(1), false);
+
+                        if (circuitCount == 2)
+                        {
+                            remoteMeterCurrent = 1;
+                        }
+                        else if (circuitCount == 3)
+                        {
+                            remoteMeterCurrent = 2;
+                        }
+                        else if (circuitCount == 5)
+                        {
+                            remoteMeterCurrent = 3;
+                        }
+                        else if (circuitCount == 6)
+                        {
+                            remoteMeterCurrent = 4;
+                        }
+                    }
+                }
+
+                if (DEBUG) Log.d(TAG, "RemoteMeterCurrent : " + remoteMeterCurrent);
+
+                List<String> itemList = new ArrayList<String>();
+                itemList.add(mActivity.getString(R.string.do_not_used));
+                itemList.add(mActivity.getString(R.string.contoller_realtime_masuring_meter_item_2));
+                itemList.add(mActivity.getString(R.string.contoller_realtime_masuring_meter_item_3));
+                // itemList.add(mActivity.getString(R.string.contoller_realtime_masuring_meter_item_4));
+                itemList.add(mActivity.getString(R.string.contoller_realtime_masuring_meter_item_5));
+                itemList.add(mActivity.getString(R.string.contoller_realtime_masuring_meter_item_6));
+
+                String controllerName = mActivity.getString(R.string.setting_additional_remote_mesuring_meter);
+
+                controllerVO = new ControllerVO(type, controllerName, remoteMeterCount, remoteMeterCurrent, itemList);
+
+                mControllerList.add(controllerVO);
+
+                if (DEBUG) Log.d(TAG, "InfoList.get(4) : " + InfoList.get(4)); // EMS
+                if (DEBUG) Log.d(TAG, "InfoList.get(5) : " + InfoList.get(5)); // 사용함
+                // or
+                // 사용안함
+
+                int emsSupportCount = Const.CONTROLLER_ONOFF_COUNT;
+                // TO DO
+                int emsSupportCurrent = 0;
+
+                if (Const.REMOTE_METERING_EMS.equals(InfoList.get(4)))
+                {
+                    if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(5)))
+                    {
+                        emsSupportCurrent = 0;
+                    }
+                    else if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(5)))
+                    {
+                        emsSupportCurrent = 1;
+                    }
+
+                }
+
+                if (DEBUG) Log.d(TAG, "ENERGY_TYPE_EMS_SUPPORT : " + emsSupportCurrent);
+
+                controllerName = mActivity.getString(R.string.setting_energy_ems_support);
+
+                controllerVO = new ControllerVO(ENERGY_TYPE_EMS_SUPPORT, controllerName, emsSupportCount, emsSupportCurrent);
+
+                mControllerList.add(controllerVO);
+
+
+
+                int costSupportCount = Const.CONTROLLER_ONOFF_COUNT;
+                int costSupportCurrent = 0;
+
+                if(InfoList.size() > 6)
+                {
+                    if (Const.REMOTE_METERING_COST_TABLE.equals(InfoList.get(6)))
+                    {
+                        if (Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(7)))
+                        {
+                            costSupportCurrent = 0;
+                        }
+                        else if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(7)))
+                        {
+                            costSupportCurrent = 1;
+                        }
+                    }
+                }
+                else
+                {
+
+                }
+
+                if (DEBUG) Log.d(TAG, "ENERGY_TYPE_COST_TABLE_SUPPORT : " + costSupportCurrent);
+                controllerName = mActivity.getString(R.string.setting_energy_cost_table_support);
+                controllerVO = new ControllerVO(ENERGY_TYPE_ENERGY_COST_TABLE, controllerName, costSupportCount, costSupportCurrent);
+
+                mControllerList.add(controllerVO);
+
+
+
+            }
+            break;
+
+            case ENERGY_TYPE_DISTRIBUTION_BOARD:
+            {
+                int SdbCount = Const.CONTROLLER_ONOFF_COUNT;
+                int SdbCurrent = 0;
+
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DISTRIBUTION);
+                if ((InfoList != null) && (InfoList.size() > 3)) {
+                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+                        String strType = InfoList.get(5);
+                        if (DEBUG)  Log.d(TAG, "ENERGY_TYPE_DISTRIBUTION_BOARD : " + strType);
+                        if(strType.equals(getString(R.string.contoller_energy_distribution_smart)))
+                        {
+                            SdbCurrent = 1;
+                        }
+                        else if(strType.equals(getString(R.string.contoller_energy_distribution_knx)))
+                        {
+                            SdbCurrent = 2;
+                        }
+                        else
+                        {
+                            SdbCurrent = 0;
+                        }
+                    }
+                }
+
+                List<String> itemList = new ArrayList<String>();
+                itemList.add(mActivity.getString(R.string.do_not_used));
+                itemList.add(mActivity.getString(R.string.contoller_energy_distribution_smart));
+                itemList.add(mActivity.getString(R.string.contoller_energy_distribution_knx));
+
+                String controllerName = mActivity.getString(R.string.contoller_energy_distribution);
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , SdbCount
+                        , SdbCurrent
+                        , itemList
+                );
+            }
+            break;
+
+            case ENERGY_TYPE_POWERCONTROLLER:
+            {
+                int PowerCtrlCount = Const.CONTROLLER_ONOFF_COUNT;
+                int PowerCtrlCurrent = 0;
+
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_POWERCONTROLLER);
+                if ((InfoList != null) && (InfoList.size() > 3)) {
+                    if (Const.CONTROLLER_SETTING_DO_USED.equals(InfoList.get(3))) {
+                        String strType = InfoList.get(5);
+                        if (DEBUG)  Log.d(TAG, "ENERGY_TYPE_POWERCONTROLLER : " + strType);
+                        if(strType.equals(getString(R.string.contoller_powercontroller_direct)))
+                        {
+                            PowerCtrlCurrent = 1;
+                        }
+                        else if(strType.equals(getString(R.string.contoller_powercontroller_measure)))
+                        {
+                            PowerCtrlCurrent = 2;
+                        }
+                        else
+                        {
+                            PowerCtrlCurrent = 0;
+                        }
+                    }
+                }
+
+                List<String> itemList = new ArrayList<String>();
+                itemList.add(mActivity.getString(R.string.contoller_powercontroller_basic));
+                itemList.add(mActivity.getString(R.string.contoller_powercontroller_direct));
+                itemList.add(mActivity.getString(R.string.contoller_powercontroller_measure));
+
+                String controllerName = mActivity.getString(R.string.contoller_energy_powercontroller);
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , PowerCtrlCount
+                        , PowerCtrlCurrent
+                        , itemList
+                );
+            }
+            break;
+
+            default:
+                break;
+        }
+
+        if (controllerVO != null) mControllerList.add(controllerVO);
+    }
+
+    // update item to DB
+    private void updateSetUsedToSubDevice(int type, final int position, final String itemName) {
+        if (DEBUG)  Log.d(TAG, "updateSetUsedToSubDevice() type : " + type
+                + ", position : " + position
+                + ", itemName : " + itemName
+        );
+        MainActivity.setFinishTimerReset();
+
+        String value = "";
+
+        if (itemName == null)
+            return;
+
+        switch (type) {
+            case ENERGY_TYPE_ENERGY_METER:
+            {
+                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ENERGY_DEVICES, position);
+            }
+            break;
+
+            case ENERGY_TYPE_IDLE_POWER_SAVING_SWITCH:
+            {
+                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_IDLE_POWER_SAVING_SWITCH, position);
+            }
+            break;
+
+            case ENERGY_TYPE_ENERGY_MODULE:
+            {
+                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ENERGY_MODULE, position);
+            }
+            break;
+
+            case ENERGY_TYPE_ENERGY_SERVER_CONNECT:
+            {
+                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ENERGY_SERVER_CONNECT, position);
+            }
+            break;
+
+            case ENERGY_TYPE_ZERO_ENERGY_HOUSE:
+            {
+                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ZERO_ENERGY_HOUSE, position);
+                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ENERGY_DEVICES, position);
+                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ENERGY_MODULE, position);
+            }
+            break;
+
+            case ENERGY_TYPE_REALTIME_MESURING_METER:
+            {
+                final String controllerName = mMainDatabaseManager.getSubDevID(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_REALTIME_MEASURING_METER);
+                String TempCircuitNo = "5";
+                if (controllerName != null)
+                {
+                    value = controllerName;
+                    if (position == 0)
+                    {
+                        value += "("
+                                + Const.CONTROLLER_SETTING_DO_NOT_USED
+                                + ")"
+                        ;
+                    }
+                    else
+                    {
+                        if (itemName.equals(Const.REALTIME_MEASURING_METER_TYPE_3))
+                        {
+                            TempCircuitNo = "3";
+                        }
+                        else if (itemName.equals(Const.REALTIME_MEASURING_METER_TYPE_5))
+                        {
+                            TempCircuitNo = "5";
+                        }
+                        value += "("
+                                + Const.CONTROLLER_SETTING_DO_USED
+                                + ")"
+                        ;
+                    }
+
+
+                    List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_REALTIME_MEASURING_METER);
+                    if ((InfoList != null) && (InfoList.size() > 1)) {
+                        String deviceNo = InfoList.get(0);
+                        //String circuitNo = InfoList.get(1);
+
+                        value = deviceNo
+                                + "("
+
+                                + TempCircuitNo
+                                + ":"
+
+                                + value
+
+                                + ")"
+                        ;
+
+                        mMainDatabaseManager.setSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_REALTIME_MEASURING_METER, 0, value);
+                    }
+                }
+            }
+            break;
+
+            case ENERGY_TYPE_REMOTE_MESURING_METER:
+            {
+                int itemType = MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_REMOTE_MESURING_METER;
+                String controllerName = mMainDatabaseManager.getSubDevID(itemType);
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(itemType);
+
+                if (controllerName != null) {
+                    value = controllerName;
+                    if (position == 0) {
+                        value += "("
+                                + Const.CONTROLLER_SETTING_DO_NOT_USED
+                                + ")"
+                        ;
+                    }
+                    else {
+                        value += "("
+                                + Const.CONTROLLER_SETTING_DO_USED
+                                + ")"
+                        ;
+                    }
+
+                    if ((InfoList != null) && (InfoList.size() > 1)) {
+                        String deviceNo = InfoList.get(0);
+                        String circuitNo = InfoList.get(1);
+                        if (position > 0)
+                        {
+                            if (itemName.equals(Const.REALTIME_MEASURING_METER_TYPE_2))
+                            {
+                                circuitNo = "2";
+                            }
+                            else if (itemName.equals(Const.REALTIME_MEASURING_METER_TYPE_3))
+                            {
+                                circuitNo = "3";
+                            }
+                            else if (itemName.equals(Const.REALTIME_MEASURING_METER_TYPE_5))
+                            {
+                                circuitNo = "5";
+                            }
+                            else if (itemName.equals(Const.REALTIME_MEASURING_METER_TYPE_6))
+                            {
+                                circuitNo = "6";
+                            }
+                        }
+
+                        value = deviceNo
+                                + "("
+
+                                + circuitNo
+                                + ":"
+
+                                + value
+                        ;
+
+                        for (int i=4; i + 1 <InfoList.size(); i=i+2) {
+                            value += InfoList.get(i)
+                                    + "("
+                                    + InfoList.get(i+1)
+                                    + ")"
+                            ;
+                        }
+                        value += ")"
+                        ;
+                        //devInfo = "1(5:원격검침(사용함)EMS(사용함))";
+
+                        mMainDatabaseManager.setSettingDataSubDev(itemType, 0, value);
+                    }
+                }
+            }
+            break;
+
+            case ENERGY_TYPE_EMS_SUPPORT:
+            {
+                int itemType = MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_REMOTE_MESURING_METER;
+                String controllerName = mMainDatabaseManager.getSubDevID(itemType);
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(itemType);
+
+                if (controllerName != null)
+                {
+
+                    if ((InfoList != null) && (InfoList.size() > 1))
+                    {
+                        String deviceNo = InfoList.get(0);
+                        String circuitNo = InfoList.get(1);
+                        String UseOrNot = InfoList.get(3);
+                        String EmsSupport;
+                        value = deviceNo + "("
+
+                                + circuitNo + ":"
+
+                                + controllerName + "("
+
+                                + UseOrNot + ")";
+
+                        if (Const.REMOTE_METERING_EMS.equals(InfoList.get(4)))
+                        {
+                            if (position == 0)
+                            {
+                                EmsSupport = "(" + Const.CONTROLLER_SETTING_DO_NOT_USED + ")";
+                            }
+                            else
+                            {
+                                EmsSupport = "(" + Const.CONTROLLER_SETTING_DO_USED + ")";
+                            }
+                            value += Const.REMOTE_METERING_EMS + EmsSupport;
+                        }
+
+                        value += Const.REMOTE_METERING_COST_TABLE + "("+InfoList.get(7)+")";
+
+                        value += ")";
+
+                        mMainDatabaseManager.setSettingDataSubDev(itemType, 0, value);
+
+                    }
+                }
+            }
+            break;
+
+            case ENERGY_TYPE_ENERGY_COST_TABLE:
+            {
+                int itemType = MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_REMOTE_MESURING_METER;
+                String controllerName = mMainDatabaseManager.getSubDevID(itemType);
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(itemType);
+
+                if (controllerName != null)
+                {
+
+                    if ((InfoList != null) && (InfoList.size() > 1))
+                    {
+                        String deviceNo = InfoList.get(0);
+                        String circuitNo = InfoList.get(1);
+                        String UseOrNot = InfoList.get(3);
+
+                        String CostTableSupport;
+                        value = deviceNo + "("
+
+                                + circuitNo + ":"
+
+                                + controllerName + "("
+
+                                + UseOrNot + ")" + Const.REMOTE_METERING_EMS + "(" + InfoList.get(5) + ")";
+
+                        if(InfoList.size() > 6)
+                        {
+                            if (Const.REMOTE_METERING_COST_TABLE.equals(InfoList.get(6)))
+                            {
+                                if (position == 0)
+                                {
+                                    CostTableSupport = "(" + Const.CONTROLLER_SETTING_DO_NOT_USED + ")";
+                                }
+                                else
+                                {
+                                    CostTableSupport = "(" + Const.CONTROLLER_SETTING_DO_USED + ")";
+                                }
+                                value += Const.REMOTE_METERING_COST_TABLE + CostTableSupport;
+                            }
+                        }
+                        else
+                        {
+                            if (position == 0)
+                            {
+                                CostTableSupport = "(" + Const.CONTROLLER_SETTING_DO_NOT_USED + ")";
+                            }
+                            else
+                            {
+                                CostTableSupport = "(" + Const.CONTROLLER_SETTING_DO_USED + ")";
+                            }
+                            value += Const.REMOTE_METERING_COST_TABLE + CostTableSupport;
+                        }
+
+                        value += ")";
+
+                        mMainDatabaseManager.setSettingDataSubDev(itemType, 0, value);
+                    }
+                }
+            }
+            break;
+
+            case ENERGY_TYPE_DISTRIBUTION_BOARD:
+            {
+                int itemType = MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DISTRIBUTION;
+                String controllerName = mMainDatabaseManager.getSubDevID(itemType);
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(itemType);
+
+                if (controllerName != null) {
+                    value = controllerName;
+                    if (position == 0) {
+                        value += "("
+                                + Const.CONTROLLER_SETTING_DO_NOT_USED
+                                + ")"
+                                + Const.CONTROLLER_SETTING_TYPE
+                                + "("
+                                + Const.CONTROLLER_SETTING_DO_NOT_USED
+                                + ")"
+                        ;
+                    }
+                    else {
+                        String typeName = null;
+                        if (itemName.equals(Const.CONTROLLER_SETTING_DO_NOT_USED))
+                            typeName = Const.CONTROLLER_SETTING_DO_NOT_USED;
+                        else if (itemName.equals(Const.CONTROLLER_DISTRIBUTION_KIND_SMART))
+                            typeName = Const.CONTROLLER_DISTRIBUTION_KIND_SMART;
+                        else if (itemName.equals(Const.CONTROLLER_DISTRIBUTION_KIND_KNX))
+                            typeName = Const.CONTROLLER_DISTRIBUTION_KIND_KNX;
+
+                        value += "("
+                                + Const.CONTROLLER_SETTING_DO_USED
+                                + ")"
+                                + Const.CONTROLLER_SETTING_TYPE
+                                + "("
+                                + typeName
+                                + ")"
+                        ;
+                    }
+
+                    if ((InfoList != null) && (InfoList.size() > 1)) {
+                        String deviceNo = InfoList.get(0);
+                        String circuitNo = InfoList.get(1);
+
+                        value = deviceNo
+                                + "("
+                                + circuitNo
+                                + ":"
+                                + value
+                                + ")"
+                        ;
+
+                        mMainDatabaseManager.setSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_DISTRIBUTION, 0, value);
+                    }
+                }
+            }
+            break;
+
+            case ENERGY_TYPE_POWERCONTROLLER:
+            {
+                int itemType = MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_POWERCONTROLLER;
+                String controllerName = mMainDatabaseManager.getSubDevID(itemType);
+                List<String> InfoList = mMainDatabaseManager.getSettingDataSubDev(itemType);
+
+                if (controllerName != null) {
+                    value = controllerName;
+                    if (position == 0) {
+                        value += "("
+                                + Const.CONTROLLER_SETTING_DO_USED
+                                + ")"
+                                + Const.CONTROLLER_SETTING_TYPE
+                                + "("
+                                + Const.CONTROLLER_POWERCONTROLLER_KIND_BASIC
+                                + ")"
+                        ;
+                    }
+                    else {
+                        String typeName = null;
+                        if (itemName.equals(Const.CONTROLLER_POWERCONTROLLER_KIND_BASIC))
+                            typeName = Const.CONTROLLER_POWERCONTROLLER_KIND_BASIC;
+                        else if (itemName.equals(Const.CONTROLLER_POWERCONTROLLER_KIND_DIRECT))
+                            typeName = Const.CONTROLLER_POWERCONTROLLER_KIND_DIRECT;
+                        else if (itemName.equals(Const.CONTROLLER_POWERCONTROLLER_KIND_MEASURE))
+                            typeName = Const.CONTROLLER_POWERCONTROLLER_KIND_MEASURE;
+
+                        value += "("
+                                + Const.CONTROLLER_SETTING_DO_USED
+                                + ")"
+                                + Const.CONTROLLER_SETTING_TYPE
+                                + "("
+                                + typeName
+                                + ")"
+                        ;
+                    }
+
+                    if ((InfoList != null) && (InfoList.size() > 1)) {
+                        String deviceNo = InfoList.get(0);
+                        String circuitNo = InfoList.get(1);
+
+                        value = deviceNo
+                                + "("
+                                + circuitNo
+                                + ":"
+                                + value
+                                + ")"
+                        ;
+
+                        mMainDatabaseManager.setSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_POWERCONTROLLER, 0, value);
+                    }
+                }
+            }
+            break;
+
+            default:
+                break;
+        }
+    }
+
+    @Override
+    public void onItemChanged(final int controllerIdx, final int position, final String itemName) {
+        String controllerName = mControllerList.get(controllerIdx).getName();
+        String message = controllerName + " 를 " + (itemName) + "로 변경하였습니다.";
+
+
+        if (DEBUG)  Log.d(TAG, "onItemChanged() controllerIdx : " + controllerIdx
+                + ", position : " + position
+                + ", itemName : " + itemName
+        );
+
+        MainActivity.setFinishTimerReset();
+
+        MainApplication.getApplication().setReboot();
+
+        //int type = ENERGY_TYPE_BASE + controllerIdx;
+        int type = mControllerList.get(controllerIdx).getType();
+
+        ControllerVO controllerVO = mControllerList.get(controllerIdx);
+        if (controllerVO != null) {
+            controllerVO.setInitCount(position);
+        }
+
+        switch (type) {
+            case ENERGY_TYPE_ENERGY_METER:
+            case ENERGY_TYPE_IDLE_POWER_SAVING_SWITCH:
+            case ENERGY_TYPE_ENERGY_MODULE:
+            case ENERGY_TYPE_REMOTE_MESURING_METER:
+            case ENERGY_TYPE_EMS_SUPPORT:
+            case ENERGY_TYPE_REALTIME_MESURING_METER:
+            case ENERGY_TYPE_ENERGY_COST_TABLE:
+            case ENERGY_TYPE_ENERGY_SERVER_CONNECT:
+            case ENERGY_TYPE_ZERO_ENERGY_HOUSE:
+            case ENERGY_TYPE_DISTRIBUTION_BOARD:
+            case ENERGY_TYPE_POWERCONTROLLER:
+                updateSetUsedToSubDevice(type, position, itemName);
+                break;
+
+            default:
+                break;
+        }
+    }
+
+}

+ 522 - 522
ManagerSetting/src/main/java/com/artncore/managersetting/util/DialogUtil.java

@@ -1,522 +1,522 @@
-package com.artncore.managersetting.util;
-
-import kr.co.icontrols.wallpadsupport.Version;
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.os.Handler;
-import android.text.InputType;
-import android.text.method.PasswordTransformationMethod;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.WindowManager;
-import android.view.inputmethod.InputMethodManager;
-import android.widget.Button;
-import android.widget.EditText;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-import com.artncore.WallPadDataMgr.wallpaddbmgr;
-import com.artncore.managersetting.R;
-import com.artncore.managersetting.domain.Const;
-
-public class DialogUtil {
-    private static final String TAG = "DialogUtil";
-
-    private static final boolean DEBUG = true;
-
-    private Context mContext;
-    private static Dialog mDialog;
-    private EditText mEditText;
-
-    private TextView tvLocalIP_1;
-    private TextView tvLocalIP_2;
-    private TextView tvLocalIP_3;
-    private TextView tvLocalIP_4;
-
-    private TextView mSelectedView = null;
-
-    private int ModelType = Version.getModelType();
-
-    // constructor
-    public DialogUtil(Context context) {
-        mContext = context;
-    }
-
-
-    // open CommonDialog
-    public void openCommonDialog(String title, String message
-            , DialogInterface.OnClickListener positiveListener
-            , DialogInterface.OnClickListener negativeListener) {
-
-        closeDialog();
-
-        LayoutInflater inflater = (LayoutInflater)mContext
-                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-        View rootView = inflater.inflate(R.layout.common_dialog, null);
-        TextView tvTitle = (TextView) rootView.findViewById(R.id.tv_title);;
-        TextView tvMessage = (TextView) rootView.findViewById(R.id.tv_message);;
-
-        tvTitle.setText(title);
-        message = "\n" + message + "\n";
-        tvMessage.setText(message);
-
-        AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
-        builder.setView(rootView);
-//        builder.setMessage(message)
-        builder.setCancelable(true);
-
-        if (positiveListener != null) {
-            builder.setPositiveButton(android.R.string.ok, positiveListener);
-        }
-
-/*
-        builder.setPositiveButton(android.R.string.ok,
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        dialog.dismiss();
-                    }
-                });
-*/
-
-        if (negativeListener != null) {
-            builder.setNegativeButton(android.R.string.cancel, negativeListener);
-        }
-
-/*
-        builder.setNegativeButton(R.string.dialog_cancel,
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        dialog.cancel();
-                    }
-                });
-*/
-
-
-        mDialog = builder.create();
-        //mDialog.setIcon(android.R.drawable.ic_dialog_alert);
-        //mDialog.setTitle(title);
-        mDialog.show();
-    }
-
-
-    // open NoticeDialog
-    public void openNoticeDialog(String title, String message) {
-
-        DialogInterface.OnClickListener positiveListener =
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        //dialog.dismiss();
-                        closeDialog();
-                    }
-                };
-
-        openCommonDialog(title, message, positiveListener, null);
-    }
-
-
-
-
-
-
-    // open PasswordDialogg
-    public void openPasswordDialog(String title, String message
-            , DialogInterface.OnClickListener positiveListener
-            , DialogInterface.OnClickListener negativeListener
-            , Handler handler) {
-
-        closeDialog();
-
-        LayoutInflater inflater = (LayoutInflater)mContext
-                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-        View rootView = inflater.inflate(R.layout.edit_text_dialog, null);
-        TextView tvTitle = (TextView) rootView.findViewById(R.id.tv_title);
-        TextView tvMessage = (TextView) rootView.findViewById(R.id.tv_message);
-        EditText etText = (EditText) rootView.findViewById(R.id.edit_text);;
-        etText.setInputType( InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD );
-        etText.setTransformationMethod(PasswordTransformationMethod.getInstance());
-
-
-        tvTitle.setText(title);
-        message = "\n" + message + "\n";
-        tvMessage.setText(message);
-
-        AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
-        builder.setView(rootView);
-//        builder.setMessage(message)
-        builder.setCancelable(true);
-
-        if (positiveListener != null) {
-            builder.setPositiveButton(android.R.string.ok, positiveListener);
-        }
-
-        if (negativeListener != null) {
-            builder.setNegativeButton(android.R.string.cancel, negativeListener);
-        }
-
-
-        mDialog = builder.create();
-        mDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE );
-        //mDialog.setIcon(android.R.drawable.ic_dialog_alert);
-        //mDialog.setTitle(title);
-
-//mDialog = new EditTextDialog(mContext, null);
-
-
-        mEditText = etText;
-
-        mDialog.show();
-    }
-
-
-    // open EditTextDialog
-    public void openEditTextDialog(String title, String message
-            , DialogInterface.OnClickListener positiveListener
-            , DialogInterface.OnClickListener negativeListener
-            , Handler handler) {
-
-        closeDialog();
-
-        LayoutInflater inflater = (LayoutInflater)mContext
-                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-        View rootView = inflater.inflate(R.layout.edit_text_dialog, null);
-        TextView tvTitle = (TextView) rootView.findViewById(R.id.tv_title);
-        TextView tvMessage = (TextView) rootView.findViewById(R.id.tv_message);
-        EditText etText = (EditText) rootView.findViewById(R.id.edit_text);;
-
-        tvTitle.setText(title);
-        message = "\n" + message + "\n";
-        tvMessage.setText(message);
-
-        AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
-        builder.setView(rootView);
-//        builder.setMessage(message)
-        builder.setCancelable(true);
-
-        if (positiveListener != null) {
-            builder.setPositiveButton(android.R.string.ok, positiveListener);
-        }
-
-        if (negativeListener != null) {
-            builder.setNegativeButton(android.R.string.cancel, negativeListener);
-        }
-
-
-        mDialog = builder.create();
-        //mDialog.setIcon(android.R.drawable.ic_dialog_alert);
-        //mDialog.setTitle(title);
-
-//mDialog = new EditTextDialog(mContext, null);
-
-
-        mEditText = etText;
-
-        mDialog.show();
-    }
-
-
-    // get EditText String
-    public String getEditText() {
-        if ((mDialog == null) || (mEditText == null))
-            return null;
-
-        return mEditText.getText().toString();
-    }
-
-
-    // hide SoftKeypad
-    public void hideSoftKeypad() {
-        if ((mDialog == null) || (mEditText == null))
-            return;
-
-        InputMethodManager imm = (InputMethodManager)mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
-        imm.hideSoftInputFromWindow(mEditText.getWindowToken(), 0);
-    }
-
-
-
-
-    // get IP in EditText
-    public String getEditIPText() {
-        if ((mDialog == null) || (tvLocalIP_1 == null))
-            return null;
-
-
-        String strLocalIP_FirstNum =   tvLocalIP_1.getText().toString();
-        String strLocalIP_SecondNum = tvLocalIP_2.getText().toString();
-        String strLocalIP_ThirtNum =   tvLocalIP_3.getText().toString();
-        String strLocalIP_FouthNum =   tvLocalIP_4.getText().toString();
-        String strLocalIP = strLocalIP_FirstNum
-                + "." + strLocalIP_SecondNum
-                + "." + strLocalIP_ThirtNum
-                + "." + strLocalIP_FouthNum
-                ;
-
-
-        return strLocalIP;
-    }
-
-
-
-
-
-
-
-    // open AddIPDialog
-    public void openAddIPDialog(String title, String message
-            , DialogInterface.OnClickListener positiveListener
-            , DialogInterface.OnClickListener negativeListener
-            , Handler handler) {
-
-        closeDialog();
-
-        LayoutInflater inflater = (LayoutInflater)mContext
-                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-        View rootView = inflater.inflate(R.layout.add_ip_dialog, null);
-        TextView tvTitle = (TextView) rootView.findViewById(R.id.tv_title);
-        TextView tvMessage = (TextView) rootView.findViewById(R.id.tv_message);
-        LinearLayout TempLayout = (LinearLayout) rootView.findViewById(R.id.add_ip_dialog_width);
-        int tempWidth = 700;
-        if(ModelType == Version.MODEL_TYPE.IHN_1020B_A2)
-        {
-            tempWidth = 900;
-        }
-        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(tempWidth, ViewGroup.LayoutParams.MATCH_PARENT);
-        TempLayout.setLayoutParams(params);
-
-        tvTitle.setText(title);
-        message = "\n" + message + "\n";
-        tvMessage.setText(message);
-
-        AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
-        builder.setView(rootView);
-//        builder.setMessage(message)
-        builder.setCancelable(true);
-
-        if (positiveListener != null) {
-            builder.setPositiveButton(android.R.string.ok, positiveListener);
-        }
-
-        if (negativeListener != null) {
-            builder.setNegativeButton(android.R.string.cancel, negativeListener);
-        }
-
-
-        mDialog = builder.create();
-        //mDialog.setIcon(android.R.drawable.ic_dialog_alert);
-        //mDialog.setTitle(title);
-
-//mDialog = new EditTextDialog(mContext, null);
-
-
-        tvLocalIP_1 = (TextView)rootView.findViewById(R.id.tv_local_ip_1);
-        tvLocalIP_2 = (TextView)rootView.findViewById(R.id.tv_local_ip_2);
-        tvLocalIP_3 = (TextView)rootView.findViewById(R.id.tv_local_ip_3);
-        tvLocalIP_4 = (TextView)rootView.findViewById(R.id.tv_local_ip_4);
-
-        tvLocalIP_1.setOnClickListener(mButtonClick);
-        tvLocalIP_2.setOnClickListener(mButtonClick);
-        tvLocalIP_3.setOnClickListener(mButtonClick);
-        tvLocalIP_4.setOnClickListener(mButtonClick);
-
-
-        wallpaddbmgr dbmgr = new wallpaddbmgr(mContext);
-        String localIP = dbmgr.getAddressMGR().IPAddress;
-        dbmgr.closeDB();
-
-        if ((localIP != null) && (localIP.length() > Const.IP_MIN_LENGTH)) {
-            String[] arrLocalIPString = StringUtil.split(localIP, ".");
-            if (arrLocalIPString.length > 3) {
-                if (DEBUG)  Log.d(TAG, "local_ip : "
-                        + arrLocalIPString[0] + "."
-                        + arrLocalIPString[1] + "."
-                        + arrLocalIPString[2] + "."
-                        + arrLocalIPString[3] + "."
-                );
-
-                tvLocalIP_1.setText(arrLocalIPString[0]);
-                tvLocalIP_2.setText(arrLocalIPString[1]);
-                tvLocalIP_3.setText(arrLocalIPString[2]);
-                tvLocalIP_4.setText(arrLocalIPString[3]);
-            }
-        }
-
-
-        Button btnNum1 = (Button)rootView.findViewById(R.id.num1);
-        Button btnNum2 = (Button)rootView.findViewById(R.id.num2);
-        Button btnNum3 = (Button)rootView.findViewById(R.id.num3);
-        Button btnNum4 = (Button)rootView.findViewById(R.id.num4);
-        Button btnNum5 = (Button)rootView.findViewById(R.id.num5);
-        Button btnNum6 = (Button)rootView.findViewById(R.id.num6);
-        Button btnNum7 = (Button)rootView.findViewById(R.id.num7);
-        Button btnNum8 = (Button)rootView.findViewById(R.id.num8);
-        Button btnNum9 = (Button)rootView.findViewById(R.id.num9);
-        Button btnNum0 = (Button)rootView.findViewById(R.id.num0);
-        Button btnDot = (Button)rootView.findViewById(R.id.dot);
-        Button btnEraser = (Button)rootView.findViewById(R.id.btn_eraser);
-
-        btnNum1.setOnClickListener(mNumButtonClick);
-        btnNum2.setOnClickListener(mNumButtonClick);
-        btnNum3.setOnClickListener(mNumButtonClick);
-        btnNum4.setOnClickListener(mNumButtonClick);
-        btnNum5.setOnClickListener(mNumButtonClick);
-        btnNum6.setOnClickListener(mNumButtonClick);
-        btnNum7.setOnClickListener(mNumButtonClick);
-        btnNum8.setOnClickListener(mNumButtonClick);
-        btnNum9.setOnClickListener(mNumButtonClick);
-        btnNum0.setOnClickListener(mNumButtonClick);
-        btnDot.setOnClickListener(mNumButtonClick);
-        btnEraser.setOnClickListener(mNumButtonClick);
-
-        mDialog.show();
-    }
-
-
-
-    private View.OnClickListener mButtonClick = new View.OnClickListener() {
-        @Override
-        public void onClick(View v) {
-
-            switch(v.getId())
-            {
-                //mWpadSound.Play(SND.effect.TOUCH_LATCHED);
-                case R.id.tv_local_ip_1:
-                case R.id.tv_local_ip_2:
-                case R.id.tv_local_ip_3:
-                case R.id.tv_local_ip_4:
-                {
-                    if (mSelectedView != null) {
-                        mSelectedView.setBackgroundColor(mContext.getResources().getColor(R.color.textview_default));
-                    }
-
-                    mSelectedView = (TextView)v;
-                    v.setBackgroundColor(mContext.getResources().getColor(R.color.textview_selected));
-                }
-                break;
-
-                default:
-                    break;
-            }
-
-        }
-    };
-
-
-    private View.OnClickListener mNumButtonClick = new View.OnClickListener() {
-        @Override
-        public void onClick(View v) {
-
-            int getnum = -1;
-            switch(v.getId())
-            {
-                case R.id.num1: getnum = 1;
-                    //mWpadSound.Play(SND.number.NUM1);
-                    break;
-                case R.id.num2: getnum = 2;
-                    //mWpadSound.Play(SND.number.NUM2);
-                    break;
-                case R.id.num3: getnum = 3;
-                    //mWpadSound.Play(SND.number.NUM3);
-                    break;
-                case R.id.num4: getnum = 4;
-                    //mWpadSound.Play(SND.number.NUM4);
-                    break;
-                case R.id.num5: getnum = 5;
-                    //mWpadSound.Play(SND.number.NUM5);
-                    break;
-                case R.id.num6: getnum = 6;
-                    //mWpadSound.Play(SND.number.NUM6);
-                    break;
-                case R.id.num7: getnum = 7;
-                    //mWpadSound.Play(SND.number.NUM7);
-                    break;
-                case R.id.num8: getnum = 8;
-                    //mWpadSound.Play(SND.number.NUM8);
-                    break;
-                case R.id.num9: getnum = 9;
-                    //mWpadSound.Play(SND.number.NUM9);
-                    break;
-                case R.id.num0: getnum = 0;
-                    //mWpadSound.Play(SND.number.NUM0);
-                    break;
-
-                case R.id.dot:
-                    break;
-
-                case R.id.btn_eraser:
-                    if (DEBUG)  Log.d(TAG, "onClick() btn_eraser" );
-
-                    eraseProc();
-                    break;
-
-                default:
-                    break;
-            }
-
-            if (getnum>-1)
-                addProc(getnum);
-        }
-    };
-
-
-    // 마지막 입력문자 제거
-    private void eraseProc()
-    {
-        if (mSelectedView == null)  return;
-
-        String selectText = mSelectedView.getText().toString();
-        if (selectText.length() == 0) return;
-
-        selectText = selectText.substring(0,selectText.length()-1);
-        mSelectedView.setText(selectText);
-    }
-
-
-    // 입력문자 추가
-    private void addProc(int getNum)
-    {
-        if (mSelectedView == null)  return;
-
-        String selectText = mSelectedView.getText().toString();
-
-        selectText += String.valueOf(getNum);
-
-        mSelectedView.setText(selectText);
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    // close Dialog
-    public void closeDialog() {
-        if (mDialog != null) {
-            mDialog.dismiss();
-            mDialog = null;
-            mEditText = null;
-
-            tvLocalIP_1 = null;
-            tvLocalIP_2 = null;
-            tvLocalIP_3 = null;
-            tvLocalIP_4 = null;
-        }
-    }
-
-
-
-}
+package com.artncore.managersetting.util;
+
+import kr.co.icontrols.wallpadsupport.Version;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.os.Handler;
+import android.text.InputType;
+import android.text.method.PasswordTransformationMethod;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.artncore.WallPadDataMgr.wallpaddbmgr;
+import com.artncore.managersetting.R;
+import com.artncore.managersetting.domain.Const;
+
+public class DialogUtil {
+    private static final String TAG = "DialogUtil";
+
+    private static final boolean DEBUG = true;
+
+    private Context mContext;
+    private static Dialog mDialog;
+    private EditText mEditText;
+
+    private TextView tvLocalIP_1;
+    private TextView tvLocalIP_2;
+    private TextView tvLocalIP_3;
+    private TextView tvLocalIP_4;
+
+    private TextView mSelectedView = null;
+
+    private int ModelType = Version.getModelType();
+
+    // constructor
+    public DialogUtil(Context context) {
+        mContext = context;
+    }
+
+
+    // open CommonDialog
+    public void openCommonDialog(String title, String message
+            , DialogInterface.OnClickListener positiveListener
+            , DialogInterface.OnClickListener negativeListener) {
+
+        closeDialog();
+
+        LayoutInflater inflater = (LayoutInflater)mContext
+                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+        View rootView = inflater.inflate(R.layout.common_dialog, null);
+        TextView tvTitle = (TextView) rootView.findViewById(R.id.tv_title);;
+        TextView tvMessage = (TextView) rootView.findViewById(R.id.tv_message);;
+
+        tvTitle.setText(title);
+        message = "\n" + message + "\n";
+        tvMessage.setText(message);
+
+        AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
+        builder.setView(rootView);
+//        builder.setMessage(message)
+        builder.setCancelable(true);
+
+        if (positiveListener != null) {
+            builder.setPositiveButton(android.R.string.ok, positiveListener);
+        }
+
+/*
+        builder.setPositiveButton(android.R.string.ok,
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        dialog.dismiss();
+                    }
+                });
+*/
+
+        if (negativeListener != null) {
+            builder.setNegativeButton(android.R.string.cancel, negativeListener);
+        }
+
+/*
+        builder.setNegativeButton(R.string.dialog_cancel,
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        dialog.cancel();
+                    }
+                });
+*/
+
+
+        mDialog = builder.create();
+        //mDialog.setIcon(android.R.drawable.ic_dialog_alert);
+        //mDialog.setTitle(title);
+        mDialog.show();
+    }
+
+
+    // open NoticeDialog
+    public void openNoticeDialog(String title, String message) {
+
+        DialogInterface.OnClickListener positiveListener =
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int id) {
+                        //dialog.dismiss();
+                        closeDialog();
+                    }
+                };
+
+        openCommonDialog(title, message, positiveListener, null);
+    }
+
+
+
+
+
+
+    // open PasswordDialogg
+    public void openPasswordDialog(String title, String message
+            , DialogInterface.OnClickListener positiveListener
+            , DialogInterface.OnClickListener negativeListener
+            , Handler handler) {
+
+        closeDialog();
+
+        LayoutInflater inflater = (LayoutInflater)mContext
+                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+        View rootView = inflater.inflate(R.layout.edit_text_dialog, null);
+        TextView tvTitle = (TextView) rootView.findViewById(R.id.tv_title);
+        TextView tvMessage = (TextView) rootView.findViewById(R.id.tv_message);
+        EditText etText = (EditText) rootView.findViewById(R.id.edit_text);;
+        etText.setInputType( InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD );
+        etText.setTransformationMethod(PasswordTransformationMethod.getInstance());
+
+
+        tvTitle.setText(title);
+        message = "\n" + message + "\n";
+        tvMessage.setText(message);
+
+        AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
+        builder.setView(rootView);
+//        builder.setMessage(message)
+        builder.setCancelable(true);
+
+        if (positiveListener != null) {
+            builder.setPositiveButton(android.R.string.ok, positiveListener);
+        }
+
+        if (negativeListener != null) {
+            builder.setNegativeButton(android.R.string.cancel, negativeListener);
+        }
+
+
+        mDialog = builder.create();
+        mDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE );
+        //mDialog.setIcon(android.R.drawable.ic_dialog_alert);
+        //mDialog.setTitle(title);
+
+//mDialog = new EditTextDialog(mContext, null);
+
+
+        mEditText = etText;
+
+        mDialog.show();
+    }
+
+
+    // open EditTextDialog
+    public void openEditTextDialog(String title, String message
+            , DialogInterface.OnClickListener positiveListener
+            , DialogInterface.OnClickListener negativeListener
+            , Handler handler) {
+
+        closeDialog();
+
+        LayoutInflater inflater = (LayoutInflater)mContext
+                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+        View rootView = inflater.inflate(R.layout.edit_text_dialog, null);
+        TextView tvTitle = (TextView) rootView.findViewById(R.id.tv_title);
+        TextView tvMessage = (TextView) rootView.findViewById(R.id.tv_message);
+        EditText etText = (EditText) rootView.findViewById(R.id.edit_text);;
+
+        tvTitle.setText(title);
+        message = "\n" + message + "\n";
+        tvMessage.setText(message);
+
+        AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
+        builder.setView(rootView);
+//        builder.setMessage(message)
+        builder.setCancelable(true);
+
+        if (positiveListener != null) {
+            builder.setPositiveButton(android.R.string.ok, positiveListener);
+        }
+
+        if (negativeListener != null) {
+            builder.setNegativeButton(android.R.string.cancel, negativeListener);
+        }
+
+
+        mDialog = builder.create();
+        //mDialog.setIcon(android.R.drawable.ic_dialog_alert);
+        //mDialog.setTitle(title);
+
+//mDialog = new EditTextDialog(mContext, null);
+
+
+        mEditText = etText;
+
+        mDialog.show();
+    }
+
+
+    // get EditText String
+    public String getEditText() {
+        if ((mDialog == null) || (mEditText == null))
+            return null;
+
+        return mEditText.getText().toString();
+    }
+
+
+    // hide SoftKeypad
+    public void hideSoftKeypad() {
+        if ((mDialog == null) || (mEditText == null))
+            return;
+
+        InputMethodManager imm = (InputMethodManager)mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
+        imm.hideSoftInputFromWindow(mEditText.getWindowToken(), 0);
+    }
+
+
+
+
+    // get IP in EditText
+    public String getEditIPText() {
+        if ((mDialog == null) || (tvLocalIP_1 == null))
+            return null;
+
+
+        String strLocalIP_FirstNum =   tvLocalIP_1.getText().toString();
+        String strLocalIP_SecondNum = tvLocalIP_2.getText().toString();
+        String strLocalIP_ThirtNum =   tvLocalIP_3.getText().toString();
+        String strLocalIP_FouthNum =   tvLocalIP_4.getText().toString();
+        String strLocalIP = strLocalIP_FirstNum
+                + "." + strLocalIP_SecondNum
+                + "." + strLocalIP_ThirtNum
+                + "." + strLocalIP_FouthNum
+                ;
+
+
+        return strLocalIP;
+    }
+
+
+
+
+
+
+
+    // open AddIPDialog
+    public void openAddIPDialog(String title, String message
+            , DialogInterface.OnClickListener positiveListener
+            , DialogInterface.OnClickListener negativeListener
+            , Handler handler) {
+
+        closeDialog();
+
+        LayoutInflater inflater = (LayoutInflater)mContext
+                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+        View rootView = inflater.inflate(R.layout.add_ip_dialog, null);
+        TextView tvTitle = (TextView) rootView.findViewById(R.id.tv_title);
+        TextView tvMessage = (TextView) rootView.findViewById(R.id.tv_message);
+        LinearLayout TempLayout = (LinearLayout) rootView.findViewById(R.id.add_ip_dialog_width);
+        int tempWidth = 700;
+        if(ModelType == Version.MODEL_TYPE.IHN_1020B_A2)
+        {
+            tempWidth = 900;
+        }
+        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(tempWidth, ViewGroup.LayoutParams.MATCH_PARENT);
+        TempLayout.setLayoutParams(params);
+
+        tvTitle.setText(title);
+        message = "\n" + message + "\n";
+        tvMessage.setText(message);
+
+        AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
+        builder.setView(rootView);
+//        builder.setMessage(message)
+        builder.setCancelable(true);
+
+        if (positiveListener != null) {
+            builder.setPositiveButton(android.R.string.ok, positiveListener);
+        }
+
+        if (negativeListener != null) {
+            builder.setNegativeButton(android.R.string.cancel, negativeListener);
+        }
+
+
+        mDialog = builder.create();
+        //mDialog.setIcon(android.R.drawable.ic_dialog_alert);
+        //mDialog.setTitle(title);
+
+//mDialog = new EditTextDialog(mContext, null);
+
+
+        tvLocalIP_1 = (TextView)rootView.findViewById(R.id.tv_local_ip_1);
+        tvLocalIP_2 = (TextView)rootView.findViewById(R.id.tv_local_ip_2);
+        tvLocalIP_3 = (TextView)rootView.findViewById(R.id.tv_local_ip_3);
+        tvLocalIP_4 = (TextView)rootView.findViewById(R.id.tv_local_ip_4);
+
+        tvLocalIP_1.setOnClickListener(mButtonClick);
+        tvLocalIP_2.setOnClickListener(mButtonClick);
+        tvLocalIP_3.setOnClickListener(mButtonClick);
+        tvLocalIP_4.setOnClickListener(mButtonClick);
+
+
+        wallpaddbmgr dbmgr = new wallpaddbmgr(mContext);
+        String localIP = dbmgr.getAddressMGR().IPAddress;
+        dbmgr.closeDB();
+
+        if ((localIP != null) && (localIP.length() > Const.IP_MIN_LENGTH)) {
+            String[] arrLocalIPString = StringUtil.split(localIP, ".");
+            if (arrLocalIPString.length > 3) {
+                if (DEBUG)  Log.d(TAG, "local_ip : "
+                        + arrLocalIPString[0] + "."
+                        + arrLocalIPString[1] + "."
+                        + arrLocalIPString[2] + "."
+                        + arrLocalIPString[3] + "."
+                );
+
+                tvLocalIP_1.setText(arrLocalIPString[0]);
+                tvLocalIP_2.setText(arrLocalIPString[1]);
+                tvLocalIP_3.setText(arrLocalIPString[2]);
+                tvLocalIP_4.setText(arrLocalIPString[3]);
+            }
+        }
+
+
+        Button btnNum1 = (Button)rootView.findViewById(R.id.num1);
+        Button btnNum2 = (Button)rootView.findViewById(R.id.num2);
+        Button btnNum3 = (Button)rootView.findViewById(R.id.num3);
+        Button btnNum4 = (Button)rootView.findViewById(R.id.num4);
+        Button btnNum5 = (Button)rootView.findViewById(R.id.num5);
+        Button btnNum6 = (Button)rootView.findViewById(R.id.num6);
+        Button btnNum7 = (Button)rootView.findViewById(R.id.num7);
+        Button btnNum8 = (Button)rootView.findViewById(R.id.num8);
+        Button btnNum9 = (Button)rootView.findViewById(R.id.num9);
+        Button btnNum0 = (Button)rootView.findViewById(R.id.num0);
+        Button btnDot = (Button)rootView.findViewById(R.id.dot);
+        Button btnEraser = (Button)rootView.findViewById(R.id.btn_eraser);
+
+        btnNum1.setOnClickListener(mNumButtonClick);
+        btnNum2.setOnClickListener(mNumButtonClick);
+        btnNum3.setOnClickListener(mNumButtonClick);
+        btnNum4.setOnClickListener(mNumButtonClick);
+        btnNum5.setOnClickListener(mNumButtonClick);
+        btnNum6.setOnClickListener(mNumButtonClick);
+        btnNum7.setOnClickListener(mNumButtonClick);
+        btnNum8.setOnClickListener(mNumButtonClick);
+        btnNum9.setOnClickListener(mNumButtonClick);
+        btnNum0.setOnClickListener(mNumButtonClick);
+        btnDot.setOnClickListener(mNumButtonClick);
+        btnEraser.setOnClickListener(mNumButtonClick);
+
+        mDialog.show();
+    }
+
+
+
+    private View.OnClickListener mButtonClick = new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+
+            switch(v.getId())
+            {
+                //mWpadSound.Play(SND.effect.TOUCH_LATCHED);
+                case R.id.tv_local_ip_1:
+                case R.id.tv_local_ip_2:
+                case R.id.tv_local_ip_3:
+                case R.id.tv_local_ip_4:
+                {
+                    if (mSelectedView != null) {
+                        mSelectedView.setBackgroundColor(mContext.getResources().getColor(R.color.textview_default));
+                    }
+
+                    mSelectedView = (TextView)v;
+                    v.setBackgroundColor(mContext.getResources().getColor(R.color.textview_selected));
+                }
+                break;
+
+                default:
+                    break;
+            }
+
+        }
+    };
+
+
+    private View.OnClickListener mNumButtonClick = new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+
+            int getnum = -1;
+            switch(v.getId())
+            {
+                case R.id.num1: getnum = 1;
+                    //mWpadSound.Play(SND.number.NUM1);
+                    break;
+                case R.id.num2: getnum = 2;
+                    //mWpadSound.Play(SND.number.NUM2);
+                    break;
+                case R.id.num3: getnum = 3;
+                    //mWpadSound.Play(SND.number.NUM3);
+                    break;
+                case R.id.num4: getnum = 4;
+                    //mWpadSound.Play(SND.number.NUM4);
+                    break;
+                case R.id.num5: getnum = 5;
+                    //mWpadSound.Play(SND.number.NUM5);
+                    break;
+                case R.id.num6: getnum = 6;
+                    //mWpadSound.Play(SND.number.NUM6);
+                    break;
+                case R.id.num7: getnum = 7;
+                    //mWpadSound.Play(SND.number.NUM7);
+                    break;
+                case R.id.num8: getnum = 8;
+                    //mWpadSound.Play(SND.number.NUM8);
+                    break;
+                case R.id.num9: getnum = 9;
+                    //mWpadSound.Play(SND.number.NUM9);
+                    break;
+                case R.id.num0: getnum = 0;
+                    //mWpadSound.Play(SND.number.NUM0);
+                    break;
+
+                case R.id.dot:
+                    break;
+
+                case R.id.btn_eraser:
+                    if (DEBUG)  Log.d(TAG, "onClick() btn_eraser" );
+
+                    eraseProc();
+                    break;
+
+                default:
+                    break;
+            }
+
+            if (getnum>-1)
+                addProc(getnum);
+        }
+    };
+
+
+    // 마지막 입력문자 제거
+    private void eraseProc()
+    {
+        if (mSelectedView == null)  return;
+
+        String selectText = mSelectedView.getText().toString();
+        if (selectText.length() == 0) return;
+
+        selectText = selectText.substring(0,selectText.length()-1);
+        mSelectedView.setText(selectText);
+    }
+
+
+    // 입력문자 추가
+    private void addProc(int getNum)
+    {
+        if (mSelectedView == null)  return;
+
+        String selectText = mSelectedView.getText().toString();
+
+        selectText += String.valueOf(getNum);
+
+        mSelectedView.setText(selectText);
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    // close Dialog
+    public void closeDialog() {
+        if (mDialog != null) {
+            mDialog.dismiss();
+            mDialog = null;
+            mEditText = null;
+
+            tvLocalIP_1 = null;
+            tvLocalIP_2 = null;
+            tvLocalIP_3 = null;
+            tvLocalIP_4 = null;
+        }
+    }
+
+
+
+}

+ 277 - 277
ManagerSetting/src/main/java/com/artncore/managersetting/util/NetworkUtil.java

@@ -1,277 +1,277 @@
-package com.artncore.managersetting.util;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import com.artncore.WallPadDataMgr.WallpadStatusData;
-import com.artncore.WallPadDataMgr.WallpadStatusData.PhoneAddr;
-import com.artncore.WallPadDataMgr.wallpaddbmgr;
-import com.artncore.WallPadDataMgr.wallpaddbmgr.AddressSet;
-
-import com.artncore.managersetting.domain.Const;
-import com.artncore.managersetting.ui.activities.MainActivity;
-
-import android.content.Context;
-import android.util.Log;
-
-import com.artncore.managersetting.R;
-
-
-public class NetworkUtil {
-    private static final String TAG = "NetworkUtil";
-
-    private static final boolean DEBUG = true;
-
-
-
-    // get 동 BaseNumber
-    public static int getDongBaseNumber(Context context) {
-        int ret = -1;
-
-        wallpaddbmgr dbmgr = new wallpaddbmgr(context);
-        AddressSet addc =  dbmgr.getAddressMGR();
-        dbmgr.closeDB();
-
-        int nDong = StringUtil.getInt(addc.Dong, false);
-        if (nDong > -1)
-            ret = (nDong/100) * 100;
-
-        return ret;
-    }
-
-
-    // get MyIP
-    public static String getMyIP(Context context) {
-
-        wallpaddbmgr dbmgr = new wallpaddbmgr(context);
-        String myIP =  dbmgr.getAddressMGR().IPAddress;
-        dbmgr.closeDB();
-
-        return myIP;
-    }
-
-
-    // get 단지서버 address
-    public static PhoneAddr getAptsServerAddr(Context context) {
-
-        WallpadStatusData wallpadStatusData = new WallpadStatusData(context);
-        WallpadStatusData.PhoneAddr phoneAddr = new WallpadStatusData.PhoneAddr();
-        phoneAddr.Name = context.getString(R.string.check_network_apts_server);
-        phoneAddr.IP = wallpadStatusData.GetServerIP();
-        wallpadStatusData.closeDB();
-
-        return phoneAddr;
-    }
-
-
-    // get 단지서버 port
-    public static int getAptsServerPort(Context context) {
-
-        WallpadStatusData wallpadStatusData = new WallpadStatusData(context);
-        int serverPort = wallpadStatusData.GetServerPort();
-        wallpadStatusData.closeDB();
-
-        return serverPort;
-    }
-
-
-    // get ManagePC address
-    public static PhoneAddr getManagePCAddr(Context context) {
-        WallpadStatusData wallpadStatusData = new WallpadStatusData(context);
-        WallpadStatusData.PhoneAddr phoneAddr = new WallpadStatusData.PhoneAddr();
-        phoneAddr.Name = context.getString(R.string.check_network_apts_manage_pc);
-        phoneAddr.IP = wallpadStatusData.GetManagePCIP();
-        wallpadStatusData.closeDB();
-
-        return phoneAddr;
-    }
-
-
-    // get Gateway address
-    public static PhoneAddr getGatewayAddr(Context context) {
-
-        wallpaddbmgr dbmgr = new wallpaddbmgr(context);
-        String myIP =  dbmgr.getAddressMGR().IPAddress;
-        dbmgr.closeDB();
-        String gatewayIP = "";
-
-        if (DEBUG)  Log.d(TAG, " IP : " + myIP);
-
-        String[] arrString = StringUtil.split(myIP, ".");
-        if (arrString!=null && arrString.length > 3) {
-
-            if (DEBUG)  Log.d(TAG, " arrString.length : " + arrString.length);
-
-            if (DEBUG)  Log.d(TAG, " arrString[0] : " + arrString[0]);
-            if (DEBUG)  Log.d(TAG, " arrString[1] : " + arrString[1]);
-            if (DEBUG)  Log.d(TAG, " arrString[2] : " + arrString[2]);
-            if (DEBUG)  Log.d(TAG, " arrString[3] : " + arrString[3]);
-
-            gatewayIP = arrString[0] + "."
-                    + arrString[1] + "."
-                    + Const.DEFAULT_GATEWAY_IP_THIRD+ "."
-                    + Const.DEFAULT_GATEWAY_IP_FORTH;
-
-            if (DEBUG)  Log.d(TAG, " gatewayIP : " + gatewayIP);
-        }
-
-        //NetworkInfo phoneAddr = new NetworkInfo(context.getString(R.string.check_network_gateway)
-        //                                            , gatewayIP);
-        WallpadStatusData.PhoneAddr phoneAddr = new WallpadStatusData.PhoneAddr();
-        phoneAddr.Name = context.getString(R.string.check_network_gateway);
-        phoneAddr.IP = gatewayIP;
-
-        return phoneAddr;
-    }
-
-
-    // get NVRServer address
-    public static PhoneAddr getNVRServerAddr(Context context) {
-        String NVRServerIP = "";
-
-        WallpadStatusData.PhoneAddr phoneAddr = new WallpadStatusData.PhoneAddr();
-        phoneAddr.Name = context.getString(R.string.check_network_nvr_server);
-        phoneAddr.IP = NVRServerIP;
-
-        return phoneAddr;
-    }
-
-
-    // get FTPServer address
-    public static PhoneAddr getFTPServerAddr(Context context) {
-        WallpadStatusData wallpadStatusData = new WallpadStatusData(context);
-        WallpadStatusData.PhoneAddr phoneAddr = new WallpadStatusData.PhoneAddr();
-        phoneAddr.Name = context.getString(R.string.check_network_ftp_server);
-        phoneAddr.IP = wallpadStatusData.GetFTPIP();
-        wallpadStatusData.closeDB();
-
-        return phoneAddr;
-    }
-
-
-    // get 근접이웃 list
-    public static List<PhoneAddr> getNeiAddrList(Context context) {
-
-        List<PhoneAddr> phoneAddrList = new ArrayList<PhoneAddr>();
-        wallpaddbmgr dbmgr = new wallpaddbmgr(context);
-        String myIP =  dbmgr.getAddressMGR().IPAddress;
-        dbmgr.closeDB();
-
-        if (DEBUG)  Log.d(TAG, " IP : " + myIP);
-
-        String[] arrString = StringUtil.split(myIP, ".");
-        if (arrString!=null && arrString.length > 3) {
-
-            if (DEBUG)  Log.d(TAG, " arrString.length : " + arrString.length);
-
-            if (DEBUG)  Log.d(TAG, " arrString[0] : " + arrString[0]);
-            if (DEBUG)  Log.d(TAG, " arrString[1] : " + arrString[1]);
-            if (DEBUG)  Log.d(TAG, " arrString[2] : " + arrString[2]);
-            if (DEBUG)  Log.d(TAG, " arrString[3] : " + arrString[3]);
-
-            int myStaris = StringUtil.getInt(arrString[2], false);
-            if (myStaris > 0) {
-                int downstairsIP_third = StringUtil.getInt(arrString[2], false) - 1;
-                if (downstairsIP_third > -1) {
-                    String downstairsIP = arrString[0] + "."
-                            + arrString[1] + "."
-                            + downstairsIP_third + "."
-                            + arrString[3];
-
-                    WallpadStatusData.PhoneAddr downstairsAddr = new WallpadStatusData.PhoneAddr();
-                    downstairsAddr.Name = context.getString(R.string.neighborhood);
-                    downstairsAddr.IP = downstairsIP;
-
-                    phoneAddrList.add(downstairsAddr);
-
-                    if (DEBUG)  Log.d(TAG, " downstairsIP : " + downstairsIP);
-                }
-            }
-            else {
-                int upstairsIP_third = StringUtil.getInt(arrString[2], false) + 1;
-                if (upstairsIP_third > 0) {
-                    String upstairsIP = arrString[0] + "."
-                            + arrString[1] + "."
-                            + upstairsIP_third + "."
-                            + arrString[3];
-
-                    WallpadStatusData.PhoneAddr upstairsAddr = new WallpadStatusData.PhoneAddr();
-                    upstairsAddr.Name = context.getString(R.string.neighborhood);
-                    upstairsAddr.IP = upstairsIP;
-
-                    phoneAddrList.add(upstairsAddr);
-
-                    if (DEBUG)  Log.d(TAG, " upstairsIP : " + upstairsIP);
-                }
-            }
-        }
-
-        return phoneAddrList;
-    }
-
-
-
-    // 유효한 IP인지 여부 return
-    public static boolean isValidIP(String strFirstNum, String strSecondNum, String strThirtNum, String strFouthNum) {
-        if ((strFirstNum.length() < 1)
-                || (strSecondNum.length() < 1)
-                || (strThirtNum.length() < 1)
-                || (strFouthNum.length() < 1)
-                ) {
-            return false;
-        }
-
-        int firstNum =  StringUtil.getInt(strFirstNum, false);
-        int secNum =  StringUtil.getInt(strSecondNum, false);
-        int thirdNum = StringUtil.getInt(strThirtNum, false);
-        int forthNum = StringUtil.getInt(strFouthNum, false);
-        if (firstNum > 255 || secNum > 255 || thirdNum > 255 || forthNum > 255
-                || firstNum < 0 || secNum < 0 || thirdNum < 0 || forthNum < 0
-                )
-        {
-            return false;
-        }
-
-        return true;
-    }
-
-
-
-    // 유효한 IP인지 여부 return
-    public static boolean isValidIP(String strIP) {
-        if ((strIP == null) || (strIP.length() < Const.IP_MIN_LENGTH))
-            return false;
-
-        String[] arrIPString = StringUtil.split(strIP, ".");
-        if (arrIPString.length > 3) {
-            if (DEBUG)  Log.d(TAG, "local_ip : "
-                    + arrIPString[0] + "."
-                    + arrIPString[1] + "."
-                    + arrIPString[2] + "."
-                    + arrIPString[3] + "."
-            );
-
-            return isValidIP(arrIPString[0], arrIPString[1], arrIPString[2], arrIPString[3]);
-        }
-
-        return false;
-    }
-
-
-
-
-
-
-/*
-    public static class NetworkInfo {
-        private String Name;
-        private String IP;
-
-        public NetworkInfo(String name, String ip) {
-            Name = name;
-            IP = ip;
-        }
-    }
-*/
-
-}
+package com.artncore.managersetting.util;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.artncore.WallPadDataMgr.WallpadStatusData;
+import com.artncore.WallPadDataMgr.WallpadStatusData.PhoneAddr;
+import com.artncore.WallPadDataMgr.wallpaddbmgr;
+import com.artncore.WallPadDataMgr.wallpaddbmgr.AddressSet;
+
+import com.artncore.managersetting.domain.Const;
+import com.artncore.managersetting.ui.activities.MainActivity;
+
+import android.content.Context;
+import android.util.Log;
+
+import com.artncore.managersetting.R;
+
+
+public class NetworkUtil {
+    private static final String TAG = "NetworkUtil";
+
+    private static final boolean DEBUG = true;
+
+
+
+    // get 동 BaseNumber
+    public static int getDongBaseNumber(Context context) {
+        int ret = -1;
+
+        wallpaddbmgr dbmgr = new wallpaddbmgr(context);
+        AddressSet addc =  dbmgr.getAddressMGR();
+        dbmgr.closeDB();
+
+        int nDong = StringUtil.getInt(addc.Dong, false);
+        if (nDong > -1)
+            ret = (nDong/100) * 100;
+
+        return ret;
+    }
+
+
+    // get MyIP
+    public static String getMyIP(Context context) {
+
+        wallpaddbmgr dbmgr = new wallpaddbmgr(context);
+        String myIP =  dbmgr.getAddressMGR().IPAddress;
+        dbmgr.closeDB();
+
+        return myIP;
+    }
+
+
+    // get 단지서버 address
+    public static PhoneAddr getAptsServerAddr(Context context) {
+
+        WallpadStatusData wallpadStatusData = new WallpadStatusData(context);
+        WallpadStatusData.PhoneAddr phoneAddr = new WallpadStatusData.PhoneAddr();
+        phoneAddr.Name = context.getString(R.string.check_network_apts_server);
+        phoneAddr.IP = wallpadStatusData.GetServerIP();
+        wallpadStatusData.closeDB();
+
+        return phoneAddr;
+    }
+
+
+    // get 단지서버 port
+    public static int getAptsServerPort(Context context) {
+
+        WallpadStatusData wallpadStatusData = new WallpadStatusData(context);
+        int serverPort = wallpadStatusData.GetServerPort();
+        wallpadStatusData.closeDB();
+
+        return serverPort;
+    }
+
+
+    // get ManagePC address
+    public static PhoneAddr getManagePCAddr(Context context) {
+        WallpadStatusData wallpadStatusData = new WallpadStatusData(context);
+        WallpadStatusData.PhoneAddr phoneAddr = new WallpadStatusData.PhoneAddr();
+        phoneAddr.Name = context.getString(R.string.check_network_apts_manage_pc);
+        phoneAddr.IP = wallpadStatusData.GetManagePCIP();
+        wallpadStatusData.closeDB();
+
+        return phoneAddr;
+    }
+
+
+    // get Gateway address
+    public static PhoneAddr getGatewayAddr(Context context) {
+
+        wallpaddbmgr dbmgr = new wallpaddbmgr(context);
+        String myIP =  dbmgr.getAddressMGR().IPAddress;
+        dbmgr.closeDB();
+        String gatewayIP = "";
+
+        if (DEBUG)  Log.d(TAG, " IP : " + myIP);
+
+        String[] arrString = StringUtil.split(myIP, ".");
+        if (arrString.length > 3) {
+
+            if (DEBUG)  Log.d(TAG, " arrString.length : " + arrString.length);
+
+            if (DEBUG)  Log.d(TAG, " arrString[0] : " + arrString[0]);
+            if (DEBUG)  Log.d(TAG, " arrString[1] : " + arrString[1]);
+            if (DEBUG)  Log.d(TAG, " arrString[2] : " + arrString[2]);
+            if (DEBUG)  Log.d(TAG, " arrString[3] : " + arrString[3]);
+
+            gatewayIP = arrString[0] + "."
+                    + arrString[1] + "."
+                    + Const.DEFAULT_GATEWAY_IP_THIRD+ "."
+                    + Const.DEFAULT_GATEWAY_IP_FORTH;
+
+            if (DEBUG)  Log.d(TAG, " gatewayIP : " + gatewayIP);
+        }
+
+        //NetworkInfo phoneAddr = new NetworkInfo(context.getString(R.string.check_network_gateway)
+        //                                            , gatewayIP);
+        WallpadStatusData.PhoneAddr phoneAddr = new WallpadStatusData.PhoneAddr();
+        phoneAddr.Name = context.getString(R.string.check_network_gateway);
+        phoneAddr.IP = gatewayIP;
+
+        return phoneAddr;
+    }
+
+
+    // get NVRServer address
+    public static PhoneAddr getNVRServerAddr(Context context) {
+        String NVRServerIP = "";
+
+        WallpadStatusData.PhoneAddr phoneAddr = new WallpadStatusData.PhoneAddr();
+        phoneAddr.Name = context.getString(R.string.check_network_nvr_server);
+        phoneAddr.IP = NVRServerIP;
+
+        return phoneAddr;
+    }
+
+
+    // get FTPServer address
+    public static PhoneAddr getFTPServerAddr(Context context) {
+        WallpadStatusData wallpadStatusData = new WallpadStatusData(context);
+        WallpadStatusData.PhoneAddr phoneAddr = new WallpadStatusData.PhoneAddr();
+        phoneAddr.Name = context.getString(R.string.check_network_ftp_server);
+        phoneAddr.IP = wallpadStatusData.GetFTPIP();
+        wallpadStatusData.closeDB();
+
+        return phoneAddr;
+    }
+
+
+    // get 근접이웃 list
+    public static List<PhoneAddr> getNeiAddrList(Context context) {
+
+        List<PhoneAddr> phoneAddrList = new ArrayList<PhoneAddr>();
+        wallpaddbmgr dbmgr = new wallpaddbmgr(context);
+        String myIP =  dbmgr.getAddressMGR().IPAddress;
+        dbmgr.closeDB();
+
+        if (DEBUG)  Log.d(TAG, " IP : " + myIP);
+
+        String[] arrString = StringUtil.split(myIP, ".");
+        if (arrString.length > 3) {
+
+            if (DEBUG)  Log.d(TAG, " arrString.length : " + arrString.length);
+
+            if (DEBUG)  Log.d(TAG, " arrString[0] : " + arrString[0]);
+            if (DEBUG)  Log.d(TAG, " arrString[1] : " + arrString[1]);
+            if (DEBUG)  Log.d(TAG, " arrString[2] : " + arrString[2]);
+            if (DEBUG)  Log.d(TAG, " arrString[3] : " + arrString[3]);
+
+            int myStaris = StringUtil.getInt(arrString[2], false);
+            if (myStaris > 0) {
+                int downstairsIP_third = StringUtil.getInt(arrString[2], false) - 1;
+                if (downstairsIP_third > -1) {
+                    String downstairsIP = arrString[0] + "."
+                            + arrString[1] + "."
+                            + downstairsIP_third + "."
+                            + arrString[3];
+
+                    WallpadStatusData.PhoneAddr downstairsAddr = new WallpadStatusData.PhoneAddr();
+                    downstairsAddr.Name = context.getString(R.string.neighborhood);
+                    downstairsAddr.IP = downstairsIP;
+
+                    phoneAddrList.add(downstairsAddr);
+
+                    if (DEBUG)  Log.d(TAG, " downstairsIP : " + downstairsIP);
+                }
+            }
+            else {
+                int upstairsIP_third = StringUtil.getInt(arrString[2], false) + 1;
+                if (upstairsIP_third > 0) {
+                    String upstairsIP = arrString[0] + "."
+                            + arrString[1] + "."
+                            + upstairsIP_third + "."
+                            + arrString[3];
+
+                    WallpadStatusData.PhoneAddr upstairsAddr = new WallpadStatusData.PhoneAddr();
+                    upstairsAddr.Name = context.getString(R.string.neighborhood);
+                    upstairsAddr.IP = upstairsIP;
+
+                    phoneAddrList.add(upstairsAddr);
+
+                    if (DEBUG)  Log.d(TAG, " upstairsIP : " + upstairsIP);
+                }
+            }
+        }
+
+        return phoneAddrList;
+    }
+
+
+
+    // 유효한 IP인지 여부 return
+    public static boolean isValidIP(String strFirstNum, String strSecondNum, String strThirtNum, String strFouthNum) {
+        if ((strFirstNum.length() < 1)
+                || (strSecondNum.length() < 1)
+                || (strThirtNum.length() < 1)
+                || (strFouthNum.length() < 1)
+                ) {
+            return false;
+        }
+
+        int firstNum =  StringUtil.getInt(strFirstNum, false);
+        int secNum =  StringUtil.getInt(strSecondNum, false);
+        int thirdNum = StringUtil.getInt(strThirtNum, false);
+        int forthNum = StringUtil.getInt(strFouthNum, false);
+        if (firstNum > 255 || secNum > 255 || thirdNum > 255 || forthNum > 255
+                || firstNum < 0 || secNum < 0 || thirdNum < 0 || forthNum < 0
+                )
+        {
+            return false;
+        }
+
+        return true;
+    }
+
+
+
+    // 유효한 IP인지 여부 return
+    public static boolean isValidIP(String strIP) {
+        if ((strIP == null) || (strIP.length() < Const.IP_MIN_LENGTH))
+            return false;
+
+        String[] arrIPString = StringUtil.split(strIP, ".");
+        if (arrIPString.length > 3) {
+            if (DEBUG)  Log.d(TAG, "local_ip : "
+                    + arrIPString[0] + "."
+                    + arrIPString[1] + "."
+                    + arrIPString[2] + "."
+                    + arrIPString[3] + "."
+            );
+
+            return isValidIP(arrIPString[0], arrIPString[1], arrIPString[2], arrIPString[3]);
+        }
+
+        return false;
+    }
+
+
+
+
+
+
+/*
+    public static class NetworkInfo {
+        private String Name;
+        private String IP;
+
+        public NetworkInfo(String name, String ip) {
+            Name = name;
+            IP = ip;
+        }
+    }
+*/
+
+}

+ 274 - 307
ManagerSetting/src/main/java/com/artncore/managersetting/util/StorageUtil.java

@@ -1,307 +1,274 @@
-package com.artncore.managersetting.util;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.FileReader;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.StringTokenizer;
-
-import android.content.Context;
-import android.os.Environment;
-import android.os.StatFs;
-import android.util.Log;
-
-import com.util.LogUtil;
-
-
-public class StorageUtil {
-    private static final String TAG = "StorageUtil";
-
-    private static final boolean DEBUG_STATIC = true;
-
-    public static class StorageInfo {
-
-        public final String path;
-        public final boolean readonly;
-        public final boolean removable;
-        public final int number;
-
-        // constructor
-        StorageInfo(String path, boolean readonly, boolean removable, int number) {
-            this.path = path;
-            this.readonly = readonly;
-            this.removable = removable;
-            this.number = number;
-        }
-
-        // return storage name
-        public String getDisplayName() {
-            StringBuilder res = new StringBuilder();
-
-            if (!removable) {
-                res.append("Internal SD card");
-            } else if (number > 1) {
-                res.append("SD card " + number);
-            } else {
-                res.append("SD card");
-            }
-
-            if (readonly) {
-                res.append(" (Read only)");
-            }
-            return res.toString();
-        }
-
-        public String getPath() {
-            return path;
-        }
-    }
-
-    // mount된 storage list를 return
-    public static List<StorageInfo> getStorageList() {
-
-        List<StorageInfo> list = new ArrayList<StorageInfo>();
-        String def_path = Environment.getExternalStorageDirectory().getPath();
-        boolean def_path_removable = Environment.isExternalStorageRemovable();
-        String def_path_state = Environment.getExternalStorageState();
-        boolean def_path_available = def_path_state.equals(Environment.MEDIA_MOUNTED)
-                || def_path_state.equals(Environment.MEDIA_MOUNTED_READ_ONLY);
-        boolean def_path_readonly = Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED_READ_ONLY);
-
-        HashSet<String> paths = new HashSet<String>();
-        int cur_removable_number = 1;
-
-        if (def_path_available) {
-            paths.add(def_path);
-            list.add(0, new StorageInfo(def_path, def_path_readonly, def_path_removable, def_path_removable ? cur_removable_number++ : -1));
-        }
-
-        BufferedReader buf_reader = null;
-        try {
-            buf_reader = new BufferedReader(new FileReader("/proc/mounts"));
-            String line;
-            Log.d(TAG, "/proc/mounts");
-            while ((line = buf_reader.readLine()) != null) {
-                Log.d(TAG, line);
-                if (line.contains("vfat") || line.contains("/mnt")) {
-                    StringTokenizer tokens = new StringTokenizer(line, " ");
-                    String unused = tokens.nextToken(); //device
-                    String mount_point = tokens.nextToken(); //mount point
-                    if (paths.contains(mount_point)) {
-                        continue;
-                    }
-                    unused = tokens.nextToken(); //file system
-                    List<String> flags = Arrays.asList(tokens.nextToken().split(",")); //flags
-                    boolean readonly = flags.contains("ro");
-
-                    if (line.contains("/dev/block/vold")) {
-                        if (!line.contains("/mnt/secure")
-                                && !line.contains("/mnt/asec")
-                                && !line.contains("/mnt/obb")
-                                && !line.contains("/dev/mapper")
-                                && !line.contains("tmpfs")) {
-                            paths.add(mount_point);
-                            list.add(new StorageInfo(mount_point, readonly, true, cur_removable_number++));
-                        }
-                    }
-                }
-            }
-
-        } catch (FileNotFoundException ex) {
-            //ex.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, ex);
-        } catch (IOException ex) {
-            //ex.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, ex);
-        } finally {
-            if (buf_reader != null) {
-                try {
-                    buf_reader.close();
-                } catch (IOException ex) {}
-            }
-        }
-        return list;
-    }
-
-
-    // path의 mount 여부를 return
-    public static boolean isStorageMounted(String path) {
-        boolean ret = false;
-        List<StorageInfo> storageList = getStorageList();
-
-        for (int i = 0; i< storageList.size(); i++) {
-            String storagePath = storageList.get(i).getPath();
-            Log.d(TAG, "storagePath: "+storagePath);
-            if (storagePath.equals(path)) {
-                ret = true;
-                break;
-            }
-        }
-
-        return ret;
-    }
-
-
-    // return AvailableInternalStorageSize
-    public static long getAvailableInternalStorageSize() {
-        File path = Environment.getDataDirectory();
-        StatFs stat = new StatFs(path.getPath());
-        long blockSize = stat.getBlockSize();
-        long availableBlocks = stat.getAvailableBlocks();
-
-        if (DEBUG_STATIC)  Log.d(TAG, "internal Path : " + path);
-
-        return availableBlocks * blockSize;
-    }
-
-
-    // return TotalInternalStorageSize
-    public static long getTotalInternalStorageSize() {
-        File path = Environment.getDataDirectory();
-        StatFs stat = new StatFs(path.getPath());
-        long blockSize = stat.getBlockSize();
-        long totalBlocks = stat.getBlockCount();
-
-        if (DEBUG_STATIC)  Log.d(TAG, "internal Path : " + path);
-
-        return totalBlocks * blockSize;
-    }
-
-
-    // path의 AvailableUSBStorageSize를 return
-    public static long getAvailableUSBStorageSize(String path) {
-        if (isStorageMounted(path)) {
-            File file = new File(path);
-            StatFs stat = new StatFs(file.getPath());
-            long blockSize = stat.getBlockSize();
-            long availableBlocks = stat.getAvailableBlocks();
-
-            if (DEBUG_STATIC)  Log.d(TAG, "USB Path : " + file);
-
-            return availableBlocks * blockSize;
-        }
-
-        return 0;
-    }
-
-
-    // path의 TotalUSBStorageSize를 return
-    public static long getTotalUSBStorageSize(String path) {
-        if (isStorageMounted(path)) {
-            File file = new File(path);
-            StatFs stat = new StatFs(file.getPath());
-            long blockSize = stat.getBlockSize();
-            long totalBlocks = stat.getBlockCount();
-
-            if (DEBUG_STATIC)  Log.d(TAG, "USB Path : " + file);
-
-            return totalBlocks * blockSize;
-        }
-
-        return 0;
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-
-    // dir의 directory를 생성
-    public static boolean createDirectory(String dir) {
-        boolean ret = false;
-
-        File lf = new File(dir);
-        try {
-            if (!lf.exists()) {
-                lf.mkdirs();
-            }
-
-            ret = true;
-        } catch (RuntimeException re) {
-            Log.e(TAG, re.toString());
-        } catch (Exception e) {
-            //e.printStackTrace();            
-            LogUtil.errorLogInfo("", TAG, e);
-        }
-
-        return ret;
-    }
-
-
-
-    // file을 save_file에 복사
-    public static boolean copyFile(File file , String save_file) {
-        boolean result;
-
-        if (DEBUG_STATIC)   Log.d(TAG, "copyFile() file : " + file
-                + ", save_file : " + save_file
-        );
-
-        if(file !=null && file.exists()) {
-            FileInputStream fis = null;
-            FileOutputStream newfos = null;
-            try {
-                fis = new FileInputStream(file);
-                newfos = new FileOutputStream(save_file);
-                int readcount=0;
-                byte[] buffer = new byte[1024];
-                while((readcount = fis.read(buffer,0,1024))!= -1){
-                    newfos.write(buffer,0,readcount);
-                }
-                newfos.close();
-                fis.close();
-            } catch (RuntimeException re) {
-                Log.e(TAG, re.toString());
-            } catch (Exception e) {
-                //e.printStackTrace();            
-                LogUtil.errorLogInfo("", TAG, e);
-            }
-            finally {
-                if(fis!=null) {
-                    try {
-                        fis.close();
-                    } catch (IOException e) {
-                        //e.printStackTrace();
-                        LogUtil.errorLogInfo("", TAG, e);
-                    }
-                }
-                fis= null;
-
-                if(newfos!=null) {
-                    try {
-                        newfos.close();
-                    } catch (IOException e) {
-                        //e.printStackTrace();
-                        LogUtil.errorLogInfo("", TAG, e);
-                    }
-                }
-                newfos = null;
-            }
-            result = true;
-        }
-        else {
-            result = false;
-        }
-
-        if (DEBUG_STATIC)   Log.d(TAG, "copyFile() return : " + result);
-
-        return result;
-    }
-}
-
-
-
+package com.artncore.managersetting.util;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.StringTokenizer;
+
+import android.content.Context;
+import android.os.Environment;
+import android.os.StatFs;
+import android.util.Log;
+
+
+public class StorageUtil {
+    private static final String TAG = "StorageUtil";
+
+    private static final boolean DEBUG_STATIC = true;
+
+    public static class StorageInfo {
+
+        public final String path;
+        public final boolean readonly;
+        public final boolean removable;
+        public final int number;
+
+        // constructor
+        StorageInfo(String path, boolean readonly, boolean removable, int number) {
+            this.path = path;
+            this.readonly = readonly;
+            this.removable = removable;
+            this.number = number;
+        }
+
+        // return storage name
+        public String getDisplayName() {
+            StringBuilder res = new StringBuilder();
+
+            if (!removable) {
+                res.append("Internal SD card");
+            } else if (number > 1) {
+                res.append("SD card " + number);
+            } else {
+                res.append("SD card");
+            }
+
+            if (readonly) {
+                res.append(" (Read only)");
+            }
+            return res.toString();
+        }
+
+        public String getPath() {
+            return path;
+        }
+    }
+
+    // mount된 storage list를 return
+    public static List<StorageInfo> getStorageList() {
+
+        List<StorageInfo> list = new ArrayList<StorageInfo>();
+        String def_path = Environment.getExternalStorageDirectory().getPath();
+        boolean def_path_removable = Environment.isExternalStorageRemovable();
+        String def_path_state = Environment.getExternalStorageState();
+        boolean def_path_available = def_path_state.equals(Environment.MEDIA_MOUNTED)
+                || def_path_state.equals(Environment.MEDIA_MOUNTED_READ_ONLY);
+        boolean def_path_readonly = Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED_READ_ONLY);
+
+        HashSet<String> paths = new HashSet<String>();
+        int cur_removable_number = 1;
+
+        if (def_path_available) {
+            paths.add(def_path);
+            list.add(0, new StorageInfo(def_path, def_path_readonly, def_path_removable, def_path_removable ? cur_removable_number++ : -1));
+        }
+
+        BufferedReader buf_reader = null;
+        try {
+            buf_reader = new BufferedReader(new FileReader("/proc/mounts"));
+            String line;
+            Log.d(TAG, "/proc/mounts");
+            while ((line = buf_reader.readLine()) != null) {
+                Log.d(TAG, line);
+                if (line.contains("vfat") || line.contains("/mnt")) {
+                    StringTokenizer tokens = new StringTokenizer(line, " ");
+                    String unused = tokens.nextToken(); //device
+                    String mount_point = tokens.nextToken(); //mount point
+                    if (paths.contains(mount_point)) {
+                        continue;
+                    }
+                    unused = tokens.nextToken(); //file system
+                    List<String> flags = Arrays.asList(tokens.nextToken().split(",")); //flags
+                    boolean readonly = flags.contains("ro");
+
+                    if (line.contains("/dev/block/vold")) {
+                        if (!line.contains("/mnt/secure")
+                                && !line.contains("/mnt/asec")
+                                && !line.contains("/mnt/obb")
+                                && !line.contains("/dev/mapper")
+                                && !line.contains("tmpfs")) {
+                            paths.add(mount_point);
+                            list.add(new StorageInfo(mount_point, readonly, true, cur_removable_number++));
+                        }
+                    }
+                }
+            }
+
+        } catch (FileNotFoundException ex) {
+            ex.printStackTrace();
+        } catch (IOException ex) {
+            ex.printStackTrace();
+        } finally {
+            if (buf_reader != null) {
+                try {
+                    buf_reader.close();
+                } catch (IOException ex) {}
+            }
+        }
+        return list;
+    }
+
+
+    // path의 mount 여부를 return
+    public static boolean isStorageMounted(String path) {
+        boolean ret = false;
+        List<StorageInfo> storageList = getStorageList();
+
+        for (int i = 0; i< storageList.size(); i++) {
+            String storagePath = storageList.get(i).getPath();
+            Log.d(TAG, "storagePath: "+storagePath);
+            if (storagePath.equals(path)) {
+                ret = true;
+                break;
+            }
+        }
+
+        return ret;
+    }
+
+
+    // return AvailableInternalStorageSize
+    public static long getAvailableInternalStorageSize() {
+        File path = Environment.getDataDirectory();
+        StatFs stat = new StatFs(path.getPath());
+        long blockSize = stat.getBlockSize();
+        long availableBlocks = stat.getAvailableBlocks();
+
+        if (DEBUG_STATIC)  Log.d(TAG, "internal Path : " + path);
+
+        return availableBlocks * blockSize;
+    }
+
+
+    // return TotalInternalStorageSize
+    public static long getTotalInternalStorageSize() {
+        File path = Environment.getDataDirectory();
+        StatFs stat = new StatFs(path.getPath());
+        long blockSize = stat.getBlockSize();
+        long totalBlocks = stat.getBlockCount();
+
+        if (DEBUG_STATIC)  Log.d(TAG, "internal Path : " + path);
+
+        return totalBlocks * blockSize;
+    }
+
+
+    // path의 AvailableUSBStorageSize를 return
+    public static long getAvailableUSBStorageSize(String path) {
+        if (isStorageMounted(path)) {
+            File file = new File(path);
+            StatFs stat = new StatFs(file.getPath());
+            long blockSize = stat.getBlockSize();
+            long availableBlocks = stat.getAvailableBlocks();
+
+            if (DEBUG_STATIC)  Log.d(TAG, "USB Path : " + file);
+
+            return availableBlocks * blockSize;
+        }
+
+        return 0;
+    }
+
+
+    // path의 TotalUSBStorageSize를 return
+    public static long getTotalUSBStorageSize(String path) {
+        if (isStorageMounted(path)) {
+            File file = new File(path);
+            StatFs stat = new StatFs(file.getPath());
+            long blockSize = stat.getBlockSize();
+            long totalBlocks = stat.getBlockCount();
+
+            if (DEBUG_STATIC)  Log.d(TAG, "USB Path : " + file);
+
+            return totalBlocks * blockSize;
+        }
+
+        return 0;
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+    // dir의 directory를 생성
+    public static boolean createDirectory(String dir) {
+        boolean ret = false;
+
+        File lf = new File(dir);
+        try {
+            if (!lf.exists()) {
+                lf.mkdirs();
+            }
+
+            ret = true;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return ret;
+    }
+
+
+
+    // file을 save_file에 복사
+    public static boolean copyFile(File file , String save_file) {
+        boolean result;
+
+        if (DEBUG_STATIC)   Log.d(TAG, "copyFile() file : " + file
+                + ", save_file : " + save_file
+        );
+
+        if(file !=null && file.exists()) {
+            try {
+                FileInputStream fis = new FileInputStream(file);
+                FileOutputStream newfos = new FileOutputStream(save_file);
+                int readcount=0;
+                byte[] buffer = new byte[1024];
+                while((readcount = fis.read(buffer,0,1024))!= -1){
+                    newfos.write(buffer,0,readcount);
+                }
+                newfos.close();
+                fis.close();
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+            result = true;
+        }
+        else {
+            result = false;
+        }
+
+        if (DEBUG_STATIC)   Log.d(TAG, "copyFile() return : " + result);
+
+        return result;
+    }
+}
+
+
+

+ 141 - 145
ManagerSetting/src/main/java/com/artncore/managersetting/util/StringUtil.java

@@ -1,145 +1,141 @@
-package com.artncore.managersetting.util;
-
-import java.util.ArrayList;
-import java.util.StringTokenizer;
-
-import com.artncore.managersetting.domain.Const;
-import com.util.LogUtil;
-
-import android.content.Context;
-import android.util.Log;
-
-public class StringUtil {
-    private static final String TAG = "StringUtil";
-
-    private static final boolean DEBUG_STATIC = true;
-
-
-
-    // strDN에 해당하는 DongHo String 을 return
-    public static String[] getDongHo(Context context, String strDN) {
-        if (DEBUG_STATIC)  Log.d(TAG, "getDongHo() strDN : " + strDN);
-
-        String[] arrDongHo = null;
-
-        if (strDN == null)
-            return null;
-
-        //int sipCallType = SipCallController.getSipCallTypeByID(strDN);
-        //if (sipCallType != Const.CALL_TYPE_NEIB)
-        //    return null;
-
-        arrDongHo = strDN.split(Const.DONG_HO_SPLIT_TOKEN);
-
-        if (DEBUG_STATIC) Log.d(TAG, "arrDongHo.length : " + arrDongHo.length);
-
-        if (arrDongHo.length > 4) {
-            if (DEBUG_STATIC) Log.d(TAG, "arrDongHo[0] : " + arrDongHo[0]
-                    + ", arrDongHo[1] : " + arrDongHo[1]
-                    + ", arrDongHo[2] : " + arrDongHo[2]
-                    + ", arrDongHo[3] : " + arrDongHo[3]
-                    + ", arrDongHo[4] : " + arrDongHo[4]
-            );
-        }
-
-        return arrDongHo;
-    }
-
-    // str이 empty인지 여부를 return
-    public static boolean isEmpty(String str) {
-        if (str == null || str.length() == 0) {
-            return true;
-        }
-        return false;
-    }
-
-    // parementer str을 integer값으로 변환하여 return
-    public static int getInt(String str, boolean throwException) {
-        int result = -1;
-        if (throwException) {
-            result = Integer.parseInt(str);
-        } else {
-            try {
-                result = Integer.parseInt(str);
-            } catch (RuntimeException re) {
-                Log.e(TAG, re.toString());
-            } catch (Exception e) {
-                LogUtil.errorLogInfo("", TAG, e);
-            }
-        }
-        return result;
-    }
-
-    // meter를 km으로 변환하여 return
-    public static String meter2kilometer(String meter) {
-        double dMeter = Double.parseDouble(meter);
-        dMeter = dMeter / 1000;
-        dMeter = Double.parseDouble(String.format("%.2f", dMeter));
-        return String.valueOf(dMeter);
-    }
-
-    // str을 strToken으로 분리한 String[]을 return
-    public static final String[] split(String str, String strToken) {
-        String[] arrString = null;
-        if (str != null) {
-            StringTokenizer stringTokenizer = new StringTokenizer(str, strToken);
-            ArrayList arrayList = new ArrayList();
-            while (stringTokenizer.hasMoreElements()) {
-                arrayList.add(stringTokenizer.nextToken());
-            }
-
-            int arrCnt = arrayList.size();
-            arrString = new String[arrCnt];
-            for (int j = 0; j < arrCnt; j++) {
-                arrString[j] = ((String)arrayList.get(j));
-            }
-        }
-
-        return arrString;
-    }
-
-
-    public static final int FORMAT_BYTE = 1;
-    public static final int FORMAT_KILO_BYTE = 2;
-    public static final int FORMAT_MEGA_BYTE = 3;
-    // 입력된 size를 해당 type의 String으로 return
-    public static String formatSize(int type, long size) {
-        String suffix = null;
-
-        if (type >= FORMAT_KILO_BYTE) {
-            if (size >= 1024) {
-                suffix = "KB";
-                size /= 1024;
-            }
-        }
-
-        if (type >= FORMAT_MEGA_BYTE) {
-            if (size >= 1024) {
-                suffix = "MB";
-                size /= 1024;
-            }
-        }
-
-        StringBuilder resultBuffer = new StringBuilder(Long.toString(size));
-
-        int commaOffset = resultBuffer.length() - 3;
-        while (commaOffset > 0) {
-            resultBuffer.insert(commaOffset, ',');
-            commaOffset -= 3;
-        }
-
-        if (suffix != null) {
-            resultBuffer.append(suffix);
-        }
-
-        return resultBuffer.toString();
-    }
-
-    // 입력된 size를 MB의 String으로 return
-    public static String formatSize(long size) {
-        return formatSize(FORMAT_MEGA_BYTE, size);
-    }
-
-
-}
-
+package com.artncore.managersetting.util;
+
+import java.util.ArrayList;
+import java.util.StringTokenizer;
+
+import com.artncore.managersetting.domain.Const;
+
+import android.content.Context;
+import android.util.Log;
+
+public class StringUtil {
+    private static final String TAG = "StringUtil";
+
+    private static final boolean DEBUG_STATIC = true;
+
+
+
+    // strDN에 해당하는 DongHo String 을 return
+    public static String[] getDongHo(Context context, String strDN) {
+        if (DEBUG_STATIC)  Log.d(TAG, "getDongHo() strDN : " + strDN);
+
+        String[] arrDongHo = null;
+
+        if (strDN == null)
+            return null;
+
+        //int sipCallType = SipCallController.getSipCallTypeByID(strDN);
+        //if (sipCallType != Const.CALL_TYPE_NEIB)
+        //    return null;
+
+        arrDongHo = strDN.split(Const.DONG_HO_SPLIT_TOKEN);
+
+        if (DEBUG_STATIC) Log.d(TAG, "arrDongHo.length : " + arrDongHo.length);
+
+        if (arrDongHo.length > 4) {
+            if (DEBUG_STATIC) Log.d(TAG, "arrDongHo[0] : " + arrDongHo[0]
+                    + ", arrDongHo[1] : " + arrDongHo[1]
+                    + ", arrDongHo[2] : " + arrDongHo[2]
+                    + ", arrDongHo[3] : " + arrDongHo[3]
+                    + ", arrDongHo[4] : " + arrDongHo[4]
+            );
+        }
+
+        return arrDongHo;
+    }
+
+    // str이 empty인지 여부를 return
+    public static boolean isEmpty(String str) {
+        if (str == null || str.length() == 0) {
+            return true;
+        }
+        return false;
+    }
+
+    // parementer str을 integer값으로 변환하여 return
+    public static int getInt(String str, boolean throwException) {
+        int result = -1;
+        if (throwException) {
+            result = Integer.parseInt(str);
+        } else {
+            try {
+                result = Integer.parseInt(str);
+            } catch (Exception e) {
+            }
+        }
+        return result;
+    }
+
+    // meter를 km으로 변환하여 return
+    public static String meter2kilometer(String meter) {
+        double dMeter = Double.parseDouble(meter);
+        dMeter = dMeter / 1000;
+        dMeter = Double.parseDouble(String.format("%.2f", dMeter));
+        return String.valueOf(dMeter);
+    }
+
+    // str을 strToken으로 분리한 String[]을 return
+    public static final String[] split(String str, String strToken) {
+        String[] arrString = null;
+        if (str != null) {
+            StringTokenizer stringTokenizer = new StringTokenizer(str, strToken);
+            ArrayList arrayList = new ArrayList();
+            while (stringTokenizer.hasMoreElements()) {
+                arrayList.add(stringTokenizer.nextToken());
+            }
+
+            int arrCnt = arrayList.size();
+            arrString = new String[arrCnt];
+            for (int j = 0; j < arrCnt; j++) {
+                arrString[j] = ((String)arrayList.get(j));
+            }
+        }
+
+        return arrString;
+    }
+
+
+    public static final int FORMAT_BYTE = 1;
+    public static final int FORMAT_KILO_BYTE = 2;
+    public static final int FORMAT_MEGA_BYTE = 3;
+    // 입력된 size를 해당 type의 String으로 return
+    public static String formatSize(int type, long size) {
+        String suffix = null;
+
+        if (type >= FORMAT_KILO_BYTE) {
+            if (size >= 1024) {
+                suffix = "KB";
+                size /= 1024;
+            }
+        }
+
+        if (type >= FORMAT_MEGA_BYTE) {
+            if (size >= 1024) {
+                suffix = "MB";
+                size /= 1024;
+            }
+        }
+
+        StringBuilder resultBuffer = new StringBuilder(Long.toString(size));
+
+        int commaOffset = resultBuffer.length() - 3;
+        while (commaOffset > 0) {
+            resultBuffer.insert(commaOffset, ',');
+            commaOffset -= 3;
+        }
+
+        if (suffix != null) {
+            resultBuffer.append(suffix);
+        }
+
+        return resultBuffer.toString();
+    }
+
+    // 입력된 size를 MB의 String으로 return
+    public static String formatSize(long size) {
+        return formatSize(FORMAT_MEGA_BYTE, size);
+    }
+
+
+}
+

+ 56 - 56
ManagerSetting/src/main/java/com/artncore/managersetting/util/TimeUtil.java

@@ -1,56 +1,56 @@
-package com.artncore.managersetting.util;
-
-import java.util.Calendar;
-
-import android.content.Context;
-import android.util.Log;
-
-import com.artncore.managersetting.R;
-
-public class TimeUtil {
-    private static final String TAG = "TimeUtil";
-
-    private static final boolean DEBUG = true;
-
-    // inputTime을 특정 format의 String으로 return
-    public static String getTimeString(Context context, long inputTime) {
-        String retTime = "";
-
-        if (inputTime > -1) {
-            Calendar calendar = Calendar.getInstance();
-            calendar.setTimeInMillis(inputTime);
-
-            retTime = String.format("%04d" + context.getString(R.string.years)
-                            + "%02d" + context.getString(R.string.months)
-                            + "%02d" + context.getString(R.string.days)
-                            + "%02d" + context.getString(R.string.hours)
-                            + "%02d" + context.getString(R.string.minutes)
-                            + "%02d" + context.getString(R.string.seconds)
-                    , calendar.get(Calendar.YEAR)
-                    , calendar.get(Calendar.MONTH)+1
-                    , calendar.get(Calendar.DAY_OF_MONTH)
-                    , calendar.get(Calendar.HOUR_OF_DAY)
-                    , calendar.get(Calendar.MINUTE)
-                    , calendar.get(Calendar.SECOND)
-            );
-
-/*
-        int diffTime = (int) (inputTime/1000);
-        int hours = diffTime / 3600;
-        diffTime = diffTime % 3600;
-        int minutes = diffTime / 60;
-        diffTime = diffTime % 60;
-        int seconds = diffTime;
-
-        retTime = hours + " " + getString(R.string.hours)
-                     + " " + minutes + " " + getString(R.string.minutes)
-                     + " " + seconds + " " + getString(R.string.seconds);
-*/
-        }
-
-        return retTime;
-    }
-
-
-
-}
+package com.artncore.managersetting.util;
+
+import java.util.Calendar;
+
+import android.content.Context;
+import android.util.Log;
+
+import com.artncore.managersetting.R;
+
+public class TimeUtil {
+    private static final String TAG = "TimeUtil";
+
+    private static final boolean DEBUG = true;
+
+    // inputTime을 특정 format의 String으로 return
+    public static String getTimeString(Context context, long inputTime) {
+        String retTime = "";
+
+        if (inputTime > -1) {
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTimeInMillis(inputTime);
+
+            retTime = String.format("%04d" + context.getString(R.string.years)
+                            + "%02d" + context.getString(R.string.months)
+                            + "%02d" + context.getString(R.string.days)
+                            + "%02d" + context.getString(R.string.hours)
+                            + "%02d" + context.getString(R.string.minutes)
+                            + "%02d" + context.getString(R.string.seconds)
+                    , calendar.get(Calendar.YEAR)
+                    , calendar.get(Calendar.MONTH)+1
+                    , calendar.get(Calendar.DAY_OF_MONTH)
+                    , calendar.get(Calendar.HOUR_OF_DAY)
+                    , calendar.get(Calendar.MINUTE)
+                    , calendar.get(Calendar.SECOND)
+            );
+
+/*
+        int diffTime = (int) (inputTime/1000);
+        int hours = diffTime / 3600;
+        diffTime = diffTime % 3600;
+        int minutes = diffTime / 60;
+        diffTime = diffTime % 60;
+        int seconds = diffTime;
+
+        retTime = hours + " " + getString(R.string.hours)
+                     + " " + minutes + " " + getString(R.string.minutes)
+                     + " " + seconds + " " + getString(R.string.seconds);
+*/
+        }
+
+        return retTime;
+    }
+
+
+
+}

+ 143 - 143
ManagerSetting/src/main/java/com/artncore/managersetting/util/ViewUtil.java

@@ -1,143 +1,143 @@
-package com.artncore.managersetting.util;
-
-import android.app.AlertDialog;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.graphics.Rect;
-import android.util.Log;
-import android.view.View;
-import android.view.ViewGroup;
-
-
-public class ViewUtil {
-    private static final String TAG = "ViewUtil";
-
-    private static final boolean DEBUG = true;
-    private static final boolean DEBUG_SCROLL = true;
-
-    // parentView 안에 전체가 보여지는 childView-childView의 index를 return
-    public static int getCompletedVisibleChildIdx(ViewGroup parentView, ViewGroup childView, boolean bFromFirst) {
-        int ret = -1;
-        int firstIdx = 0;
-        int lastIdx = childView.getChildCount() - 1;
-        int maxIdx = lastIdx;
-
-        if (!bFromFirst) {
-            int temp = firstIdx;
-            firstIdx = lastIdx;
-            lastIdx = temp;
-        }
-
-        if (DEBUG_SCROLL)   Log.d(TAG, "getCompletedVisibleChildIdx() bFromFirst : " + bFromFirst
-                + "\n       " + "firstIdx : " + firstIdx
-                + "\n       " + "lastIdx : " + lastIdx
-        );
-
-        Rect scrollBounds = new Rect();
-
-        parentView.getDrawingRect(scrollBounds);
-
-        if (DEBUG_SCROLL)   Log.d(TAG, "scrollBounds left : " + scrollBounds.left
-                + ", top : " + scrollBounds.top
-                + "\n       " + "right : " + scrollBounds.right
-                + ", bottom : " + scrollBounds.bottom
-        );
-
-        Rect childBounds = new Rect();
-        for (int i = firstIdx;;) {
-            childView.getChildAt(i).getHitRect(childBounds);
-
-            if (DEBUG_SCROLL)   Log.d(TAG, "childBounds left : " + childBounds.left
-                    + ", top : " + childBounds.top
-                    + "\n       " + "right : " + childBounds.right
-                    + ", bottom : " + childBounds.bottom
-            );
-
-            if(scrollBounds.contains(childBounds)) {
-                if (DEBUG)   Log.d(TAG, "contains i : " + i);
-
-                ret = i;
-                break;
-            }
-
-            if (bFromFirst)
-                i++;
-            else
-                i--;
-
-            if ((i < 0) || i > maxIdx) {
-                if (DEBUG)   Log.d(TAG, "break i : " + i);
-
-                break;
-            }
-        }
-
-        if (DEBUG)   Log.d(TAG, "ret : " + ret);
-
-        return ret;
-    }
-
-
-
-    // parentView 안에 전체가 보여지는 childView의 index를 return
-    public static int getCompletedVisibleChildIdx(ViewGroup parentView, boolean bFromFirst) {
-        int ret = -1;
-        int firstIdx = 0;
-        int lastIdx = parentView.getChildCount() - 1;
-        int maxIdx = lastIdx;
-
-        if (!bFromFirst) {
-            int temp = firstIdx;
-            firstIdx = lastIdx;
-            lastIdx = temp;
-        }
-
-        if (DEBUG_SCROLL)   Log.d(TAG, "getCompletedVisibleChildIdx() bFromFirst : " + bFromFirst
-                + "\n       " + "firstIdx : " + firstIdx
-                + "\n       " + "lastIdx : " + lastIdx
-        );
-
-        Rect scrollBounds = new Rect();
-
-        parentView.getDrawingRect(scrollBounds);
-
-        if (DEBUG_SCROLL)   Log.d(TAG, "scrollBounds left : " + scrollBounds.left
-                + ", top : " + scrollBounds.top
-                + "\n       " + "right : " + scrollBounds.right
-                + ", bottom : " + scrollBounds.bottom
-        );
-
-        Rect childBounds = new Rect();
-        for (int i = firstIdx;;) {
-            parentView.getChildAt(i).getHitRect(childBounds);
-
-            if (DEBUG_SCROLL)   Log.d(TAG, "childBounds left : " + childBounds.left
-                    + ", top : " + childBounds.top
-                    + "\n       " + "right : " + childBounds.right
-                    + ", bottom : " + childBounds.bottom
-            );
-
-            if(scrollBounds.contains(childBounds)) {
-                if (DEBUG)   Log.d(TAG, "contains i : " + i);
-
-                ret = i;
-                break;
-            }
-
-            if (bFromFirst)
-                i++;
-            else
-                i--;
-
-            if ((i < 0) || i > maxIdx) {
-                if (DEBUG)   Log.d(TAG, "break i : " + i);
-
-                break;
-            }
-        }
-
-        if (DEBUG)   Log.d(TAG, "ret : " + ret);
-
-        return ret;
-    }
-}
+package com.artncore.managersetting.util;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.graphics.Rect;
+import android.util.Log;
+import android.view.View;
+import android.view.ViewGroup;
+
+
+public class ViewUtil {
+    private static final String TAG = "ViewUtil";
+
+    private static final boolean DEBUG = true;
+    private static final boolean DEBUG_SCROLL = true;
+
+    // parentView 안에 전체가 보여지는 childView-childView의 index를 return
+    public static int getCompletedVisibleChildIdx(ViewGroup parentView, ViewGroup childView, boolean bFromFirst) {
+        int ret = -1;
+        int firstIdx = 0;
+        int lastIdx = childView.getChildCount() - 1;
+        int maxIdx = lastIdx;
+
+        if (!bFromFirst) {
+            int temp = firstIdx;
+            firstIdx = lastIdx;
+            lastIdx = temp;
+        }
+
+        if (DEBUG_SCROLL)   Log.d(TAG, "getCompletedVisibleChildIdx() bFromFirst : " + bFromFirst
+                + "\n       " + "firstIdx : " + firstIdx
+                + "\n       " + "lastIdx : " + lastIdx
+        );
+
+        Rect scrollBounds = new Rect();
+
+        parentView.getDrawingRect(scrollBounds);
+
+        if (DEBUG_SCROLL)   Log.d(TAG, "scrollBounds left : " + scrollBounds.left
+                + ", top : " + scrollBounds.top
+                + "\n       " + "right : " + scrollBounds.right
+                + ", bottom : " + scrollBounds.bottom
+        );
+
+        Rect childBounds = new Rect();
+        for (int i = firstIdx;;) {
+            childView.getChildAt(i).getHitRect(childBounds);
+
+            if (DEBUG_SCROLL)   Log.d(TAG, "childBounds left : " + childBounds.left
+                    + ", top : " + childBounds.top
+                    + "\n       " + "right : " + childBounds.right
+                    + ", bottom : " + childBounds.bottom
+            );
+
+            if(scrollBounds.contains(childBounds)) {
+                if (DEBUG)   Log.d(TAG, "contains i : " + i);
+
+                ret = i;
+                break;
+            }
+
+            if (bFromFirst)
+                i++;
+            else
+                i--;
+
+            if ((i < 0) || i > maxIdx) {
+                if (DEBUG)   Log.d(TAG, "break i : " + i);
+
+                break;
+            }
+        }
+
+        if (DEBUG)   Log.d(TAG, "ret : " + ret);
+
+        return ret;
+    }
+
+
+
+    // parentView 안에 전체가 보여지는 childView의 index를 return
+    public static int getCompletedVisibleChildIdx(ViewGroup parentView, boolean bFromFirst) {
+        int ret = -1;
+        int firstIdx = 0;
+        int lastIdx = parentView.getChildCount() - 1;
+        int maxIdx = lastIdx;
+
+        if (!bFromFirst) {
+            int temp = firstIdx;
+            firstIdx = lastIdx;
+            lastIdx = temp;
+        }
+
+        if (DEBUG_SCROLL)   Log.d(TAG, "getCompletedVisibleChildIdx() bFromFirst : " + bFromFirst
+                + "\n       " + "firstIdx : " + firstIdx
+                + "\n       " + "lastIdx : " + lastIdx
+        );
+
+        Rect scrollBounds = new Rect();
+
+        parentView.getDrawingRect(scrollBounds);
+
+        if (DEBUG_SCROLL)   Log.d(TAG, "scrollBounds left : " + scrollBounds.left
+                + ", top : " + scrollBounds.top
+                + "\n       " + "right : " + scrollBounds.right
+                + ", bottom : " + scrollBounds.bottom
+        );
+
+        Rect childBounds = new Rect();
+        for (int i = firstIdx;;) {
+            parentView.getChildAt(i).getHitRect(childBounds);
+
+            if (DEBUG_SCROLL)   Log.d(TAG, "childBounds left : " + childBounds.left
+                    + ", top : " + childBounds.top
+                    + "\n       " + "right : " + childBounds.right
+                    + ", bottom : " + childBounds.bottom
+            );
+
+            if(scrollBounds.contains(childBounds)) {
+                if (DEBUG)   Log.d(TAG, "contains i : " + i);
+
+                ret = i;
+                break;
+            }
+
+            if (bFromFirst)
+                i++;
+            else
+                i--;
+
+            if ((i < 0) || i > maxIdx) {
+                if (DEBUG)   Log.d(TAG, "break i : " + i);
+
+                break;
+            }
+        }
+
+        if (DEBUG)   Log.d(TAG, "ret : " + ret);
+
+        return ret;
+    }
+}

+ 200 - 200
ManagerSetting/src/main/java/kr/co/icontrols/a20ioctl/A20IOInterface.java

@@ -1,200 +1,200 @@
-package kr.co.icontrols.a20ioctl;
-
-import android.util.Log;
-
-public class A20IOInterface{
-
-    private static final String TAG = "A20 IOCTL";
-
-    public static final int IOCTL_DOOR_DINGDONG = 0xFF01;           // 현관폰 벨 제어
-    public static final int IOCTL_BTNEMR_LEDONOFF = 0xFF02;         // 비상 버튼 LED 제어
-    public static final int IOCTL_BTNCALL_LEDONOFF = 0xFF03;        // 통화 버튼 LED 제어
-    public static final int IOCTL_BTNOPEN_LEDONOFF = 0xFF04;        // 문열림 버튼 LED 제어
-    public static final int IOCTL_SUBTOUCH_POWERONOFF = 0xFF05;     // 터치 버튼 on/off 제어
-    public static final int IOCTL_VIDEOOUT_DOORONOFF = 0xFF06;      // 서브폰에 대한 영상 선택 제어
-    //  현관폰 통화시:
-    //    현관폰 영상을 서브폰으로 전송
-    //  세대간 MoIP 통화시:
-    //    월패드 카메라 영상을 서브폰으로 전송
-    public static final int IOCTL_CAMERA_POWERONOFF = 0xFF07;       // 카메라 power on/off 제어
-    public static final int IOCTL_SUBPHONE_MUTEONOFF = 0xFF08;      // 현관폰 or 서브폰 통화시 audio mute on/off 제어
-    public static final int IOCTL_DOOR_LOCK_OPEN_REGIS = 0xFF09;    // Door Lock 오픈/등록 제어
-    //  0: 도어락 등록
-    //  1: 도어락 오픈
-    public static final int IOCTL_RFREMOCON_RESET = 0xFF0A;         // RF 리모콘 on/off 제어
-    public static final int IOCTL_DOOR_POWERONOFF = 0xFF0B;         // 현관폰 power on/off 제어
-    public static final int IOCTL_FRONTHOME_LEDONOFF = 0xFF0C;      // Front led on/off 제어
-    public static final int IOCTL_FRONTEMR_LEDONOFF = 0xFF0D;       // Front led on/off 제어
-    public static final int IOCTL_BTNEMR_LED_TRIGGER    = 0xFF0E;   // 비상 버튼 LED 트리거 제어
-    public static final int IOCTL_DOOR_POWER_STATE      = 0xFF0F;   // DoorPhone Power State 읽기
-    public static final int IOCTL_DOOR_PATH_ENABLE		= 0xFF10;	//도어패스 enable
-    public static final int IOCTL_DOOR_CX93021_RESET	= 0xFF11;	//CX03021_reset
-
-
-    public static final int IOCTL_VIDEOINPUT_DOORCAMERA = 0xFE01;   // 월패드 영상 입력 선택 제어
-    public static final int IOCTL_MIC_GAIN_SET = 0xFD01;            // mic gain 설정 제어
-    public static final int IOCTL_MIC_GAIN_GET = 0xFD02;            // (0 ~ 79) mic gain 상태 읽기
-
-
-    public static final int IOCTL_MIC_RECORD_GAIN_SET = 0xFD03;     // mic record gain 설정 제어
-    public static final int IOCTL_MIC_RECORD_GAIN_GET = 0xFD04;     // mic record gain 상태 읽기
-    public static final int IOCTL_MIC_BOOST_GAIN_SET = 0xFD05;      // mic boost gain 설정 제어(6dB steps)
-    public static final int IOCTL_MIC_BOOST_GAIN_GET = 0xFD06;      // mic boost gain 상태 읽기
-    public static final int IOCTL_MIC_LINE1_GAIN_SET = 0xFD07;      // mic line1 gain 설정 제어(1.5dB steps)
-    public static final int IOCTL_MIC_LINE1_GAIN_GET = 0xFD08;      // mic line1 gain 상태 읽기
-    public static final int IOCTL_SPK_EQ_GAIN_SET  = 0xFD09;        // (0 ~ 32767) speaker EQ gain 설정 제어
-    public static final int IOCTL_SPK_EQ_GAIN_GET = 0xFD0A;         // (0 ~ 32767) Speaker EQ gain 상태 읽기
-
-    public static final int IOCTL_MIC_DSP_MAX_GAIN_SET = 0xFD0B;         // (0 ~ 79) MIC DSP GAIN 설정 제어
-    public static final int IOCTL_MIC_DSP_MAX_GAIN_GET = 0xFD0C;         // (0 ~ 79) MIC DSP GAIN 상태 읽기
-
-    public static final int IOCTL_MONOOUT_SUB_GAIN_SET = 0xFD0D;    // (0 ~ 79) mono out subphone gain 설정 제어
-    public static final int IOCTL_MONOOUT_SUB_GAIN_GET = 0xFD0E;    // (0 ~ 79) mono out subphone gain 상태 읽기
-
-
-    public static final int IOCTL_MOOD_BACKLIGHT_SET = 0xFC01;      // (0 ~ 255) mood등 backlight 제어
-
-    public static final int IOCTL_ETHERNET_MAC_SET = 0xFB01;        // Ethernet mac address 설정
-
-    public static final int IOCTL_CAMERA_SET_BRIGHTNESS = 0xF901;   // Camera Brightness 설정(0 ~ 20 단계)
-    public static final int IOCTL_CAMERA_CONTRAST_SET = 0xF902;     // Camera Contrast 설정 (0 ~ 20)
-    // Default 설정시 10 단계
-
-
-    public static final int IOCTL_DOOR_DETECTIME_SET           = 0xFA01;   //DoorPhone Detection Time
-    public static final int IOCTL_SENSOR_MAG0_DETECTIME_SET    = 0xFA02;   //Sensor Magnetic0 Detection Time
-    public static final int IOCTL_SENSOR_MAG1_DETECTIME_SET    = 0xFA03;   //Sensor Magnetic1 Detection Time
-    public static final int IOCTL_SENSOR_EXIT_DETECTIME_SET    = 0xFA04;   //Sensor Exit Detection Time
-    public static final int IOCTL_SENSOR_MOTIN_DETECTIME_SET   = 0xFA05;   //Sensor Motion In Detection Time
-    public static final int IOCTL_SENSOR_MOTOUT_DETECTIME_SET  = 0xFA06;   //Sensor Motion Out Detection Time
-    public static final int IOCTL_SENSOR_EMR_DETECTIME_SET     = 0xFA07;   //Sensor Emergency Detection Time
-
-
-
-    public static final int IOCTL_SENSOR_MAG0_STATE     = 0xF801;           // Sensor Magnetic0 상태
-    // 0 : State Disable
-    // 1 : State Enable
-
-    public static final int IOCTL_SENSOR_MAG1_STATE     = 0xF802;           // Sensor Magnetic1 상태
-    // 0 : State Disable
-    // 1 : State Enable
-
-    public static final int IOCTL_SENSOR_EXIT_STATE     = 0xF803;           // Sensor Exit 상태
-    // 0 : State Disable
-    // 1 : State Enable
-
-    public static final int IOCTL_SENSOR_MOTIN_STATE    = 0xF804;           // Sensor Motion In 상태
-    // 0 : State Disable
-    // 1 : State Enable
-
-    public static final int IOCTL_SENSOR_MOTOUT_STATE   = 0xF805;           // Sensor Motion Out 상태
-    // 0 : State Disable
-    // 1 : State Enable
-
-    public static final int IOCTL_SENSOR_EMR_STATE      = 0xF806;           // Sensor Emergency 상태
-    // 0 : State Disable
-    // 1 : State Enable
-
-    public static final int IOCTL_KEY_ONOFF_SET			= 0xF701;           // 월패드 H/W 키 버튼 유/무 설정
-    public static final int IOCTL_KEY_ONOFF_GET			= 0xF802;           // 월패드 H/W 키 버튼 상태 조회
-
-
-
-    public static final int IOCTL_DEVICE_ALL_OPEN		= 0Xf501;			//모든 포트 High
-    public static final int IOCTL_DEVICE_ALL_CLOSE		= 0Xf501;			//모든 포트 Low
-    public static final int IOCTL_AUDIO_PATH_NORMAL		= 0Xf501;			//오디오패스 노멀
-    public static final int IOCTL_AUDIO_PATH_DOOR_WALLPAD	= 0Xf501;	//오디오패스 도어-월패드
-    public static final int IOCTL_AUDIO_PATH_MOIP_PSTN	= 0Xf501;		////오디오패스 PSTN
-    public static final int IOCTL_AUDIO_PATH_GUARD_WALLPAD	= 0Xf501;	//오디오패스 가드-월패드
-    public static final int IOCTL_AUDIO_PATH_GUARD_SUB	= 0Xf501;		//오디오패스 가드-서브
-    public static final int IOCTL_AUDIO_PATH_DOOR_SUB	= 0Xf501;		//오디오패스 도어-서브
-
-
-    // I/O Control Interface end
-
-
-    public static final int VIDEO_OUTPUT_TYPE_DOOR_ON = 0;
-    public static final int VIDEO_OUTPUT_TYPE_DOOR_OFF = 1;
-
-    public static final int DOOR_LOCK_TYPE_REG = 0;
-    public static final int DOOR_LOCK_TYPE_OPEN = 1;
-
-    public static final int VIDEO_INPUT_TYPE_DOOR = 0;
-    public static final int VIDEO_INPUT_TYPE_CAMERA = 1;
-
-    public static final int MIC_GAIN_MIN = 0;
-    public static final int MIC_GAIN_MAX = 79;
-
-    private static final boolean DEBUG = true;
-
-
-    public native int WpdInterfaceOpen();
-    public native int WpdInterfaceClose();
-    public native int WpdInterfaceControl(int cmd, int arg);
-    public native int SetMacAddr(int cmd, String macAddr);
-
-    private boolean bOpen = false;
-
-    static{
-        System.loadLibrary("wpd_a20interface-jni");
-    }
-
-    // open WpdInterface
-    public int open() {
-        int ret = 0;
-
-        if (!bOpen) {
-            if (DEBUG)  Log.d(TAG, "WpdInterfaceOpen() bOpen : " + bOpen);
-
-            ret = WpdInterfaceOpen();
-            if (ret != -1)
-                bOpen = true;
-
-            if (DEBUG)  Log.d(TAG, "WpdInterfaceOpen() finish bOpen : " + bOpen);
-        }
-
-        return ret;
-    }
-
-    // close WpdInterface
-    public int close() {
-        int ret = 0;
-
-        if (bOpen) {
-            bOpen = false;
-
-            if (DEBUG)  Log.d(TAG, "WpdInterfaceClose() bOpen : " + bOpen);
-
-            ret = WpdInterfaceClose();
-        }
-
-        return ret;
-    }
-
-    // WpdInterface ioctl
-    private int ioctl(int cmd, int arg) {
-        int ret = -1;
-        if (bOpen) {
-            //bOpen = false;
-
-            ret = WpdInterfaceControl(cmd, arg);
-        }
-
-        return ret;
-    }
-
-
-    // set MacAddr
-    public int setMacAddr(String macAddr) {
-        if (DEBUG)  Log.d(TAG, "setMacAddr() : " + macAddr);
-
-        int ret = -1;
-        if (open() != -1) {
-            ret = SetMacAddr(IOCTL_ETHERNET_MAC_SET, macAddr);
-
-            //close();
-        }
-
-        return ret;
-    }
-}
+package kr.co.icontrols.a20ioctl;
+
+import android.util.Log;
+
+public class A20IOInterface{
+
+    private static final String TAG = "A20 IOCTL";
+
+    public static final int IOCTL_DOOR_DINGDONG = 0xFF01;           // 현관폰 벨 제어
+    public static final int IOCTL_BTNEMR_LEDONOFF = 0xFF02;         // 비상 버튼 LED 제어
+    public static final int IOCTL_BTNCALL_LEDONOFF = 0xFF03;        // 통화 버튼 LED 제어
+    public static final int IOCTL_BTNOPEN_LEDONOFF = 0xFF04;        // 문열림 버튼 LED 제어
+    public static final int IOCTL_SUBTOUCH_POWERONOFF = 0xFF05;     // 터치 버튼 on/off 제어
+    public static final int IOCTL_VIDEOOUT_DOORONOFF = 0xFF06;      // 서브폰에 대한 영상 선택 제어
+    //  현관폰 통화시:
+    //    현관폰 영상을 서브폰으로 전송
+    //  세대간 MoIP 통화시:
+    //    월패드 카메라 영상을 서브폰으로 전송
+    public static final int IOCTL_CAMERA_POWERONOFF = 0xFF07;       // 카메라 power on/off 제어
+    public static final int IOCTL_SUBPHONE_MUTEONOFF = 0xFF08;      // 현관폰 or 서브폰 통화시 audio mute on/off 제어
+    public static final int IOCTL_DOOR_LOCK_OPEN_REGIS = 0xFF09;    // Door Lock 오픈/등록 제어
+    //  0: 도어락 등록
+    //  1: 도어락 오픈
+    public static final int IOCTL_RFREMOCON_RESET = 0xFF0A;         // RF 리모콘 on/off 제어
+    public static final int IOCTL_DOOR_POWERONOFF = 0xFF0B;         // 현관폰 power on/off 제어
+    public static final int IOCTL_FRONTHOME_LEDONOFF = 0xFF0C;      // Front led on/off 제어
+    public static final int IOCTL_FRONTEMR_LEDONOFF = 0xFF0D;       // Front led on/off 제어
+    public static final int IOCTL_BTNEMR_LED_TRIGGER    = 0xFF0E;   // 비상 버튼 LED 트리거 제어
+    public static final int IOCTL_DOOR_POWER_STATE      = 0xFF0F;   // DoorPhone Power State 읽기
+    public static final int IOCTL_DOOR_PATH_ENABLE		= 0xFF10;	//도어패스 enable
+    public static final int IOCTL_DOOR_CX93021_RESET	= 0xFF11;	//CX03021_reset
+
+
+    public static final int IOCTL_VIDEOINPUT_DOORCAMERA = 0xFE01;   // 월패드 영상 입력 선택 제어
+    public static final int IOCTL_MIC_GAIN_SET = 0xFD01;            // mic gain 설정 제어
+    public static final int IOCTL_MIC_GAIN_GET = 0xFD02;            // (0 ~ 79) mic gain 상태 읽기
+
+
+    public static final int IOCTL_MIC_RECORD_GAIN_SET = 0xFD03;     // mic record gain 설정 제어
+    public static final int IOCTL_MIC_RECORD_GAIN_GET = 0xFD04;     // mic record gain 상태 읽기
+    public static final int IOCTL_MIC_BOOST_GAIN_SET = 0xFD05;      // mic boost gain 설정 제어(6dB steps)
+    public static final int IOCTL_MIC_BOOST_GAIN_GET = 0xFD06;      // mic boost gain 상태 읽기
+    public static final int IOCTL_MIC_LINE1_GAIN_SET = 0xFD07;      // mic line1 gain 설정 제어(1.5dB steps)
+    public static final int IOCTL_MIC_LINE1_GAIN_GET = 0xFD08;      // mic line1 gain 상태 읽기
+    public static final int IOCTL_SPK_EQ_GAIN_SET  = 0xFD09;        // (0 ~ 32767) speaker EQ gain 설정 제어
+    public static final int IOCTL_SPK_EQ_GAIN_GET = 0xFD0A;         // (0 ~ 32767) Speaker EQ gain 상태 읽기
+
+    public static final int IOCTL_MIC_DSP_MAX_GAIN_SET = 0xFD0B;         // (0 ~ 79) MIC DSP GAIN 설정 제어
+    public static final int IOCTL_MIC_DSP_MAX_GAIN_GET = 0xFD0C;         // (0 ~ 79) MIC DSP GAIN 상태 읽기
+
+    public static final int IOCTL_MONOOUT_SUB_GAIN_SET = 0xFD0D;    // (0 ~ 79) mono out subphone gain 설정 제어
+    public static final int IOCTL_MONOOUT_SUB_GAIN_GET = 0xFD0E;    // (0 ~ 79) mono out subphone gain 상태 읽기
+
+
+    public static final int IOCTL_MOOD_BACKLIGHT_SET = 0xFC01;      // (0 ~ 255) mood등 backlight 제어
+
+    public static final int IOCTL_ETHERNET_MAC_SET = 0xFB01;        // Ethernet mac address 설정
+
+    public static final int IOCTL_CAMERA_SET_BRIGHTNESS = 0xF901;   // Camera Brightness 설정(0 ~ 20 단계)
+    public static final int IOCTL_CAMERA_CONTRAST_SET = 0xF902;     // Camera Contrast 설정 (0 ~ 20)
+    // Default 설정시 10 단계
+
+
+    public static final int IOCTL_DOOR_DETECTIME_SET           = 0xFA01;   //DoorPhone Detection Time
+    public static final int IOCTL_SENSOR_MAG0_DETECTIME_SET    = 0xFA02;   //Sensor Magnetic0 Detection Time
+    public static final int IOCTL_SENSOR_MAG1_DETECTIME_SET    = 0xFA03;   //Sensor Magnetic1 Detection Time
+    public static final int IOCTL_SENSOR_EXIT_DETECTIME_SET    = 0xFA04;   //Sensor Exit Detection Time
+    public static final int IOCTL_SENSOR_MOTIN_DETECTIME_SET   = 0xFA05;   //Sensor Motion In Detection Time
+    public static final int IOCTL_SENSOR_MOTOUT_DETECTIME_SET  = 0xFA06;   //Sensor Motion Out Detection Time
+    public static final int IOCTL_SENSOR_EMR_DETECTIME_SET     = 0xFA07;   //Sensor Emergency Detection Time
+
+
+
+    public static final int IOCTL_SENSOR_MAG0_STATE     = 0xF801;           // Sensor Magnetic0 상태
+    // 0 : State Disable
+    // 1 : State Enable
+
+    public static final int IOCTL_SENSOR_MAG1_STATE     = 0xF802;           // Sensor Magnetic1 상태
+    // 0 : State Disable
+    // 1 : State Enable
+
+    public static final int IOCTL_SENSOR_EXIT_STATE     = 0xF803;           // Sensor Exit 상태
+    // 0 : State Disable
+    // 1 : State Enable
+
+    public static final int IOCTL_SENSOR_MOTIN_STATE    = 0xF804;           // Sensor Motion In 상태
+    // 0 : State Disable
+    // 1 : State Enable
+
+    public static final int IOCTL_SENSOR_MOTOUT_STATE   = 0xF805;           // Sensor Motion Out 상태
+    // 0 : State Disable
+    // 1 : State Enable
+
+    public static final int IOCTL_SENSOR_EMR_STATE      = 0xF806;           // Sensor Emergency 상태
+    // 0 : State Disable
+    // 1 : State Enable
+
+    public static final int IOCTL_KEY_ONOFF_SET			= 0xF701;           // 월패드 H/W 키 버튼 유/무 설정
+    public static final int IOCTL_KEY_ONOFF_GET			= 0xF802;           // 월패드 H/W 키 버튼 상태 조회
+
+
+
+    public static final int IOCTL_DEVICE_ALL_OPEN		= 0Xf501;			//모든 포트 High
+    public static final int IOCTL_DEVICE_ALL_CLOSE		= 0Xf501;			//모든 포트 Low
+    public static final int IOCTL_AUDIO_PATH_NORMAL		= 0Xf501;			//오디오패스 노멀
+    public static final int IOCTL_AUDIO_PATH_DOOR_WALLPAD	= 0Xf501;	//오디오패스 도어-월패드
+    public static final int IOCTL_AUDIO_PATH_MOIP_PSTN	= 0Xf501;		////오디오패스 PSTN
+    public static final int IOCTL_AUDIO_PATH_GUARD_WALLPAD	= 0Xf501;	//오디오패스 가드-월패드
+    public static final int IOCTL_AUDIO_PATH_GUARD_SUB	= 0Xf501;		//오디오패스 가드-서브
+    public static final int IOCTL_AUDIO_PATH_DOOR_SUB	= 0Xf501;		//오디오패스 도어-서브
+
+
+    // I/O Control Interface end
+
+
+    public static final int VIDEO_OUTPUT_TYPE_DOOR_ON = 0;
+    public static final int VIDEO_OUTPUT_TYPE_DOOR_OFF = 1;
+
+    public static final int DOOR_LOCK_TYPE_REG = 0;
+    public static final int DOOR_LOCK_TYPE_OPEN = 1;
+
+    public static final int VIDEO_INPUT_TYPE_DOOR = 0;
+    public static final int VIDEO_INPUT_TYPE_CAMERA = 1;
+
+    public static final int MIC_GAIN_MIN = 0;
+    public static final int MIC_GAIN_MAX = 79;
+
+    private static final boolean DEBUG = true;
+
+
+    public native int WpdInterfaceOpen();
+    public native int WpdInterfaceClose();
+    public native int WpdInterfaceControl(int cmd, int arg);
+    public native int SetMacAddr(int cmd, String macAddr);
+
+    private boolean bOpen = false;
+
+    static{
+        System.loadLibrary("wpd_a20interface-jni");
+    }
+
+    // open WpdInterface
+    public int open() {
+        int ret = 0;
+
+        if (!bOpen) {
+            if (DEBUG)  Log.d(TAG, "WpdInterfaceOpen() bOpen : " + bOpen);
+
+            ret = WpdInterfaceOpen();
+            if (ret != -1)
+                bOpen = true;
+
+            if (DEBUG)  Log.d(TAG, "WpdInterfaceOpen() finish bOpen : " + bOpen);
+        }
+
+        return ret;
+    }
+
+    // close WpdInterface
+    public int close() {
+        int ret = 0;
+
+        if (bOpen) {
+            bOpen = false;
+
+            if (DEBUG)  Log.d(TAG, "WpdInterfaceClose() bOpen : " + bOpen);
+
+            ret = WpdInterfaceClose();
+        }
+
+        return ret;
+    }
+
+    // WpdInterface ioctl
+    private int ioctl(int cmd, int arg) {
+        int ret = -1;
+        if (bOpen) {
+            //bOpen = false;
+
+            ret = WpdInterfaceControl(cmd, arg);
+        }
+
+        return ret;
+    }
+
+
+    // set MacAddr
+    public int setMacAddr(String macAddr) {
+        if (DEBUG)  Log.d(TAG, "setMacAddr() : " + macAddr);
+
+        int ret = -1;
+        if (open() != -1) {
+            ret = SetMacAddr(IOCTL_ETHERNET_MAC_SET, macAddr);
+
+            //close();
+        }
+
+        return ret;
+    }
+}

+ 154 - 154
ManagerSetting/src/main/java/kr/co/icontrols/managersetting/declare/Common.java

@@ -1,154 +1,154 @@
-package kr.co.icontrols.managersetting.declare;
-
-import java.util.List;
-
-import com.artncore.WallPadDataMgr.WallpadDeviceSet;
-import com.artncore.WallPadDataMgr.WallpadSalesSampleData;
-
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.os.Build;
-import android.util.Log;
-
-public final class Common
-{
-	public final static boolean DEBUG_LOG_ON = true;
-	public final static String GLE_MODEL = "AN_8935_iHN1010GLE";
-	public final static String SKIN_01 = "SKIN_01";
-	public final static String SKIN_02 = "SKIN_02";
-	public final static String SKIN_03 = "SKIN_03";
-	public final static String SKIN_04 = "SKIN_04";
-
-	// call apk 전달 인자값
-	public final static int FRAG_DOOR    = 10;
-	public final static int FRAG_LOBBY   = 20;
-	public final static int FRAG_GUARD   = 30;
-	public final static int FRAG_NEI     = 40;
-	public final static int FRAG_CALL    = 50;
-	public final static int FRAG_HISTORY = 60;
-	public final static int FRAG_VISITOR = 70;
-
-	// Auto FINISH
-	public final static boolean FINISH_TIME_ENABLE = true;                  // 자동 종료 사용유무
-	public final static int     FINISH_TIME_SEC = 30;                       // 메인화면 자동 종료 시간 (초)
-	public final static int     FINISH_TIME_POPUP_NORMAL_SEC = 30;          // 팝업 일반 자동 종료 시간 (초)
-	public final static int     FINISH_TIME_POPUP_ALARM_SEC = 10;           // 팝업 알람 자동 종료 시간 (초)
-	public final static int 	FINISH_TIME_POPUP_ELEVATOR = 180;
-
-	// Option
-	public final static boolean OPTION_TAB_ANMI_ENABLE = true;              // 메인스크린 텝화면 전환 에니메이션 적용여부
-
-	// Operation mode
-	public final static int     MODE_NOMAL = 0;                 // 노말
-	public final static int     MODE_BUSINESS_SAMPLE = 1;       // 영업샘플
-
-	public final static int     MODE = MODE_NOMAL;
-
-	// Button Delay
-	public final static int     BTN_DELAY_DEVCTRL = 300;                 // 디바이스 컨트롤을 하는 버튼의 경우 설정되는 딜레이시간
-	public final static int     BTN_DELAY_SHOWPOPUP = 500;               // 팝업 활성화 버튼 딜레이
-
-	public final static boolean 	DATE_TIME_WIDE_TIYE = true; 		// 추후에 DB 에서 읽어서 처리하도록 한다.
-
-	public final static int 	LIVING_LAMP_COUNT = 5;					// 추후에 DB에서 읽어서 처리하도록 한다.
-
-	// Popup Type
-	public final static int     POPUP_STYLE_NOMAL    = 0;
-	public final static int     POPUP_STYLE_ALARM    = 1;
-	public final static int 	POPUP_STYLE_INSERT_WIDGET = 2;
-
-	// Screen Size
-	public final static int     SCREEN_SIZE_MAIN_W = 1024;		// 제품 해상도 (가로)
-	public final static int     SCREEN_SIZE_MAIN_H = 600;		// 제품 해상도 (세로)
-
-	public final static int     SCREEN_SIZE_POPUP_NOMAL_W = 594;		// 팝업 해상도 (가로)
-	public final static int     SCREEN_SIZE_POPUP_NOMAL_H = 559;		// 팝업 해상도 (세로)
-
-	public final static int     SCREEN_SIZE_POPUP_ALARM_W = 594;        // 팝업 해상도 (가로)
-	public final static int     SCREEN_SIZE_POPUP_ALARM_H = 427;        // 팝업 해상도 (세로)
-
-	public final static int 	SCREEN_SIZE_POPUP_INSERT_WIDGET_W = 706;
-	public final static int 	SCREEN_SIZE_POPUP_INSERT_WIDGET_H = 349 + 76;
-
-	public final static int     CTRL_MARGIN_LEFT    = 210;      // Ctrl Layout 의 좌측 마진
-	public final static int     CTRL_MARGIN_TOP     = 75;       // Ctrl Layout 의 상측 마진
-
-	public final static String BESTIN_ROOT = "/storage/emulated/0/Bestin/";
-	public final static String SKIN_PATH = "/storage/emulated/0/Bestin/Skin/";
-	public final static String USERSKIN_PATH = "/storage/emulated/0/Bestin/UserSkin/";
-	public final static String USB_USERSKIN_PATH = "/storage/emulated/0/UserSkin/";
-
-	public static final String MAIN_EVENT_TIMER = "MAIN_EVENT_TIMER";
-	public static final String MAIN_EVENT_TIMER_02 = "MAIN_EVENT_TIMER_02";
-	public static final String CALL_ACTIVITY_HOME_CTRL = "CALL_ACTIVITY_HOME_CTRL";
-	public static final String MAIN_DRAW_TIMER = "MAIN_DRAW_TIMER";
-	public static final String MAIN_SCREEN_NOW_UPDATE = "MAIN_SCREEN_NOW_UPDATE";
-
-	public static final String WIDGET_POPUP_BR = "WIDGET_POPUP_BR";
-	public static final String WIDGET_SELECTED_ID	= "WIDGET_SELECTED_ID";
-
-
-	public static final String MENU_ID_LIST = "MENU_ID_LIST";
-	public static final String MENU_START_ID = "MENU_START_ID";
-	public static final String MENU_START_OPTION = "MENU_START_OPTION";
-	public static final String MENU_DETAIL_INFO = "MENU_DETAIL_INFO";
-
-	public static final String MAIN_ACTIVITY = ".MainActivity";
-	public static final String APP_PACKAGE_ROOT = "kr.co.icontrols.";
-	public static final String SECURITY_APK = APP_PACKAGE_ROOT + "wallpadsecurity";
-	public static final String HOMECTRL_APK = APP_PACKAGE_ROOT + "wallpadhomectrl";
-	public static final String ENERGY_APK = APP_PACKAGE_ROOT + "wallpadenergyctrl";
-	public static final String ADDSERVICE_APK = APP_PACKAGE_ROOT + "wallpadaddservice";
-	public static final String CONFIG_APK = APP_PACKAGE_ROOT + "wallpadconfig";
-	public static final String EMER_ALARM_APK = APP_PACKAGE_ROOT + "wallpademergency";
-
-
-	public static final String DONG_HO_SPLIT_TOKEN = "_";
-	public static final boolean ENABLED_SUB_DEVICE_DEFAULT_VALUE = true; //true;
-
-	public static final String CONTROLLER_SETTING_DO_USED = "사용함";
-	public static final String CONTROLLER_SETTING_DO_NOT_USED = "사용안함";
-	public static final String PSTN_CALL_TYPE = "국선";
-	public static final int SETTING_ITEM_TYPE_BASE = 101;
-	public static final int SETTING_ITEM_SUB_DEVICE_LIST    = SETTING_ITEM_TYPE_BASE + 9;
-	public static final int SETTING_ITEM_SUB_DEVICE_ELEVATOR                    = SETTING_ITEM_TYPE_BASE + 125;
-
-	// 공통으로 쓰는거라 WallAPI.Jar 파일 쪽으로 옮기자
-
-	public static final String BR_NOTIFY_ACNAME  		= "NOTIFY_ACNAME";		// ANC BR
-	public static final String BR_IGW200FILTER 			= "kr.co.icontrols.wallpad.BR_IGW200FILTER";
-	public static final String BR_PSTN_RING_FINISH  	= "kr.co.icontrols.wallpad.BR_PSTN_RING_FINISH";
-	public static final String BR_EMER_LED_CONTROL 		= "kr.co.icontrols.wallpad.BR_EMER_LED_CONTROL";		// 비상발생 비상버튼 LED 점멸 Intent 등록
-	public static final String BR_DOOR_SOUND_OUT		= "kr.co.icontrols.wallpad.BR_DOOR_SOUND_OUT";
-	public static final String BR_DOOR_CALL_RECEIVED 	= "kr.co.icontrols.wallpad.BR_DOOR_CALL_RECEIVED";
-	public static final String BR_PSTN_CALL_RECEIVED 	= "kr.co.icontrols.wallpad.BR_PSTN_CALL_RECEIVED";
-
-	public static final int IGW200_DOOR_MONITERING				= 1000;
-	public static final int IGW200_DOOR_CONNECT       			= 1001;
-	public static final int IGW200_DOOR_SUBPHONE_CONNECT		= 1002;
-	public static final int IGW200_DOOR_CLOSE		          	= 1003;
-	public static final int IGW200_PSTN_CONNECT		          	= 1004;
-	public static final int IGW200_PSTN_CLOSE			        = 1005;
-	public static final int IGW200_MOIP_SUBPHONE_CONNECT        = 1006;
-	public static final int IGW200_MOIP_CLOSE			        = 1007;
-
-
-	public static final int IGW200_VIDEO_FRONT					= 1020;
-	public static final int IGW200_VIDEO_LOBBY					= 1021;
-
-	public static void DebugLog(String s) { if(DEBUG_LOG_ON) Log.d("icwallpadmain", s); }
-
-
-	public static void command_iGW200( Context context, int kind )
-	{
-		Log.d("Common", "[command_iGW200] kind [" + kind + "]");
-		Intent iGwIntent = new Intent();
-		iGwIntent.setAction(BR_IGW200FILTER);
-		iGwIntent.putExtra("KIND", kind);
-		context.sendBroadcast(iGwIntent);
-	}
-
-
-}
-
+package kr.co.icontrols.managersetting.declare;
+
+import java.util.List;
+
+import com.artncore.WallPadDataMgr.WallpadDeviceSet;
+import com.artncore.WallPadDataMgr.WallpadSalesSampleData;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Build;
+import android.util.Log;
+
+public final class Common
+{
+	public final static boolean DEBUG_LOG_ON = true;
+	public final static String GLE_MODEL = "AN_8935_iHN1010GLE";
+	public final static String SKIN_01 = "SKIN_01";
+	public final static String SKIN_02 = "SKIN_02";
+	public final static String SKIN_03 = "SKIN_03";
+	public final static String SKIN_04 = "SKIN_04";
+
+	// call apk 전달 인자값
+	public final static int FRAG_DOOR    = 10;
+	public final static int FRAG_LOBBY   = 20;
+	public final static int FRAG_GUARD   = 30;
+	public final static int FRAG_NEI     = 40;
+	public final static int FRAG_CALL    = 50;
+	public final static int FRAG_HISTORY = 60;
+	public final static int FRAG_VISITOR = 70;
+
+	// Auto FINISH
+	public final static boolean FINISH_TIME_ENABLE = true;                  // 자동 종료 사용유무
+	public final static int     FINISH_TIME_SEC = 30;                       // 메인화면 자동 종료 시간 (초)
+	public final static int     FINISH_TIME_POPUP_NORMAL_SEC = 30;          // 팝업 일반 자동 종료 시간 (초)
+	public final static int     FINISH_TIME_POPUP_ALARM_SEC = 10;           // 팝업 알람 자동 종료 시간 (초)
+	public final static int 	FINISH_TIME_POPUP_ELEVATOR = 180;
+
+	// Option
+	public final static boolean OPTION_TAB_ANMI_ENABLE = true;              // 메인스크린 텝화면 전환 에니메이션 적용여부
+
+	// Operation mode
+	public final static int     MODE_NOMAL = 0;                 // 노말
+	public final static int     MODE_BUSINESS_SAMPLE = 1;       // 영업샘플
+
+	public final static int     MODE = MODE_NOMAL;
+
+	// Button Delay
+	public final static int     BTN_DELAY_DEVCTRL = 300;                 // 디바이스 컨트롤을 하는 버튼의 경우 설정되는 딜레이시간
+	public final static int     BTN_DELAY_SHOWPOPUP = 500;               // 팝업 활성화 버튼 딜레이
+
+	public final static boolean 	DATE_TIME_WIDE_TIYE = true; 		// 추후에 DB 에서 읽어서 처리하도록 한다.
+
+	public final static int 	LIVING_LAMP_COUNT = 5;					// 추후에 DB에서 읽어서 처리하도록 한다.
+
+	// Popup Type
+	public final static int     POPUP_STYLE_NOMAL    = 0;
+	public final static int     POPUP_STYLE_ALARM    = 1;
+	public final static int 	POPUP_STYLE_INSERT_WIDGET = 2;
+
+	// Screen Size
+	public final static int     SCREEN_SIZE_MAIN_W = 1024;		// 제품 해상도 (가로)
+	public final static int     SCREEN_SIZE_MAIN_H = 600;		// 제품 해상도 (세로)
+
+	public final static int     SCREEN_SIZE_POPUP_NOMAL_W = 594;		// 팝업 해상도 (가로)
+	public final static int     SCREEN_SIZE_POPUP_NOMAL_H = 559;		// 팝업 해상도 (세로)
+
+	public final static int     SCREEN_SIZE_POPUP_ALARM_W = 594;        // 팝업 해상도 (가로)
+	public final static int     SCREEN_SIZE_POPUP_ALARM_H = 427;        // 팝업 해상도 (세로)
+
+	public final static int 	SCREEN_SIZE_POPUP_INSERT_WIDGET_W = 706;
+	public final static int 	SCREEN_SIZE_POPUP_INSERT_WIDGET_H = 349 + 76;
+
+	public final static int     CTRL_MARGIN_LEFT    = 210;      // Ctrl Layout 의 좌측 마진
+	public final static int     CTRL_MARGIN_TOP     = 75;       // Ctrl Layout 의 상측 마진
+
+	public final static String BESTIN_ROOT = "/storage/emulated/0/Bestin/";
+	public final static String SKIN_PATH = "/storage/emulated/0/Bestin/Skin/";
+	public final static String USERSKIN_PATH = "/storage/emulated/0/Bestin/UserSkin/";
+	public final static String USB_USERSKIN_PATH = "/storage/emulated/0/UserSkin/";
+
+	public static final String MAIN_EVENT_TIMER = "MAIN_EVENT_TIMER";
+	public static final String MAIN_EVENT_TIMER_02 = "MAIN_EVENT_TIMER_02";
+	public static final String CALL_ACTIVITY_HOME_CTRL = "CALL_ACTIVITY_HOME_CTRL";
+	public static final String MAIN_DRAW_TIMER = "MAIN_DRAW_TIMER";
+	public static final String MAIN_SCREEN_NOW_UPDATE = "MAIN_SCREEN_NOW_UPDATE";
+
+	public static final String WIDGET_POPUP_BR = "WIDGET_POPUP_BR";
+	public static final String WIDGET_SELECTED_ID	= "WIDGET_SELECTED_ID";
+
+
+	public static final String MENU_ID_LIST = "MENU_ID_LIST";
+	public static final String MENU_START_ID = "MENU_START_ID";
+	public static final String MENU_START_OPTION = "MENU_START_OPTION";
+	public static final String MENU_DETAIL_INFO = "MENU_DETAIL_INFO";
+
+	public static final String MAIN_ACTIVITY = ".MainActivity";
+	public static final String APP_PACKAGE_ROOT = "kr.co.icontrols.";
+	public static final String SECURITY_APK = APP_PACKAGE_ROOT + "wallpadsecurity";
+	public static final String HOMECTRL_APK = APP_PACKAGE_ROOT + "wallpadhomectrl";
+	public static final String ENERGY_APK = APP_PACKAGE_ROOT + "wallpadenergyctrl";
+	public static final String ADDSERVICE_APK = APP_PACKAGE_ROOT + "wallpadaddservice";
+	public static final String CONFIG_APK = APP_PACKAGE_ROOT + "wallpadconfig";
+	public static final String EMER_ALARM_APK = APP_PACKAGE_ROOT + "wallpademergency";
+
+
+	public static final String DONG_HO_SPLIT_TOKEN = "_";
+	public static final boolean ENABLED_SUB_DEVICE_DEFAULT_VALUE = true; //true;
+
+	public static final String CONTROLLER_SETTING_DO_USED = "사용함";
+	public static final String CONTROLLER_SETTING_DO_NOT_USED = "사용안함";
+	public static final String PSTN_CALL_TYPE = "국선";
+	public static final int SETTING_ITEM_TYPE_BASE = 101;
+	public static final int SETTING_ITEM_SUB_DEVICE_LIST    = SETTING_ITEM_TYPE_BASE + 9;
+	public static final int SETTING_ITEM_SUB_DEVICE_ELEVATOR                    = SETTING_ITEM_TYPE_BASE + 125;
+
+	// 공통으로 쓰는거라 WallAPI.Jar 파일 쪽으로 옮기자
+
+	public static final String BR_NOTIFY_ACNAME  		= "NOTIFY_ACNAME";		// ANC BR
+	public static final String BR_IGW200FILTER 			= "kr.co.icontrols.wallpad.BR_IGW200FILTER";
+	public static final String BR_PSTN_RING_FINISH  	= "kr.co.icontrols.wallpad.BR_PSTN_RING_FINISH";
+	public static final String BR_EMER_LED_CONTROL 		= "kr.co.icontrols.wallpad.BR_EMER_LED_CONTROL";		// 비상발생 비상버튼 LED 점멸 Intent 등록
+	public static final String BR_DOOR_SOUND_OUT		= "kr.co.icontrols.wallpad.BR_DOOR_SOUND_OUT";
+	public static final String BR_DOOR_CALL_RECEIVED 	= "kr.co.icontrols.wallpad.BR_DOOR_CALL_RECEIVED";
+	public static final String BR_PSTN_CALL_RECEIVED 	= "kr.co.icontrols.wallpad.BR_PSTN_CALL_RECEIVED";
+
+	public static final int IGW200_DOOR_MONITERING				= 1000;
+	public static final int IGW200_DOOR_CONNECT       			= 1001;
+	public static final int IGW200_DOOR_SUBPHONE_CONNECT		= 1002;
+	public static final int IGW200_DOOR_CLOSE		          	= 1003;
+	public static final int IGW200_PSTN_CONNECT		          	= 1004;
+	public static final int IGW200_PSTN_CLOSE			        = 1005;
+	public static final int IGW200_MOIP_SUBPHONE_CONNECT        = 1006;
+	public static final int IGW200_MOIP_CLOSE			        = 1007;
+
+
+	public static final int IGW200_VIDEO_FRONT					= 1020;
+	public static final int IGW200_VIDEO_LOBBY					= 1021;
+
+	public static void DebugLog(String s) { if(DEBUG_LOG_ON) Log.d("icwallpadmain", s); }
+
+
+	public static void command_iGW200( Context context, int kind )
+	{
+		Log.d("Common", "[command_iGW200] kind [" + kind + "]");
+		Intent iGwIntent = new Intent();
+		iGwIntent.setAction(BR_IGW200FILTER);
+		iGwIntent.putExtra("KIND", kind);
+		context.sendBroadcast(iGwIntent);
+	}
+
+
+}
+

+ 132 - 143
ManagerSetting/src/main/java/kr/co/icontrols/managersetting/imap/iMAP_ctrl_config_read.java

@@ -1,143 +1,132 @@
-package kr.co.icontrols.managersetting.imap;
-
-import java.util.ArrayList;
-import java.util.Calendar;
-
-import android.content.Context;
-import android.util.Log;
-
-import com.artncore.WallPadDataMgr.WallpadStatusData;
-import com.artncore.WallPadDataMgr.wallpaddbmgr.AddressSet;
-import com.artncore.wallpadimap.RetProci;
-import com.artncore.wallpadimap.WallPadiMAPClient;
-import com.util.LogUtil;
-
-
-public class iMAP_ctrl_config_read extends WallPadiMAPClient{
-
-    String  myIP="NONE";
-    String  myDong="NONE";
-    String  myHo="NONE";
-
-    Context ctx;
-    RetProci Proc;
-    String XMLHeader;
-    WallpadStatusData DBMGR = null;
-
-    String ServerIP = "10.0.1.1";
-
-    int SvrPort = 10000;
-    int RequestWork = 0;
-
-    final WallpadStatusData wallpadStatusData = new WallpadStatusData(ctx); //객체 생성
-
-    String NewsVersionFromServer = null;
-
-    int RequestCount;
-
-    public iMAP_ctrl_config_read(Context ctx)
-    {
-        DBMGR = new WallpadStatusData(ctx);
-        AddressSet addc =  DBMGR.getAddressMGR(); //DB에서 동호 정보 받아옴
-        DBMGR.closeDB();
-        //동, 호, ip 정보 저장
-        myIP = addc.IPAddress;
-        myDong = addc.Dong;
-        myHo = addc.Ho;
-
-        //Gateway 주소 구하기
-        try
-        {
-            if(myIP!=null)
-            {
-                String[] SplitedString = myIP.split("\\.");
-                if(SplitedString != null)
-                {
-                    if(SplitedString.length == 4)
-                    {
-                        int temp = Integer.parseInt(SplitedString[3]);
-                        temp = temp + 100;
-                        ServerIP = SplitedString[0] + "." + SplitedString[1] + "." + SplitedString[2] + "." + temp;
-                        Log.d("iMAP_ctrl_config_read", "Gateway IP address : " + ServerIP);
-                    }
-                }
-            }
-
-        }
-        catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", "", re);
-        }
-        catch (Exception e)
-        {
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", "", e);
-        }
-
-        //타임아웃 설정
-        SetSocketWaitCount(2000);
-
-        //XML Header 생성
-        XMLHeader = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n"+
-                "<imap ver = \"1.0\" address = \""+myIP+"\" sender = \""+myDong+"동 "+myHo+"호"+"\">\r\n" ;
-
-        this.ctx = ctx;
-    }
-
-    private String GetXMLinfo()
-    {
-        String retXML = XMLHeader +
-                "   <service type = \"request\" name= \"igate_ctrl_config_read\">\r\n"+
-                "   </service>\r\n</imap>";
-
-        return retXML;
-    }
-    public void SetServerIPcfg(String IPa, int port)
-    {
-        ServerIP = IPa;
-        SvrPort = port;
-    }
-
-    public void SetRetCtr(RetProci retProci)
-    {
-        Proc = retProci;
-    }
-
-    protected void ProcComplite()
-    {
-        if(Proc != null)
-        {
-            SetItem("service");
-            String result = GetAttributeVal(0, "result");
-            if (result!=null)
-            {
-                if (result.equalsIgnoreCase("ok"))
-                {
-                    String name = GetAttributeVal(0, "name");
-                    String type = GetAttributeVal(0, "type");
-                    if ((name!=null && name.equalsIgnoreCase("igate_ctrl_config_read")) && (type!=null && type.equalsIgnoreCase("reply")))
-                    {
-                        Proc.ProcSuccess();
-                        return;
-                    }
-                }
-            }
-            Proc.ProcError();
-        }
-        else
-        {
-            if(Proc!=null)
-                Proc.ProcError();
-        }
-    }
-    protected void ProcError()
-    {
-        if(Proc!=null)
-            Proc.ProcError();
-    }
-
-    public void DoWork()
-    {
-        SetServerIPConfig(ServerIP, SvrPort);
-        SendXMLDoc(GetXMLinfo(), true);
-    }
-}
+package kr.co.icontrols.managersetting.imap;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+
+import android.content.Context;
+import android.util.Log;
+
+import com.artncore.WallPadDataMgr.WallpadStatusData;
+import com.artncore.WallPadDataMgr.wallpaddbmgr.AddressSet;
+import com.artncore.wallpadimap.RetProci;
+import com.artncore.wallpadimap.WallPadiMAPClient;
+
+
+
+
+public class iMAP_ctrl_config_read extends WallPadiMAPClient{
+
+    String  myIP="NONE";
+    String  myDong="NONE";
+    String  myHo="NONE";
+
+    Context ctx;
+    RetProci Proc;
+    String XMLHeader;
+    WallpadStatusData DBMGR = null;
+
+    String ServerIP = "10.0.1.1";
+
+    int SvrPort = 10000;
+    int RequestWork = 0;
+
+    final WallpadStatusData wallpadStatusData = new WallpadStatusData(ctx); //객체 생성
+
+    String NewsVersionFromServer = null;
+
+    int RequestCount;
+
+    public iMAP_ctrl_config_read(Context ctx)
+    {
+        DBMGR = new WallpadStatusData(ctx);
+        AddressSet addc =  DBMGR.getAddressMGR(); //DB에서 동호 정보 받아옴
+        DBMGR.closeDB();
+        //동, 호, ip 정보 저장
+        myIP = addc.IPAddress;
+        myDong = addc.Dong;
+        myHo = addc.Ho;
+
+        //Gateway 주소 구하기
+        try
+        {
+            String[] SplitedString = myIP.split("\\.");
+            if(SplitedString != null)
+            {
+                if(SplitedString.length == 4)
+                {
+                    int temp = Integer.parseInt(SplitedString[3]);
+                    temp = temp + 100;
+                    ServerIP = SplitedString[0] + "." + SplitedString[1] + "." + SplitedString[2] + "." + temp;
+                    Log.d("iMAP_ctrl_config_read", "Gateway IP address : " + ServerIP);
+                }
+            }
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+
+        //타임아웃 설정
+        SetSocketWaitCount(2000);
+
+        //XML Header 생성
+        XMLHeader = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n"+
+                "<imap ver = \"1.0\" address = \""+myIP+"\" sender = \""+myDong+"동 "+myHo+"호"+"\">\r\n" ;
+
+        this.ctx = ctx;
+    }
+
+    private String GetXMLinfo()
+    {
+        String retXML = XMLHeader +
+                "   <service type = \"request\" name= \"igate_ctrl_config_read\">\r\n"+
+                "   </service>\r\n</imap>";
+
+        return retXML;
+    }
+    public void SetServerIPcfg(String IPa, int port)
+    {
+        ServerIP = IPa;
+        SvrPort = port;
+    }
+
+    public void SetRetCtr(RetProci retProci)
+    {
+        Proc = retProci;
+    }
+
+    protected void ProcComplite()
+    {
+        if(Proc != null)
+        {
+            SetItem("service");
+            String result = GetAttributeVal(0, "result");
+            if (result!=null)
+            {
+                if (result.equalsIgnoreCase("ok"))
+                {
+                    if ((GetAttributeVal(0, "name").equalsIgnoreCase("igate_ctrl_config_read")) && (GetAttributeVal(0, "type").equalsIgnoreCase("reply")))
+                    {
+                        Proc.ProcSuccess();
+                        return;
+                    }
+                }
+            }
+            Proc.ProcError();
+        }
+        else
+        {
+            Proc.ProcError();
+        }
+    }
+    protected void ProcError()
+    {
+        Proc.ProcError();
+    }
+
+    public void DoWork()
+    {
+        SetServerIPConfig(ServerIP, SvrPort);
+        SendXMLDoc(GetXMLinfo(), true);
+    }
+}

+ 216 - 226
ManagerSetting/src/main/java/kr/co/icontrols/managersetting/imap/iMAP_hn_config_read.java

@@ -1,226 +1,216 @@
-package kr.co.icontrols.managersetting.imap;
-
-import java.util.ArrayList;
-import java.util.Calendar;
-
-import android.content.Context;
-import android.util.Log;
-
-import com.artncore.WallPadDataMgr.WallpadStatusData;
-import com.artncore.WallPadDataMgr.wallpaddbmgr.AddressSet;
-import com.artncore.wallpadimap.RetProci;
-import com.artncore.wallpadimap.WallPadiMAPClient;
-import com.util.LogUtil;
-
-
-/**
- * @description
- * 본 Class는 iMAP API를 사용하기위해 필요한 클래스이다.<br>
- * Xml 통신을 사용하는 기능별로 하나의 클래스를 만들어 쓰는 것이 좋음.<br>
- * 예) 원격검침(iMAPMeteringClass), 주민투표(iMAPVotingClass) 등<br><br>
- *
- * 만약 간단하게 메시지 송 수신 하려면 본 클래스에서 GetXML() 수정하고<br>
- * 상위UI에서  SetItem, GetAttributeVal, GetItemVal을 사용하여 XML데이터를 <br>
- * 뽑아 사용하면 됨.<br><br>
- *
- * @example
- * Log.d("TAG", "Button Touched");<br>
-
-final iMAPBasicClass imapBasicClass = new iMAPBasicClass(getApplicationContext()); //객체 생성<br>
-imapBasicClass.SetServerIPcfg("10.2.12.3", 10000); //보낼 IP 및 포트 설정<br>
-imapBasicClass.DoWork(0);<br><br>
-
-imapBasicClass.SetRetCtr(new RetProci(){<br><br>
-
-&nbsp;@Override<br>
-public void ProcSuccess() {<br>
-// TODO Auto-generated method stub<br><br>
-
-//* 정상적인 메시지가 수신되면 이곳이 실행됨<br>
-//* 중간에 짤리거나 비정상적인 메시지는 이곳을 실행하지 않고 'ProcError'가 실행됨<br><br>
- *
- * *** Test XML Message ***<br>
-&lt;?xml version="1.0" encoding="utf-8"?&gt;<br>
-&lt;imap ver = "1.0" address = "10.2.12.3" sender = "단지서버"&gt;<br>
-&lt;service type = "reply" name= "event_notify" result = "ok"&gt;<br>
-&lt;event&gt; "elevator_up" &lt;/event&gt;<br>
-&lt;event&gt; "elevator_down" &lt;/event&gt;<br>
-&lt;event&gt; "elevator_stop" &lt;/event&gt;<br>
-&lt;valuelist year = "2007" month = "1" day = "0"elect_read ="40" elect_used ="38" gas_read ="5" gas_used ="4"/&gt;<br>
-&lt;/service&gt;<br>
-&lt;/imap&gt;<br><br>
-
-// 위 같은 메시지가 수신되었을때 아래 로그 출력 되는 값 참고하여 개발 요망!<br><br>
-
-Log.d(TAG, "ProcSuccess");<br><br>
-
-int ElementCount = imapBasicClass.SetItem("service");<br>
-Log.d(TAG, "ElementCount :"+ElementCount); //1<br><br>
-
-String AttributeType =  imapBasicClass.GetAttributeVal(0, "type");<br>
-Log.d(TAG, "AttributeType :"+AttributeType); //"reply"<br><br>
-
-String AttributeName =  imapBasicClass.GetAttributeVal(0, "name");<br>
-Log.d(TAG, "AttributeName :"+AttributeName); //"event_notify"<br><br>
-
-String AttributeResult =  imapBasicClass.GetAttributeVal(0, "result");<br>
-Log.d(TAG, "AttributeResult :"+AttributeResult); //"ok"<br><br>
-
-int ElementCountEvent = imapBasicClass.SetItem("event");<br>
-Log.d(TAG, "ElementCount_Next :"+ElementCountEvent); //3<br><br>
-
-String AttributeEvent1 =  imapBasicClass.GetItemVal(0);<br>
-Log.d(TAG, "AttributeEvent1 :"+AttributeEvent1);  //"elevator_up"<br><br>
-
-String AttributeEvent2 =  imapBasicClass.GetItemVal(1);<br>
-Log.d(TAG, "AttributeEvent2 :"+AttributeEvent2);  //"elevator_down"<br><br>
-
-String AttributeEvent3 =  imapBasicClass.GetItemVal(2);<br>
-Log.d(TAG, "AttributeEvent3 :"+AttributeEvent3);  //"elevator_stop"<br><br>
-
-int ElementCount_valuelist = imapBasicClass.SetItem("valuelist");<br>
-Log.d(TAG, "ElementCount_valuelist :"+ElementCount_valuelist); //1<br><br>
-
-String AttributeYear =  imapBasicClass.GetAttributeVal(0, "year");<br>
-Log.d(TAG, "AttributeYear :"+AttributeYear); //"2007"<br>
-}<br><br>
-
-&nbsp;@Override<br>
-public void ProcError() {<br>
-// TODO Auto-generated method stub<br>
-Log.d("Hyunsu", "ProcError");<br>
-}<br><br>
-
-&nbsp;@Override<br>
-public void ProcDoing() {<br>
-// TODO Auto-generated method stub<br>
-}});<br>
- */
-public class iMAP_hn_config_read extends WallPadiMAPClient{
-
-    String  myIP="NONE";
-    String  myDong="NONE";
-    String  myHo="NONE";
-
-    Context ctx;
-    RetProci Proc;
-    String XMLHeader;
-    WallpadStatusData DBMGR = null;
-
-    String ServerIP = "10.0.1.1";
-
-    int SvrPort = 10000;
-    int RequestWork = 0;
-
-    final WallpadStatusData wallpadStatusData = new WallpadStatusData(ctx); //객체 생성
-
-    String NewsVersionFromServer = null;
-
-    int RequestCount;
-
-    public iMAP_hn_config_read(Context ctx)
-    {
-        DBMGR = new WallpadStatusData(ctx);
-        AddressSet addc =  DBMGR.getAddressMGR(); //DB에서 동호 정보 받아옴
-        DBMGR.closeDB();
-        //동, 호, ip 정보 저장
-        myIP = addc.IPAddress;
-        myDong = addc.Dong;
-        myHo = addc.Ho;
-
-        //Gateway 주소 구하기
-        try
-        {
-            if(myIP!=null)
-            {
-                String[] SplitedString = myIP.split("\\.");
-                if(SplitedString != null)
-                {
-                    if(SplitedString.length == 4)
-                    {
-                        int temp = Integer.parseInt(SplitedString[3]);
-                        temp = temp + 100;
-                        ServerIP = SplitedString[0] + "." + SplitedString[1] + "." + SplitedString[2] + "." + temp;
-                        Log.d("iMAP_hn_config_read", "Gateway IP address : " + ServerIP);
-                    }
-                }
-            }
-
-        }
-        catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", "", re);
-        }
-        catch (Exception e)
-        {
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", "", e);
-        }
-
-        //타임아웃 설정
-        SetSocketWaitCount(2000);
-
-        //XML Header 생성
-        XMLHeader = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n"+
-                "<imap ver = \"1.0\" address = \""+myIP+"\" sender = \""+myDong+"동 "+myHo+"호"+"\">\r\n" ;
-
-        this.ctx = ctx;
-    }
-
-    private String GetXMLinfo()
-    {
-        String retXML = XMLHeader +
-                "   <service type = \"request\" name= \"igate_hn_config_read\">\r\n"+
-                "   </service>\r\n</imap>";
-
-        return retXML;
-    }
-    public void SetServerIPcfg(String IPa, int port)
-    {
-        ServerIP = IPa;
-        SvrPort = port;
-    }
-
-    public void SetRetCtr(RetProci retProci)
-    {
-        Proc = retProci;
-    }
-
-    protected void ProcComplite()
-    {
-        if(Proc != null)
-        {
-            SetItem("service");
-            String result = GetAttributeVal(0, "result");
-            if (result!=null)
-            {
-                if (result.equalsIgnoreCase("ok"))
-                {
-                    String name = GetAttributeVal(0, "name");
-                    String type =GetAttributeVal(0, "type");
-                    if ((name!=null && name.equalsIgnoreCase("igate_hn_config_read")) && (type!=null && type.equalsIgnoreCase("reply")))
-                    {
-                        Proc.ProcSuccess();
-                        return;
-                    }
-                }
-            }
-            Proc.ProcError();
-        }
-        else
-        {
-            if(Proc!=null)
-                Proc.ProcError();
-        }
-    }
-    protected void ProcError()
-    {
-        if(Proc!=null)
-            Proc.ProcError();
-    }
-
-    public void DoWork()
-    {
-        SetServerIPConfig(ServerIP, SvrPort);
-        SendXMLDoc(GetXMLinfo(), true);
-    }
-}
+package kr.co.icontrols.managersetting.imap;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+
+import android.content.Context;
+import android.util.Log;
+
+import com.artncore.WallPadDataMgr.WallpadStatusData;
+import com.artncore.WallPadDataMgr.wallpaddbmgr.AddressSet;
+import com.artncore.wallpadimap.RetProci;
+import com.artncore.wallpadimap.WallPadiMAPClient;
+
+
+
+
+
+/**
+ * @description
+ * 본 Class는 iMAP API를 사용하기위해 필요한 클래스이다.<br>
+ * Xml 통신을 사용하는 기능별로 하나의 클래스를 만들어 쓰는 것이 좋음.<br>
+ * 예) 원격검침(iMAPMeteringClass), 주민투표(iMAPVotingClass) 등<br><br>
+ *
+ * 만약 간단하게 메시지 송 수신 하려면 본 클래스에서 GetXML() 수정하고<br>
+ * 상위UI에서  SetItem, GetAttributeVal, GetItemVal을 사용하여 XML데이터를 <br>
+ * 뽑아 사용하면 됨.<br><br>
+ *
+ * @example
+ * Log.d("TAG", "Button Touched");<br>
+
+final iMAPBasicClass imapBasicClass = new iMAPBasicClass(getApplicationContext()); //객체 생성<br>
+imapBasicClass.SetServerIPcfg("10.2.12.3", 10000); //보낼 IP 및 포트 설정<br>
+imapBasicClass.DoWork(0);<br><br>
+
+imapBasicClass.SetRetCtr(new RetProci(){<br><br>
+
+&nbsp;@Override<br>
+public void ProcSuccess() {<br>
+// TODO Auto-generated method stub<br><br>
+
+//* 정상적인 메시지가 수신되면 이곳이 실행됨<br>
+//* 중간에 짤리거나 비정상적인 메시지는 이곳을 실행하지 않고 'ProcError'가 실행됨<br><br>
+ *
+ * *** Test XML Message ***<br>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;<br>
+&lt;imap ver = "1.0" address = "10.2.12.3" sender = "단지서버"&gt;<br>
+&lt;service type = "reply" name= "event_notify" result = "ok"&gt;<br>
+&lt;event&gt; "elevator_up" &lt;/event&gt;<br>
+&lt;event&gt; "elevator_down" &lt;/event&gt;<br>
+&lt;event&gt; "elevator_stop" &lt;/event&gt;<br>
+&lt;valuelist year = "2007" month = "1" day = "0"elect_read ="40" elect_used ="38" gas_read ="5" gas_used ="4"/&gt;<br>
+&lt;/service&gt;<br>
+&lt;/imap&gt;<br><br>
+
+// 위 같은 메시지가 수신되었을때 아래 로그 출력 되는 값 참고하여 개발 요망!<br><br>
+
+Log.d(TAG, "ProcSuccess");<br><br>
+
+int ElementCount = imapBasicClass.SetItem("service");<br>
+Log.d(TAG, "ElementCount :"+ElementCount); //1<br><br>
+
+String AttributeType =  imapBasicClass.GetAttributeVal(0, "type");<br>
+Log.d(TAG, "AttributeType :"+AttributeType); //"reply"<br><br>
+
+String AttributeName =  imapBasicClass.GetAttributeVal(0, "name");<br>
+Log.d(TAG, "AttributeName :"+AttributeName); //"event_notify"<br><br>
+
+String AttributeResult =  imapBasicClass.GetAttributeVal(0, "result");<br>
+Log.d(TAG, "AttributeResult :"+AttributeResult); //"ok"<br><br>
+
+int ElementCountEvent = imapBasicClass.SetItem("event");<br>
+Log.d(TAG, "ElementCount_Next :"+ElementCountEvent); //3<br><br>
+
+String AttributeEvent1 =  imapBasicClass.GetItemVal(0);<br>
+Log.d(TAG, "AttributeEvent1 :"+AttributeEvent1);  //"elevator_up"<br><br>
+
+String AttributeEvent2 =  imapBasicClass.GetItemVal(1);<br>
+Log.d(TAG, "AttributeEvent2 :"+AttributeEvent2);  //"elevator_down"<br><br>
+
+String AttributeEvent3 =  imapBasicClass.GetItemVal(2);<br>
+Log.d(TAG, "AttributeEvent3 :"+AttributeEvent3);  //"elevator_stop"<br><br>
+
+int ElementCount_valuelist = imapBasicClass.SetItem("valuelist");<br>
+Log.d(TAG, "ElementCount_valuelist :"+ElementCount_valuelist); //1<br><br>
+
+String AttributeYear =  imapBasicClass.GetAttributeVal(0, "year");<br>
+Log.d(TAG, "AttributeYear :"+AttributeYear); //"2007"<br>
+}<br><br>
+
+&nbsp;@Override<br>
+public void ProcError() {<br>
+// TODO Auto-generated method stub<br>
+Log.d("Hyunsu", "ProcError");<br>
+}<br><br>
+
+&nbsp;@Override<br>
+public void ProcDoing() {<br>
+// TODO Auto-generated method stub<br>
+}});<br>
+ */
+public class iMAP_hn_config_read extends WallPadiMAPClient{
+
+    String  myIP="NONE";
+    String  myDong="NONE";
+    String  myHo="NONE";
+
+    Context ctx;
+    RetProci Proc;
+    String XMLHeader;
+    WallpadStatusData DBMGR = null;
+
+    String ServerIP = "10.0.1.1";
+
+    int SvrPort = 10000;
+    int RequestWork = 0;
+
+    final WallpadStatusData wallpadStatusData = new WallpadStatusData(ctx); //객체 생성
+
+    String NewsVersionFromServer = null;
+
+    int RequestCount;
+
+    public iMAP_hn_config_read(Context ctx)
+    {
+        DBMGR = new WallpadStatusData(ctx);
+        AddressSet addc =  DBMGR.getAddressMGR(); //DB에서 동호 정보 받아옴
+        DBMGR.closeDB();
+        //동, 호, ip 정보 저장
+        myIP = addc.IPAddress;
+        myDong = addc.Dong;
+        myHo = addc.Ho;
+
+        //Gateway 주소 구하기
+        try
+        {
+            String[] SplitedString = myIP.split("\\.");
+            if(SplitedString != null)
+            {
+                if(SplitedString.length == 4)
+                {
+                    int temp = Integer.parseInt(SplitedString[3]);
+                    temp = temp + 100;
+                    ServerIP = SplitedString[0] + "." + SplitedString[1] + "." + SplitedString[2] + "." + temp;
+                    Log.d("iMAP_hn_config_read", "Gateway IP address : " + ServerIP);
+                }
+            }
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+
+        //타임아웃 설정
+        SetSocketWaitCount(2000);
+
+        //XML Header 생성
+        XMLHeader = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n"+
+                "<imap ver = \"1.0\" address = \""+myIP+"\" sender = \""+myDong+"동 "+myHo+"호"+"\">\r\n" ;
+
+        this.ctx = ctx;
+    }
+
+    private String GetXMLinfo()
+    {
+        String retXML = XMLHeader +
+                "   <service type = \"request\" name= \"igate_hn_config_read\">\r\n"+
+                "   </service>\r\n</imap>";
+
+        return retXML;
+    }
+    public void SetServerIPcfg(String IPa, int port)
+    {
+        ServerIP = IPa;
+        SvrPort = port;
+    }
+
+    public void SetRetCtr(RetProci retProci)
+    {
+        Proc = retProci;
+    }
+
+    protected void ProcComplite()
+    {
+        if(Proc != null)
+        {
+            SetItem("service");
+            String result = GetAttributeVal(0, "result");
+            if (result!=null)
+            {
+                if (result.equalsIgnoreCase("ok"))
+                {
+                    if ((GetAttributeVal(0, "name").equalsIgnoreCase("igate_hn_config_read")) && (GetAttributeVal(0, "type").equalsIgnoreCase("reply")))
+                    {
+                        Proc.ProcSuccess();
+                        return;
+                    }
+                }
+            }
+            Proc.ProcError();
+        }
+        else
+        {
+            Proc.ProcError();
+        }
+    }
+    protected void ProcError()
+    {
+        Proc.ProcError();
+    }
+
+    public void DoWork()
+    {
+        SetServerIPConfig(ServerIP, SvrPort);
+        SendXMLDoc(GetXMLinfo(), true);
+    }
+}

+ 32 - 126
ManagerSetting/src/main/java/kr/co/icontrols/v40ioctl/V40IF.java

@@ -8,7 +8,6 @@ import com.artncore.deviceinterface.WallPadInterface;
 import com.artncore.wallpadapi.IGW200dAPI;
 import com.artncore.wallpadapi.IGW300API;
 import com.artncore.wallpadapi.WallPadAPI;
-import com.util.LogUtil;
 
 import android.os.Build;
 import android.os.Handler;
@@ -45,12 +44,9 @@ public class V40IF {
         try {
             if (Build.VERSION.SDK_INT > 23) mV40IOIF_NOUGAT = new V40IOInterface2();
             else mV40IOIF = new V40IOInterface();
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {
             Log.e(TAG, "[Exception] V40IF()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -58,13 +54,9 @@ public class V40IF {
         try {
             if (Build.VERSION.SDK_INT > 23) return mV40IOIF_NOUGAT.WpdInterfaceOpen();
             else return mV40IOIF.WpdInterfaceOpen();
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-            return -99;
         } catch (Exception e) {
             Log.e(TAG, "[Exception] WpdInterfaceOpen()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
             return -99;
         }
     }
@@ -73,13 +65,9 @@ public class V40IF {
         try {
             if (Build.VERSION.SDK_INT > 23) return mV40IOIF_NOUGAT.WpdInterfaceClose();
             else return mV40IOIF.WpdInterfaceClose();
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-            return -99;
         } catch (Exception e) {
             Log.e(TAG, "[Exception] WpdInterfaceClose()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
             return -99;
         }
     }
@@ -88,13 +76,9 @@ public class V40IF {
         try {
             if (Build.VERSION.SDK_INT > 23) return mV40IOIF_NOUGAT.WpdInterfaceControl(cmd, arg);
             else return mV40IOIF.WpdInterfaceControl(cmd, arg);
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-            return -99;
         } catch (Exception e) {
             Log.e(TAG, "[Exception] WpdInterfaceControl(int cmd, int arg)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
             return -99;
         }
     }
@@ -103,12 +87,9 @@ public class V40IF {
         try {
             if (Build.VERSION.SDK_INT > 23) mV40IOIF_NOUGAT.SetMacAddr(mac);
             else mV40IOIF.SetMacAddr(mac);
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {
             Log.e(TAG, "[Exception] SetMacAddr(String mac)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -116,12 +97,9 @@ public class V40IF {
         try {
             if (Build.VERSION.SDK_INT > 23) mV40IOIF_NOUGAT.IpAddr(ip);
             else mV40IOIF.IpAddr(ip);
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {
             Log.e(TAG, "[Exception] IpAddr(String ip)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -129,12 +107,9 @@ public class V40IF {
         try {
             if (Build.VERSION.SDK_INT > 23) mV40IOIF_NOUGAT.GatewayIp(gw);
             else mV40IOIF.GatewayIp(gw);
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {
             Log.e(TAG, "[Exception] GatewayIp(String gw)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -142,12 +117,9 @@ public class V40IF {
         try {
             if (Build.VERSION.SDK_INT > 23) mV40IOIF_NOUGAT.NetMask(mask);
             else mV40IOIF.NetMask(mask);
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {
             Log.e(TAG, "[Exception] NetMask(String mask)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -155,12 +127,9 @@ public class V40IF {
         try {
             if (Build.VERSION.SDK_INT > 23) mV40IOIF_NOUGAT.NetAll(ip, mask, gw, mac);
             else mV40IOIF.NetAll(ip, mask, gw, mac);
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {
             Log.e(TAG, "[Exception] NetAll(String ip, String mask, String gw, String mac)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -168,12 +137,9 @@ public class V40IF {
         try {
             if (Build.VERSION.SDK_INT > 23) mV40IOIF_NOUGAT.LiveUpdate();
             else mV40IOIF.LiveUpdate();
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {
             Log.e(TAG, "[Exception] LiveUpdate()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -181,12 +147,9 @@ public class V40IF {
         try {
             if (Build.VERSION.SDK_INT > 23) mV40IOIF_NOUGAT.UsbUpdate();
             else mV40IOIF.UsbUpdate();
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {
             Log.e(TAG, "[Exception] UsbUpdate()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -194,13 +157,9 @@ public class V40IF {
         try {
             if (Build.VERSION.SDK_INT > 23) return mV40IOIF_NOUGAT.LcdWakeUp();
             else return mV40IOIF.LcdWakeUp();
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-            return -99;
         } catch (Exception e) {
             Log.e(TAG, "[Exception] LcdWakeUp()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
             return -99;
         }
     }
@@ -209,12 +168,9 @@ public class V40IF {
         try {
             if (Build.VERSION.SDK_INT > 23) mV40IOIF_NOUGAT.Reboot(sec);
             else mV40IOIF.Reboot(sec);
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {
             Log.e(TAG, "[Exception] Reboot(int sec)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -222,12 +178,9 @@ public class V40IF {
         try {
             if (Build.VERSION.SDK_INT > 23) mV40IOIF_NOUGAT.NetDns1(dns);
             else mV40IOIF.NetDns1(dns);
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {
             Log.e(TAG, "[Exception] NetDns1(String dns)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -235,12 +188,9 @@ public class V40IF {
         try {
             if (Build.VERSION.SDK_INT > 23) mV40IOIF_NOUGAT.NetDns2(dns);
             else mV40IOIF.NetDns2(dns);
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {
             Log.e(TAG, "[Exception] NetDns2(String dns)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -248,13 +198,9 @@ public class V40IF {
         try {
             if (Build.VERSION.SDK_INT > 23) return mV40IOIF_NOUGAT.sensorread();
             else return mV40IOIF.sensorread();
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-            return -99;
         } catch (Exception e) {
             Log.e(TAG, "[Exception] sensorread()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
             return -99;
         }
     }
@@ -263,13 +209,9 @@ public class V40IF {
         try {
             if (Build.VERSION.SDK_INT > 23) return mV40IOIF_NOUGAT.LcdWakeUp();
             else return mV40IOIF.LcdWakeUp();
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-            return -99;
         } catch (Exception e) {
             Log.e(TAG, "[Exception] setLcdWakeUp()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
             return -99;
         }
     }
@@ -279,12 +221,9 @@ public class V40IF {
             Log.i(TAG, "[setDns] DNS1 : " + dns1 + " / DNS2 : " + dns2);
             NetDns1(dns1);
             NetDns2(dns2);
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {
             Log.e(TAG, "[Exception] setDns(String dns1, String dns2)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -292,12 +231,9 @@ public class V40IF {
         try {
             Log.i(TAG, "[setV40Reboot] V40 Device will reboot : " +sec + " second !!!");
             Reboot(sec);
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {
             Log.e(TAG, "[Exception] setV40Reboot(int sec)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -305,12 +241,9 @@ public class V40IF {
         try {
             Log.i(TAG, "[setMACAddress] strMAC [" + strMAC+ "]");
             SetMacAddr(strMAC);
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {
             Log.e(TAG, "[Exception] setMACAddress(String strMAC)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -318,12 +251,9 @@ public class V40IF {
         try {
             Log.i(TAG, "[setIPAddress] strIP [" + strIP + "]");
             IpAddr(strIP);
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {
             Log.e(TAG, "[Exception] setIPAddress(String strIP)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -331,12 +261,9 @@ public class V40IF {
         try {
             Log.i(TAG, "[setNetmaskAddress] strNetmask [" + strNetmask + "]");
             NetMask(strNetmask);
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {
             Log.e(TAG, "[Exception] setNetmaskAddress(String strNetmask)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -344,12 +271,9 @@ public class V40IF {
         try {
             Log.i(TAG, "[setGatewayAddress] strGateway [" + strGateway+ "]");
             GatewayIp(strGateway);
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {
             Log.e(TAG, "[Exception] setGatewayAddress(String strGateway)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -358,12 +282,9 @@ public class V40IF {
             Log.i(TAG, "[setNetworkInterface] strIP [" + strIP+ "], strNetmask [" + strNetmask+ "], strGateway [" + strGateway+ "], strMAC [" + strMAC+ "]");
 
             NetAll(strIP, strNetmask, strGateway, strMAC);
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {
             Log.e(TAG, "[Exception] setNetworkInterface(String strIP, String strNetmask, String strGateway, String strDNS, String strMAC)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -376,45 +297,30 @@ public class V40IF {
             GatewayIp(strGateway);
             // DNS 설정 JNI method는 아직 없음(2018.02.26)
             SetMacAddr(strMAC);
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {
             Log.e(TAG, "[Exception] setNetworkInterface(String strIP, String strNetmask, String strGateway, String strDNS, String strMAC)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
     public boolean setCameraConfigure(int nValue) {
         try {
             Log.i(TAG, "[setCameraConfigure] nValue [" + nValue+ "]");
-            if (Version.getModelType() == Version.MODEL_TYPE.IHN_D101 || Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I
-                    || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K_I
-                    || Version.getModelType() == MODEL_TYPE.IHN_1010GL || Version.getModelType() == MODEL_TYPE.IHN_1010GL_I) {
-                if (Build.VERSION.SDK_INT > 23) {
-                    if (mV40IOIF_NOUGAT == null) {
-                        Log.i(TAG, "[setCameraConfigure] mV40IOIF_NOUGAT is null!!");
-                        return false;
-                    }
-                    mV40IOIF_NOUGAT.CameraSet(nValue);
-                    return true;
-                }
-                else {
-                    Log.w(TAG, "[setCameraConfigure] Not supported Version !!! AOS Ver. [" + Build.VERSION.SDK_INT+ "]");
+            if (Build.VERSION.SDK_INT > 23) {
+                if (mV40IOIF_NOUGAT == null) {
+                    Log.i(TAG, "[setCameraConfigure] mV40IOIF_NOUGAT is null!!");
                     return false;
                 }
+                mV40IOIF_NOUGAT.CameraSet(nValue);
+                return true;
             }
             else {
-                Log.w(TAG, "[setCameraConfigure] Not supported Model !!! MODEL [" + Version.getModelType() + "]");
+                Log.w(TAG, "[setCameraConfigure] Not supported AOS Version !!! AOS Ver. [" + Build.VERSION.SDK_INT+ "]");
                 return false;
             }
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-            return false;
         } catch (Exception e) {
             Log.e(TAG, "[Exception] setCameraConfigure(int nValue)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
             return false;
         }
     }

+ 172 - 202
ManagerSetting/src/main/java/kr/co/icontrols/v40ioctl/V40IOInterface.java

@@ -1,202 +1,172 @@
-package kr.co.icontrols.v40ioctl;
-
-import android.os.Build;
-import android.util.Log;
-
-import com.util.LogUtil;
-
-public class V40IOInterface {
-
-    private static final String TAG = "V40IOInterface";
-
-    static{
-		System.loadLibrary("wpd_v40interface-jni");
-    }
-
-	public native int WpdInterfaceOpen();
-	public native int WpdInterfaceClose();
-	public native int WpdInterfaceControl(int cmd, int arg);
-    public native void SetMacAddr(String mac);
-    public native void IpAddr(String ip);
-    public native void GatewayIp(String gw);
-    public native void NetMask(String mask);
-    public native void NetAll(String ip, String mask, String gw, String mac);
-    public native void LiveUpdate();
-    public native void UsbUpdate();
-    public native int LcdWakeUp();
-    public native void Reboot(int sec);
-	public native void NetDns1(String dns);
-	public native void NetDns2(String dns);
-	public native int sensorread();
-
-    public void setLcdWakeUp() {
-		LcdWakeUp();
-	}
-
-	public void setDns(String dns1, String dns2)
-	{
-		NetDns1(dns1);
-		NetDns2(dns2);
-		Log.i(TAG, "V40 SET DNS IP#1 : " + dns1 + " / DNS IP#2 : " + dns2);
-	}
-
-	public void setV40Reboot(int sec)
-	{
-		Log.i(TAG, "V40 Device will reboot : " +sec + " second !!!");
-		Reboot(sec);
-	}
-
-    public void setMACAddress(String strMAC) {
-        try
-		{
-            Log.i(TAG, "[setMACAddress] strMAC [" + strMAC+ "]");
-            SetMacAddr(strMAC);
-
-        }
-		catch (RuntimeException re) {
-			LogUtil.errorLogInfo("", TAG, re);
-		}
-		catch (Exception e)
-		{
-            Log.e(TAG, "[Exception] setMACAddress(String strMAC)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
-        }
-    }
-
-    public void setIPAddress(String strIP) {
-        try
-		{
-			Log.i(TAG, "[setIPAddress] strIP [" + strIP + "]");
-			IpAddr(strIP);
-		}
-		catch (RuntimeException re) {
-			LogUtil.errorLogInfo("", TAG, re);
-		}
-		catch (Exception e)
-		{
-            Log.e(TAG, "[Exception] setIPAddress(String strIP)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
-        }
-    }
-
-    public void setNetmaskAddress(String strNetmask) {
-        try
-		{
-			Log.i(TAG, "[setNetmaskAddress] strNetmask [" + strNetmask + "]");
-			NetMask(strNetmask);
-		}
-		catch (RuntimeException re) {
-			LogUtil.errorLogInfo("", TAG, re);
-		}
-		catch (Exception e)
-		{
-            Log.e(TAG, "[Exception] setNetmaskAddress(String strNetmask)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
-        }
-    }
-
-    public void setGatewayAddress(String strGateway) {
-        try
-		{
-            Log.i(TAG, "[setGatewayAddress] strGateway [" + strGateway+ "]");
-			GatewayIp(strGateway);
-        }
-		catch (RuntimeException re) {
-			LogUtil.errorLogInfo("", TAG, re);
-		}
-		catch (Exception e)
-		{
-            Log.e(TAG, "[Exception] setGatewayAddress(String strGateway)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
-        }
-    }
-
-    /*public void setNetworkInterface(String strIP, String strNetmask, String strGateway, String strDNS) {
-        try
-		{
-            Log.i(TAG, "[setNetworkInterface] strIP [" + strIP+ "], strNetmask [" + strNetmask+ "], strGateway [" + strGateway+ "], strDNS [" + strDNS+ "]");
-
-            IpAddr(strIP);
-            NetMask(strNetmask);
-            GatewayIp(strGateway);
-			Reboot(5);
-        }
-        catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-        }
-        catch (Exception e)
-		{
-            Log.e(TAG, "[Exception] setNetworkInterface(String strIP, String strNetmask, String strGateway, String strDNS)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
-        }
-    }*/
-
-	/**
-	 * V40 JNI를 이용한 IP 설정<br>
-	 * NetAll(strIP, strNetmask, strGateway, strMAC) 사용<br>
-	 * Reboot(5 sec) 설정<br>
-	 *
-	 * @param strIP 설정하고자 하는 IP
-	 * @param strNetmask 설정하고자 하는 Netmask
-	 * @param strGateway 설정하고자 하는 Gateway
-	 * @param strMAC 설정하고자 하는 Mac address
-	 */
-	public void setNetworkInterface(String strIP, String strNetmask, String strGateway, String strMAC) {
-		try
-		{
-			Log.i(TAG, "[setNetworkInterface] strIP [" + strIP+ "], strNetmask [" + strNetmask+ "], strGateway [" + strGateway+ "], strMAC [" + strMAC+ "]");
-
-			NetAll(strIP, strNetmask, strGateway, strMAC);
-		}
-		catch (RuntimeException re) {
-			LogUtil.errorLogInfo("", TAG, re);
-		}
-		catch (Exception e)
-		{
-			Log.e(TAG, "[Exception] setNetworkInterface(String strIP, String strNetmask, String strGateway, String strDNS, String strMAC)");
-			//e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
-		}
-	}
-
-	/**
-	 * V40 JNI를 이용한 IP 설정<br>
-	 * DNS 설정 JNI method 미구현 버전<br>
-	 * Reboot(5 sec) 설정<br>
-	 *
-	 * @param strIP 설정하고자 하는 IP
-	 * @param strNetmask 설정하고자 하는 Netmask
-	 * @param strGateway 설정하고자 하는 Gateway
-	 * @param strDNS (사용안함)
-	 * @param strMAC 설정하고자 하는 Mac address
-	 */
-    public void setNetworkInterface(String strIP, String strNetmask, String strGateway, String strDNS, String strMAC) {
-        try
-		{
-            Log.i(TAG, "[setNetworkInterface] strIP [" + strIP+ "], strNetmask [" + strNetmask+ "], strGateway [" + strGateway+ "], strDNS [" + strDNS+ "], strMAC [" + strMAC+ "]");
-
-            IpAddr(strIP);
-            NetMask(strNetmask);
-            GatewayIp(strGateway);
-            // DNS 설정 JNI method는 아직 없음(2018.02.26)
-            SetMacAddr(strMAC);
-        }
-		catch (RuntimeException re) {
-			LogUtil.errorLogInfo("", TAG, re);
-		}
-		catch (Exception e)
-		{
-            Log.e(TAG, "[Exception] setNetworkInterface(String strIP, String strNetmask, String strGateway, String strDNS, String strMAC)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
-        }
-    }
-
-
-
-}
+package kr.co.icontrols.v40ioctl;
+
+import android.os.Build;
+import android.util.Log;
+
+public class V40IOInterface {
+
+    private static final String TAG = "V40IOInterface";
+
+    static{
+		System.loadLibrary("wpd_v40interface-jni");
+    }
+
+	public native int WpdInterfaceOpen();
+	public native int WpdInterfaceClose();
+	public native int WpdInterfaceControl(int cmd, int arg);
+    public native void SetMacAddr(String mac);
+    public native void IpAddr(String ip);
+    public native void GatewayIp(String gw);
+    public native void NetMask(String mask);
+    public native void NetAll(String ip, String mask, String gw, String mac);
+    public native void LiveUpdate();
+    public native void UsbUpdate();
+    public native int LcdWakeUp();
+    public native void Reboot(int sec);
+	public native void NetDns1(String dns);
+	public native void NetDns2(String dns);
+	public native int sensorread();
+
+    public void setLcdWakeUp() {
+		LcdWakeUp();
+	}
+
+	public void setDns(String dns1, String dns2)
+	{
+		NetDns1(dns1);
+		NetDns2(dns2);
+		Log.i(TAG, "V40 SET DNS IP#1 : " + dns1 + " / DNS IP#2 : " + dns2);
+	}
+
+	public void setV40Reboot(int sec)
+	{
+		Log.i(TAG, "V40 Device will reboot : " +sec + " second !!!");
+		Reboot(sec);
+	}
+
+    public void setMACAddress(String strMAC) {
+        try
+		{
+            Log.i(TAG, "[setMACAddress] strMAC [" + strMAC+ "]");
+            SetMacAddr(strMAC);
+
+        }
+        catch (Exception e)
+		{
+            Log.e(TAG, "[Exception] setMACAddress(String strMAC)");
+            e.printStackTrace();
+        }
+    }
+
+    public void setIPAddress(String strIP) {
+        try
+		{
+			Log.i(TAG, "[setIPAddress] strIP [" + strIP + "]");
+			IpAddr(strIP);
+		}
+        catch (Exception e)
+		{
+            Log.e(TAG, "[Exception] setIPAddress(String strIP)");
+            e.printStackTrace();
+        }
+    }
+
+    public void setNetmaskAddress(String strNetmask) {
+        try
+		{
+			Log.i(TAG, "[setNetmaskAddress] strNetmask [" + strNetmask + "]");
+			NetMask(strNetmask);
+		}
+		catch (Exception e)
+		{
+            Log.e(TAG, "[Exception] setNetmaskAddress(String strNetmask)");
+            e.printStackTrace();
+        }
+    }
+
+    public void setGatewayAddress(String strGateway) {
+        try
+		{
+            Log.i(TAG, "[setGatewayAddress] strGateway [" + strGateway+ "]");
+			GatewayIp(strGateway);
+        }
+        catch (Exception e)
+		{
+            Log.e(TAG, "[Exception] setGatewayAddress(String strGateway)");
+            e.printStackTrace();
+        }
+    }
+
+    /*public void setNetworkInterface(String strIP, String strNetmask, String strGateway, String strDNS) {
+        try
+		{
+            Log.i(TAG, "[setNetworkInterface] strIP [" + strIP+ "], strNetmask [" + strNetmask+ "], strGateway [" + strGateway+ "], strDNS [" + strDNS+ "]");
+
+            IpAddr(strIP);
+            NetMask(strNetmask);
+            GatewayIp(strGateway);
+			Reboot(5);
+        }
+        catch (Exception e)
+		{
+            Log.e(TAG, "[Exception] setNetworkInterface(String strIP, String strNetmask, String strGateway, String strDNS)");
+            e.printStackTrace();
+        }
+    }*/
+
+	/**
+	 * V40 JNI를 이용한 IP 설정<br>
+	 * NetAll(strIP, strNetmask, strGateway, strMAC) 사용<br>
+	 * Reboot(5 sec) 설정<br>
+	 *
+	 * @param strIP 설정하고자 하는 IP
+	 * @param strNetmask 설정하고자 하는 Netmask
+	 * @param strGateway 설정하고자 하는 Gateway
+	 * @param strMAC 설정하고자 하는 Mac address
+	 */
+	public void setNetworkInterface(String strIP, String strNetmask, String strGateway, String strMAC) {
+		try
+		{
+			Log.i(TAG, "[setNetworkInterface] strIP [" + strIP+ "], strNetmask [" + strNetmask+ "], strGateway [" + strGateway+ "], strMAC [" + strMAC+ "]");
+
+			NetAll(strIP, strNetmask, strGateway, strMAC);
+		}
+		catch (Exception e)
+		{
+			Log.e(TAG, "[Exception] setNetworkInterface(String strIP, String strNetmask, String strGateway, String strDNS, String strMAC)");
+			e.printStackTrace();
+		}
+	}
+
+	/**
+	 * V40 JNI를 이용한 IP 설정<br>
+	 * DNS 설정 JNI method 미구현 버전<br>
+	 * Reboot(5 sec) 설정<br>
+	 *
+	 * @param strIP 설정하고자 하는 IP
+	 * @param strNetmask 설정하고자 하는 Netmask
+	 * @param strGateway 설정하고자 하는 Gateway
+	 * @param strDNS (사용안함)
+	 * @param strMAC 설정하고자 하는 Mac address
+	 */
+    public void setNetworkInterface(String strIP, String strNetmask, String strGateway, String strDNS, String strMAC) {
+        try
+		{
+            Log.i(TAG, "[setNetworkInterface] strIP [" + strIP+ "], strNetmask [" + strNetmask+ "], strGateway [" + strGateway+ "], strDNS [" + strDNS+ "], strMAC [" + strMAC+ "]");
+
+            IpAddr(strIP);
+            NetMask(strNetmask);
+            GatewayIp(strGateway);
+            // DNS 설정 JNI method는 아직 없음(2018.02.26)
+            SetMacAddr(strMAC);
+        }
+        catch (Exception e)
+		{
+            Log.e(TAG, "[Exception] setNetworkInterface(String strIP, String strNetmask, String strGateway, String strDNS, String strMAC)");
+            e.printStackTrace();
+        }
+    }
+
+
+
+}

+ 11 - 41
ManagerSetting/src/main/java/kr/co/icontrols/v40ioctl/V40IOInterface2.java

@@ -3,8 +3,6 @@ package kr.co.icontrols.v40ioctl;
 import android.os.Build;
 import android.util.Log;
 
-import com.util.LogUtil;
-
 public class V40IOInterface2 {
 
     private static final String TAG = "V40IOInterface2";
@@ -59,14 +57,10 @@ public class V40IOInterface2 {
             SetMacAddr(strMAC);
 
         }
-		catch (RuntimeException re) {
-			LogUtil.errorLogInfo("", TAG, re);
-		}
-		catch (Exception e)
+        catch (Exception e)
 		{
             Log.e(TAG, "[Exception] setMACAddress(String strMAC)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -76,14 +70,10 @@ public class V40IOInterface2 {
 			Log.i(TAG, "[setIPAddress] strIP [" + strIP + "]");
 			IpAddr(strIP);
 		}
-		catch (RuntimeException re) {
-			LogUtil.errorLogInfo("", TAG, re);
-		}
-		catch (Exception e)
+        catch (Exception e)
 		{
             Log.e(TAG, "[Exception] setIPAddress(String strIP)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -93,14 +83,10 @@ public class V40IOInterface2 {
 			Log.i(TAG, "[setNetmaskAddress] strNetmask [" + strNetmask + "]");
 			NetMask(strNetmask);
 		}
-		catch (RuntimeException re) {
-			LogUtil.errorLogInfo("", TAG, re);
-		}
 		catch (Exception e)
 		{
             Log.e(TAG, "[Exception] setNetmaskAddress(String strNetmask)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -110,14 +96,10 @@ public class V40IOInterface2 {
             Log.i(TAG, "[setGatewayAddress] strGateway [" + strGateway+ "]");
 			GatewayIp(strGateway);
         }
-		catch (RuntimeException re) {
-			LogUtil.errorLogInfo("", TAG, re);
-		}
-		catch (Exception e)
+        catch (Exception e)
 		{
             Log.e(TAG, "[Exception] setGatewayAddress(String strGateway)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 
@@ -131,14 +113,10 @@ public class V40IOInterface2 {
             GatewayIp(strGateway);
 			Reboot(5);
         }
-        catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-        }
         catch (Exception e)
 		{
             Log.e(TAG, "[Exception] setNetworkInterface(String strIP, String strNetmask, String strGateway, String strDNS)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }*/
 
@@ -159,14 +137,10 @@ public class V40IOInterface2 {
 
 			NetAll(strIP, strNetmask, strGateway, strMAC);
 		}
-		catch (RuntimeException re) {
-			LogUtil.errorLogInfo("", TAG, re);
-		}
 		catch (Exception e)
 		{
 			Log.e(TAG, "[Exception] setNetworkInterface(String strIP, String strNetmask, String strGateway, String strDNS, String strMAC)");
-			//e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+			e.printStackTrace();
 		}
 	}
 
@@ -192,14 +166,10 @@ public class V40IOInterface2 {
             // DNS 설정 JNI method는 아직 없음(2018.02.26)
             SetMacAddr(strMAC);
         }
-		catch (RuntimeException re) {
-			LogUtil.errorLogInfo("", TAG, re);
-		}
-		catch (Exception e)
+        catch (Exception e)
 		{
             Log.e(TAG, "[Exception] setNetworkInterface(String strIP, String strNetmask, String strGateway, String strDNS, String strMAC)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
     }
 

BIN
ManagerSetting/src/main/jniLibs/armeabi-v7a/libwpd_v40interface2-jni.so


BIN
ManagerSetting/src/main/jniLibs/armeabi/libwpd_v40interface2-jni.so


+ 52 - 52
ManagerSetting/src/main/res/layout/activity_item_twopane.xml

@@ -1,14 +1,14 @@
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:baselineAligned="false"
-    android:divider="?android:attr/dividerHorizontal"
-    android:orientation="vertical"
-    android:showDividers="middle"
-    tools:context="com.artncore.managersetting.ui.activities.MainActivity" >
-
-    <!--
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:baselineAligned="false"
+    android:divider="?android:attr/dividerHorizontal"
+    android:orientation="vertical"
+    android:showDividers="middle"
+    tools:context="com.artncore.managersetting.ui.activities.MainActivity" >
+
+    <!--
     This layout is a two-pane layout for the Items
     master/detail flow. See res/values-large/refs.xml and
     res/values-sw600dp/refs.xml for an example of layout aliases
@@ -16,44 +16,44 @@
     this two-pane version.
 
     For more on layout aliases, see:
-    http://developer.android.com/training/multiscreen/screensizes.html#TaskUseAliasFilters
-    -->
-
-    <com.artncore.managersetting.ui.AdminHeader
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        />
-
-    <ImageView
-        android:layout_width="match_parent"
-        android:layout_height="1px"
-        android:background="#444444"
-        />
-    
-
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        >
-        <fragment
-            android:id="@+id/item_list"
-            android:name="com.artncore.managersetting.ui.fragments.AdminMenuFragment"
-            android:layout_width="0dp"
-            android:layout_height="match_parent"
-            android:layout_weight="2"
-            tools:layout="@android:layout/list_content" />
-
-        <ImageView
-            android:layout_width="1px"
-            android:layout_height="match_parent"
-            android:background="#444444"
-            />
-
-        <FrameLayout
-            android:id="@+id/item_detail_container"
-            android:layout_width="0dp"
-            android:layout_height="match_parent"
-            android:layout_weight="5" />
-    </LinearLayout>
-
-</LinearLayout>
+    http://developer.android.com/training/multiscreen/screensizes.html#TaskUseAliasFilters
+    -->
+
+    <com.artncore.managersetting.ui.AdminHeader
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        />
+
+    <ImageView
+        android:layout_width="match_parent"
+        android:layout_height="1px"
+        android:background="#444444"
+        />
+    
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        >
+        <fragment
+            android:id="@+id/item_list"
+            android:name="com.artncore.managersetting.ui.fragments.AdminMenuFragment"
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:layout_weight="2"
+            tools:layout="@android:layout/list_content" />
+
+        <ImageView
+            android:layout_width="1px"
+            android:layout_height="match_parent"
+            android:background="#444444"
+            />
+
+        <FrameLayout
+            android:id="@+id/item_detail_container"
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:layout_weight="5" />
+    </LinearLayout>
+
+</LinearLayout>

+ 318 - 318
ManagerSetting/src/main/res/layout/activity_set_address.xml

@@ -1,318 +1,318 @@
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical">
-
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="70dp"
-        android:layout_margin="10dp"
-        android:orientation="horizontal">
-
-        <TextView
-            android:layout_width="400dp"
-            android:layout_height="match_parent"
-            android:layout_gravity="center_vertical"
-            android:text="@string/menu_title_set_dongho"
-            android:textSize="50sp" />
-
-        <Button
-            android:id="@+id/btn_back"
-            android:layout_width="120dp"
-            android:layout_height="match_parent"
-            android:layout_gravity="right|center_vertical"
-            android:layout_marginLeft="700dp"
-            android:onClick="mOnClick"
-            android:text="@string/home"
-            android:textSize="30sp" />
-    </LinearLayout>
-
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="1"
-        android:orientation="horizontal">
-
-        <LinearLayout
-            android:layout_width="712dp"
-            android:layout_height="match_parent"
-            android:layout_marginLeft="20dp"
-            android:orientation="vertical">
-
-            <LinearLayout
-                android:layout_width="match_parent"
-                android:layout_height="120dp"
-                android:layout_marginTop="30dp"
-                android:gravity="center"
-                android:orientation="horizontal">
-
-                <TextView
-                    android:id="@+id/tv_dongho"
-                    android:layout_width="500dp"
-                    android:layout_height="100dp"
-                    android:background="#FF808000"
-                    android:focusable="true"
-                    android:gravity="center"
-                    android:maxEms="4"
-                    android:paddingLeft="30dp"
-
-                    android:paddingRight="30dp"
-                    android:textSize="50sp" />
-
-            </LinearLayout>
-
-
-            <RelativeLayout
-                android:id="@+id/layout_set_field_specail_function"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="10dp"
-                android:background="@color/yellow"
-                android:padding="10dp">
-
-                <TextView
-                    android:id="@+id/tv_set_field_specail_function"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_alignParentTop="true"
-                    android:text="@string/admin_dongho_set_field_specific_features"
-                    android:textSize="30sp" />
-
-                <ImageView
-                    android:id="@+id/iv_line"
-                    android:layout_width="match_parent"
-                    android:layout_height="1px"
-                    android:layout_below="@+id/tv_set_field_specail_function"
-                    android:background="#444444" />
-
-                <TextView
-                    android:id="@+id/tv_use_outer_motion"
-                    android:layout_width="wrap_content"
-                    android:layout_height="70dp"
-                    android:layout_below="@+id/iv_line"
-                    android:text="@string/admin_dongho_use_outer_motion"
-                    android:textSize="30sp" />
-
-                <com.artncore.managersetting.ui.SwitchButton
-                    android:id="@+id/btn_switch_use_outer_motion_detector"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_alignParentRight="true"
-                    android:layout_below="@+id/iv_line" />
-
-
-                <TextView
-                    android:id="@+id/tv_use_inner_motion"
-                    android:layout_width="wrap_content"
-                    android:layout_height="70dp"
-                    android:layout_below="@+id/tv_use_outer_motion"
-                    android:text="@string/admin_dongho_use_inner_motion"
-                    android:textSize="30sp" />
-
-                <com.artncore.managersetting.ui.SwitchButton
-                    android:id="@+id/btn_switch_use_inner_motion_detector"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_alignParentRight="true"
-                    android:layout_below="@+id/tv_use_outer_motion" />
-
-
-                <TextView
-                    android:id="@+id/tv_use_outer_motion_to_inner_motion"
-                    android:layout_width="wrap_content"
-                    android:layout_height="70dp"
-                    android:layout_below="@+id/tv_use_inner_motion"
-                    android:text="@string/admin_dongho_use_outer_motion_to_inner_motion"
-                    android:textSize="30sp" />
-
-                <com.artncore.managersetting.ui.SwitchButton
-                    android:id="@+id/btn_switch_use_outer_motion_detector_to_inner_motion"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_alignParentRight="true"
-                    android:layout_below="@+id/tv_use_inner_motion" />
-
-
-                <TextView
-                    android:id="@+id/tv_use_wallpad_camera"
-                    android:layout_width="wrap_content"
-                    android:layout_height="70dp"
-                    android:layout_below="@+id/tv_use_outer_motion_to_inner_motion"
-                    android:text="@string/admin_dongho_use_wallpad_camera"
-                    android:textSize="30sp" />
-
-                <com.artncore.managersetting.ui.SwitchButton
-                    android:id="@+id/btn_switch_use_wallpad_camera"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_alignParentRight="true"
-                    android:layout_below="@+id/tv_use_outer_motion_to_inner_motion" />
-
-                <TextView
-                    android:id="@+id/tv_use_multiswitch"
-                    android:layout_width="wrap_content"
-                    android:layout_height="70dp"
-                    android:layout_below="@+id/tv_use_wallpad_camera"
-                    android:text="@string/admin_dongho_use_multiswitch"
-                    android:textSize="30sp" />
-
-                <com.artncore.managersetting.ui.SwitchButton
-                    android:id="@+id/btn_switch_use_multiswitch"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_alignParentRight="true"
-                    android:layout_below="@+id/tv_use_wallpad_camera" />
-
-                <TextView
-                    android:id="@+id/tv_use_double_danji"
-                    android:layout_width="wrap_content"
-                    android:layout_height="70dp"
-                    android:layout_below="@+id/tv_use_multiswitch"
-                    android:text="@string/admin_dongho_use_double_danji"
-                    android:textSize="30sp" />
-
-                <com.artncore.managersetting.ui.SwitchButton
-                    android:id="@+id/btn_switch_use_double_danji"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_alignParentRight="true"
-                    android:layout_below="@+id/tv_use_multiswitch" />
-
-
-                <TextView
-                    android:id="@+id/tv_use_danji_set_rent_use"
-                    android:layout_width="wrap_content"
-                    android:layout_height="70dp"
-                    android:layout_below="@+id/tv_use_double_danji"
-                    android:text="@string/admin_dongho_use_danji_set_rent_use"
-                    android:textSize="30sp" />
-
-                <com.artncore.managersetting.ui.SwitchButton
-                    android:id="@+id/btn_switch_use_danji_set_rent_use"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_alignParentRight="true"
-                    android:layout_below="@+id/tv_use_double_danji" />
-
-
-            </RelativeLayout>
-
-        </LinearLayout>
-
-        <LinearLayout
-            android:layout_width="wrap_content"
-            android:layout_height="match_parent"
-            android:orientation="vertical"
-            android:paddingLeft="100dp">
-
-            <GridLayout
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_gravity="center"
-                android:layout_marginTop="30dp"
-                android:columnCount="3"
-                android:orientation="horizontal"
-                android:rowCount="4">
-
-                <Button
-                    android:id="@+id/num1"
-                    style="@style/style_set_dongho_dialpad"
-                    android:onClick="mOnClick"
-                    android:text="1" />
-
-                <Button
-                    android:id="@+id/num2"
-                    style="@style/style_set_dongho_dialpad"
-                    android:onClick="mOnClick"
-                    android:text="2" />
-
-                <Button
-                    android:id="@+id/num3"
-                    style="@style/style_set_dongho_dialpad"
-                    android:onClick="mOnClick"
-                    android:text="3" />
-
-                <Button
-                    android:id="@+id/num4"
-                    style="@style/style_set_dongho_dialpad"
-                    android:onClick="mOnClick"
-                    android:text="4" />
-
-                <Button
-                    android:id="@+id/num5"
-                    style="@style/style_set_dongho_dialpad"
-                    android:onClick="mOnClick"
-                    android:text="5" />
-
-                <Button
-                    android:id="@+id/num6"
-                    style="@style/style_set_dongho_dialpad"
-                    android:onClick="mOnClick"
-                    android:text="6" />
-
-                <Button
-                    android:id="@+id/num7"
-                    style="@style/style_set_dongho_dialpad"
-                    android:onClick="mOnClick"
-                    android:text="7" />
-
-                <Button
-                    android:id="@+id/num8"
-                    style="@style/style_set_dongho_dialpad"
-                    android:onClick="mOnClick"
-                    android:text="8" />
-
-                <Button
-                    android:id="@+id/num9"
-                    style="@style/style_set_dongho_dialpad"
-                    android:onClick="mOnClick"
-                    android:text="9" />
-
-                <Button
-                    android:id="@+id/btn_dong"
-                    style="@style/style_set_dongho_dialpad"
-                    android:onClick="mOnClick"
-                    android:text="@string/dong" />
-
-                <Button
-                    android:id="@+id/num0"
-                    style="@style/style_set_dongho_dialpad"
-                    android:onClick="mOnClick"
-                    android:text="0" />
-
-                <Button
-                    android:id="@+id/btn_ho"
-                    style="@style/style_set_dongho_dialpad"
-                    android:onClick="mOnClick"
-                    android:text="@string/ho" />
-            </GridLayout>
-
-            <LinearLayout
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_gravity="center"
-                android:orientation="horizontal">
-
-                <Button
-                    android:id="@+id/btn_eraser"
-                    android:layout_width="180dp"
-                    android:layout_height="120dp"
-                    android:layout_gravity="center_vertical"
-                    android:onClick="mOnClick"
-                    android:text="@string/erase"
-                    android:textSize="30sp" />
-
-                <Button
-                    android:id="@+id/btn_set"
-                    android:layout_width="180dp"
-                    android:layout_height="120dp"
-                    android:layout_gravity="center_vertical"
-                    android:onClick="mOnClick"
-                    android:text="@string/set"
-                    android:textSize="30sp" />
-
-            </LinearLayout>
-        </LinearLayout>
-    </LinearLayout>
-</LinearLayout>
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="70dp"
+        android:layout_margin="10dp"
+        android:orientation="horizontal">
+
+        <TextView
+            android:layout_width="400dp"
+            android:layout_height="match_parent"
+            android:layout_gravity="center_vertical"
+            android:text="@string/menu_title_set_dongho"
+            android:textSize="50sp" />
+
+        <Button
+            android:id="@+id/btn_back"
+            android:layout_width="120dp"
+            android:layout_height="match_parent"
+            android:layout_gravity="right|center_vertical"
+            android:layout_marginLeft="700dp"
+            android:onClick="mOnClick"
+            android:text="@string/home"
+            android:textSize="30sp" />
+    </LinearLayout>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:orientation="horizontal">
+
+        <LinearLayout
+            android:layout_width="712dp"
+            android:layout_height="match_parent"
+            android:layout_marginLeft="20dp"
+            android:orientation="vertical">
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="120dp"
+                android:layout_marginTop="30dp"
+                android:gravity="center"
+                android:orientation="horizontal">
+
+                <TextView
+                    android:id="@+id/tv_dongho"
+                    android:layout_width="500dp"
+                    android:layout_height="100dp"
+                    android:background="#FF808000"
+                    android:focusable="true"
+                    android:gravity="center"
+                    android:maxEms="4"
+                    android:paddingLeft="30dp"
+
+                    android:paddingRight="30dp"
+                    android:textSize="50sp" />
+
+            </LinearLayout>
+
+
+            <RelativeLayout
+                android:id="@+id/layout_set_field_specail_function"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="10dp"
+                android:background="@color/yellow"
+                android:padding="10dp">
+
+                <TextView
+                    android:id="@+id/tv_set_field_specail_function"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignParentTop="true"
+                    android:text="@string/admin_dongho_set_field_specific_features"
+                    android:textSize="30sp" />
+
+                <ImageView
+                    android:id="@+id/iv_line"
+                    android:layout_width="match_parent"
+                    android:layout_height="1px"
+                    android:layout_below="@+id/tv_set_field_specail_function"
+                    android:background="#444444" />
+
+                <TextView
+                    android:id="@+id/tv_use_outer_motion"
+                    android:layout_width="wrap_content"
+                    android:layout_height="70dp"
+                    android:layout_below="@+id/iv_line"
+                    android:text="@string/admin_dongho_use_outer_motion"
+                    android:textSize="30sp" />
+
+                <com.artncore.managersetting.ui.SwitchButton
+                    android:id="@+id/btn_switch_use_outer_motion_detector"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignParentRight="true"
+                    android:layout_below="@+id/iv_line" />
+
+
+                <TextView
+                    android:id="@+id/tv_use_inner_motion"
+                    android:layout_width="wrap_content"
+                    android:layout_height="70dp"
+                    android:layout_below="@+id/tv_use_outer_motion"
+                    android:text="@string/admin_dongho_use_inner_motion"
+                    android:textSize="30sp" />
+
+                <com.artncore.managersetting.ui.SwitchButton
+                    android:id="@+id/btn_switch_use_inner_motion_detector"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignParentRight="true"
+                    android:layout_below="@+id/tv_use_outer_motion" />
+
+
+                <TextView
+                    android:id="@+id/tv_use_outer_motion_to_inner_motion"
+                    android:layout_width="wrap_content"
+                    android:layout_height="70dp"
+                    android:layout_below="@+id/tv_use_inner_motion"
+                    android:text="@string/admin_dongho_use_outer_motion_to_inner_motion"
+                    android:textSize="30sp" />
+
+                <com.artncore.managersetting.ui.SwitchButton
+                    android:id="@+id/btn_switch_use_outer_motion_detector_to_inner_motion"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignParentRight="true"
+                    android:layout_below="@+id/tv_use_inner_motion" />
+
+
+                <TextView
+                    android:id="@+id/tv_use_wallpad_camera"
+                    android:layout_width="wrap_content"
+                    android:layout_height="70dp"
+                    android:layout_below="@+id/tv_use_outer_motion_to_inner_motion"
+                    android:text="@string/admin_dongho_use_wallpad_camera"
+                    android:textSize="30sp" />
+
+                <com.artncore.managersetting.ui.SwitchButton
+                    android:id="@+id/btn_switch_use_wallpad_camera"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignParentRight="true"
+                    android:layout_below="@+id/tv_use_outer_motion_to_inner_motion" />
+
+                <TextView
+                    android:id="@+id/tv_use_multiswitch"
+                    android:layout_width="wrap_content"
+                    android:layout_height="70dp"
+                    android:layout_below="@+id/tv_use_wallpad_camera"
+                    android:text="@string/admin_dongho_use_multiswitch"
+                    android:textSize="30sp" />
+
+                <com.artncore.managersetting.ui.SwitchButton
+                    android:id="@+id/btn_switch_use_multiswitch"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignParentRight="true"
+                    android:layout_below="@+id/tv_use_wallpad_camera" />
+
+                <TextView
+                    android:id="@+id/tv_use_double_danji"
+                    android:layout_width="wrap_content"
+                    android:layout_height="70dp"
+                    android:layout_below="@+id/tv_use_multiswitch"
+                    android:text="@string/admin_dongho_use_double_danji"
+                    android:textSize="30sp" />
+
+                <com.artncore.managersetting.ui.SwitchButton
+                    android:id="@+id/btn_switch_use_double_danji"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignParentRight="true"
+                    android:layout_below="@+id/tv_use_multiswitch" />
+
+
+                <TextView
+                    android:id="@+id/tv_use_danji_set_rent_use"
+                    android:layout_width="wrap_content"
+                    android:layout_height="70dp"
+                    android:layout_below="@+id/tv_use_double_danji"
+                    android:text="@string/admin_dongho_use_danji_set_rent_use"
+                    android:textSize="30sp" />
+
+                <com.artncore.managersetting.ui.SwitchButton
+                    android:id="@+id/btn_switch_use_danji_set_rent_use"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignParentRight="true"
+                    android:layout_below="@+id/tv_use_double_danji" />
+
+
+            </RelativeLayout>
+
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:orientation="vertical"
+            android:paddingLeft="100dp">
+
+            <GridLayout
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center"
+                android:layout_marginTop="30dp"
+                android:columnCount="3"
+                android:orientation="horizontal"
+                android:rowCount="4">
+
+                <Button
+                    android:id="@+id/num1"
+                    style="@style/style_set_dongho_dialpad"
+                    android:onClick="mOnClick"
+                    android:text="1" />
+
+                <Button
+                    android:id="@+id/num2"
+                    style="@style/style_set_dongho_dialpad"
+                    android:onClick="mOnClick"
+                    android:text="2" />
+
+                <Button
+                    android:id="@+id/num3"
+                    style="@style/style_set_dongho_dialpad"
+                    android:onClick="mOnClick"
+                    android:text="3" />
+
+                <Button
+                    android:id="@+id/num4"
+                    style="@style/style_set_dongho_dialpad"
+                    android:onClick="mOnClick"
+                    android:text="4" />
+
+                <Button
+                    android:id="@+id/num5"
+                    style="@style/style_set_dongho_dialpad"
+                    android:onClick="mOnClick"
+                    android:text="5" />
+
+                <Button
+                    android:id="@+id/num6"
+                    style="@style/style_set_dongho_dialpad"
+                    android:onClick="mOnClick"
+                    android:text="6" />
+
+                <Button
+                    android:id="@+id/num7"
+                    style="@style/style_set_dongho_dialpad"
+                    android:onClick="mOnClick"
+                    android:text="7" />
+
+                <Button
+                    android:id="@+id/num8"
+                    style="@style/style_set_dongho_dialpad"
+                    android:onClick="mOnClick"
+                    android:text="8" />
+
+                <Button
+                    android:id="@+id/num9"
+                    style="@style/style_set_dongho_dialpad"
+                    android:onClick="mOnClick"
+                    android:text="9" />
+
+                <Button
+                    android:id="@+id/btn_dong"
+                    style="@style/style_set_dongho_dialpad"
+                    android:onClick="mOnClick"
+                    android:text="@string/dong" />
+
+                <Button
+                    android:id="@+id/num0"
+                    style="@style/style_set_dongho_dialpad"
+                    android:onClick="mOnClick"
+                    android:text="0" />
+
+                <Button
+                    android:id="@+id/btn_ho"
+                    style="@style/style_set_dongho_dialpad"
+                    android:onClick="mOnClick"
+                    android:text="@string/ho" />
+            </GridLayout>
+
+            <LinearLayout
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center"
+                android:orientation="horizontal">
+
+                <Button
+                    android:id="@+id/btn_eraser"
+                    android:layout_width="180dp"
+                    android:layout_height="120dp"
+                    android:layout_gravity="center_vertical"
+                    android:onClick="mOnClick"
+                    android:text="@string/erase"
+                    android:textSize="30sp" />
+
+                <Button
+                    android:id="@+id/btn_set"
+                    android:layout_width="180dp"
+                    android:layout_height="120dp"
+                    android:layout_gravity="center_vertical"
+                    android:onClick="mOnClick"
+                    android:text="@string/set"
+                    android:textSize="30sp" />
+
+            </LinearLayout>
+        </LinearLayout>
+    </LinearLayout>
+</LinearLayout>

+ 8 - 12
ManagerSetting/src/main/res/layout/activity_set_address_1010.xml

@@ -225,31 +225,27 @@
                     android:layout_below="@+id/tv_use_double_danji" />
 
                 <TextView
-                    android:id="@+id/tv_escapeladder_down_send"
+                    android:id="@+id/tv_escapeladder_down_recv"
                     android:layout_width="wrap_content"
-                    android:layout_height="55px"
+                    android:layout_height="70dp"
                     android:layout_below="@+id/tv_use_danji_set_rent_use"
                     android:textSize="30sp"
-                    android:text="@string/admin_dongho_use_escapeladder_down_send"
+                    android:text="@string/admin_dongho_use_escapeladder_down_recv"
                     />
 
-                <Spinner
-                    android:id="@+id/spinner_escapeladdersend_kind"
-                    android:layout_below="@+id/tv_use_danji_set_rent_use"
+                <com.artncore.managersetting.ui.SwitchButton
+                    android:id="@+id/btn_switch_escapeladder_down_recv"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
+                    android:layout_below="@+id/tv_use_danji_set_rent_use"
                     android:layout_alignParentRight="true"
-                    android:drawSelectorOnTop="true"
-                    android:layout_gravity="center"
-                    android:gravity="center"
-                    android:textSize="24sp"
                     />
 
                 <TextView
                     android:id="@+id/tv_subwallpad"
                     android:layout_width="wrap_content"
                     android:layout_height="70dp"
-                    android:layout_below="@+id/tv_escapeladder_down_send"
+                    android:layout_below="@+id/tv_escapeladder_down_recv"
                     android:textSize="30sp"
                     android:text="@string/admin_dongho_use_subwallpad"
                     />
@@ -258,7 +254,7 @@
                     android:id="@+id/btn_switch_dongho_subwpd"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:layout_below="@+id/tv_escapeladder_down_send"
+                    android:layout_below="@+id/tv_escapeladder_down_recv"
                     android:layout_alignParentRight="true"
                     />
 

+ 6 - 10
ManagerSetting/src/main/res/layout/activity_set_address_1020b_i.xml

@@ -225,24 +225,20 @@
                         android:layout_below="@+id/tv_use_double_danji" />
 
                     <TextView
-                        android:id="@+id/tv_escapeladder_send"
+                        android:id="@+id/tv_escapeladder_down_recv"
                         android:layout_width="wrap_content"
-                        android:layout_height="55px"
+                        android:layout_height="70dp"
                         android:layout_below="@+id/tv_use_danji_set_rent_use"
                         android:textSize="30sp"
-                        android:text="@string/admin_dongho_use_escapeladder_down_send"
+                        android:text="@string/admin_dongho_use_escapeladder_down_recv"
                         />
 
-                    <Spinner
-                        android:id="@+id/spinner_escapeladdersend_kind"
-                        android:layout_below="@+id/tv_use_danji_set_rent_use"
+                    <com.artncore.managersetting.ui.SwitchButton
+                        android:id="@+id/btn_switch_escapeladder_down_recv"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
+                        android:layout_below="@+id/tv_use_danji_set_rent_use"
                         android:layout_alignParentRight="true"
-                        android:drawSelectorOnTop="true"
-                        android:layout_gravity="center"
-                        android:gravity="center"
-                        android:textSize="24sp"
                         />
 
                 </RelativeLayout>

+ 6 - 10
ManagerSetting/src/main/res/layout/activity_set_address_1030.xml

@@ -225,24 +225,20 @@
                         android:layout_below="@+id/tv_use_double_danji" />
 
                     <TextView
-                        android:id="@+id/tv_escapeladder_send"
+                        android:id="@+id/tv_escapeladder_down_recv"
                         android:layout_width="wrap_content"
-                        android:layout_height="55px"
+                        android:layout_height="70dp"
                         android:layout_below="@+id/tv_use_danji_set_rent_use"
                         android:textSize="30sp"
-                        android:text="@string/admin_dongho_use_escapeladder_down_send"
+                        android:text="@string/admin_dongho_use_escapeladder_down_recv"
                         />
 
-                    <Spinner
-                        android:id="@+id/spinner_escapeladdersend_kind"
-                        android:layout_below="@+id/tv_use_danji_set_rent_use"
+                    <com.artncore.managersetting.ui.SwitchButton
+                        android:id="@+id/btn_switch_escapeladder_down_recv"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
+                        android:layout_below="@+id/tv_use_danji_set_rent_use"
                         android:layout_alignParentRight="true"
-                        android:drawSelectorOnTop="true"
-                        android:layout_gravity="center"
-                        android:gravity="center"
-                        android:textSize="24sp"
                         />
 
                 </RelativeLayout>

Vissa filer visades inte eftersom för många filer har ändrats