Browse Source

[WallPadCall, WallPadMain]
1. FTP 수정
- Blended일 경우, 새로운 단지 서버 IP를 사용하도록 변경

2. 김수진 선임이 만든 CallService를 사용하도록 변경

jglee 3 years ago
parent
commit
f9c861daee

+ 28 - 36
WallPadCall/src/main/java/kr/co/icontrols/callengine/engine/AutoSaveStrangerPicture.java

@@ -4,8 +4,8 @@ import android.content.Context;
 import android.util.Log;
 
 import com.artncore.WallPadDataMgr.WallpadDeviceSet;
+import com.artncore.commons.define;
 import com.artncore.wallpadimap.RetProci;
-import com.util.LogUtil;
 
 import org.apache.commons.net.ftp.FTP;
 
@@ -36,12 +36,9 @@ public class AutoSaveStrangerPicture {
                 Log.d(TAG, "[startAutoSaveStrangerPicture] =====START =====");
                 mContext = context;
                 mAutoPictureInfo = info;
-            } catch (RuntimeException re) {
-                LogUtil.errorLogInfo("", TAG, re);
             } catch (Exception e) {
                 Log.e(TAG, "[Exception] startAutoSaveStrangerPicture(Context context, AutoPictureInfo Info)");
-                //e.printStackTrace();
-                LogUtil.errorLogInfo("", TAG, e);
+                e.printStackTrace();
             }
         }
 
@@ -62,11 +59,8 @@ public class AutoSaveStrangerPicture {
 
                 send_visitor_access_info_request(mAutoPictureInfo.strDong, mAutoPictureInfo.strHo, strType, strTime, strFileName, mAutoPictureInfo.strMessage);
                 Global.sendVisitorEventBRtoMobileVendor(strType, strTime);
-            } catch (RuntimeException re) {
-                LogUtil.errorLogInfo("", TAG, re);
             } catch (Exception e) {
-                //e.printStackTrace();
-                LogUtil.errorLogInfo("", TAG, e);
+                e.printStackTrace();
                 Log.e(TAG, "[Exception] startAutoSaveStrangerPicture.run()");
             }
         }
@@ -74,13 +68,13 @@ public class AutoSaveStrangerPicture {
 
     public static class UploadStrangerPicture extends Thread {
         boolean bMainServer2dot0 = false;
-
+        int danjiserverType;
         public UploadStrangerPicture() {
             Log.d(TAG, "[UploadStrangerPicture] ===== START =====");
             WallpadDeviceSet wallpadDeviceSet = new WallpadDeviceSet(mContext);
             try {
                 //bMainServer2dot0 = wallpadDeviceSet.GetNewDanjiServer();
-                int danjiserverType = wallpadDeviceSet.GetNewDanjiServer();
+                danjiserverType = wallpadDeviceSet.GetNewDanjiServer();
                 if(danjiserverType == 1)
                 {
                     bMainServer2dot0 = false;
@@ -91,16 +85,13 @@ public class AutoSaveStrangerPicture {
                 }
                 else
                 {
-
+                    bMainServer2dot0 = true;
                 }
                 Log.d(TAG, "[UploadStrangerPicture] bMainServer2dot0 [" + bMainServer2dot0 + "]");
                 wallpadDeviceSet.closeDB();
-            } catch (RuntimeException re) {
-                LogUtil.errorLogInfo("", TAG, re);
             } catch (Exception e) {
                 Log.e(TAG, "[Exception] UploadStrangerPicture()");
-                //e.printStackTrace();
-                LogUtil.errorLogInfo("", TAG, e);
+                e.printStackTrace();
                 wallpadDeviceSet.closeDB();
             }
         }
@@ -108,7 +99,22 @@ public class AutoSaveStrangerPicture {
         public void run() {
             try {
                 mFTPManager = new HDCFTPManager();
-                if (!mFTPManager.connectFTP(strRemoteIP)) {
+                boolean isConnect = false;
+
+                if(danjiserverType == 1)
+                {
+                    isConnect = mFTPManager.connectFTP(strRemoteIP);
+                }
+                else if(danjiserverType == 2)
+                {
+                    isConnect = mFTPManager.connectFTP(strRemoteIP);
+                }
+                else
+                {
+                    isConnect = mFTPManager.connectFTP(define.NewDanjiServerIP);
+                }
+
+                if (!isConnect) {
                     Log.w(TAG, "[UploadStrangerPicture.run()] FAIL!! -> connectFTP(...)");
                     send_visitor_upload_complete_notice(false, mAutoPictureInfo.strDong, mAutoPictureInfo.strHo, mAutoPictureInfo.eCallType, mAutoPictureInfo.eCallStatus, strTime, strFileName, "null");
                     return;
@@ -154,12 +160,9 @@ public class AutoSaveStrangerPicture {
                 disconnectFTP();
                 Log.d(TAG, "[UploadStrangerPicture.run()] Complete upload!!!");
                 send_visitor_upload_complete_notice(true, mAutoPictureInfo.strDong, mAutoPictureInfo.strHo, mAutoPictureInfo.eCallType, mAutoPictureInfo.eCallStatus, strTime, strFileName, "null");
-            } catch (RuntimeException re) {
-                LogUtil.errorLogInfo("", TAG, re);
             } catch (Exception e) {
                 Log.e(TAG, "[Exception] UploadStrangerPicture.run()");
-                //e.printStackTrace();
-                LogUtil.errorLogInfo("", TAG, e);
+                e.printStackTrace();
             }
         }
     }
@@ -174,13 +177,9 @@ public class AutoSaveStrangerPicture {
             }
             Log.d(TAG, "[disconnectFTP] disconnectFTP FAIL!!");
             return false;
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-            return false;
         } catch (Exception e) {
             Log.e(TAG, "[Exception] disconnectFTP()");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
             return false;
         }
     }
@@ -188,7 +187,6 @@ public class AutoSaveStrangerPicture {
     static String strReply_User = "";
     static String strReply_PW = "";
     static String strReply_Path = "";
-    static private String strPass_key = "passwd";
 
     public static boolean send_visitor_access_info_request(String strDong, String strHo, String strType, String strTime, final String strFileName, String strMessage) {
         try {
@@ -201,7 +199,7 @@ public class AutoSaveStrangerPicture {
                         Log.d(TAG, "[send_visitor_access_info_request] ProcSuccess()");
                         visitor_access_info.SetItem("ftp_info");
                         strReply_User = visitor_access_info.GetAttributeVal(0, "user");
-                        strReply_PW = visitor_access_info.GetAttributeVal(0, strPass_key);
+                        strReply_PW = visitor_access_info.GetAttributeVal(0, "passwd");
                         strReply_Path = visitor_access_info.GetAttributeVal(0, "path");
                         Log.d(TAG, "[send_visitor_access_info_request] Reply!! User [" + strReply_User + "], PW [" + strReply_PW + "], Path [" + strReply_Path + "]");
                         strUserID = strReply_User;
@@ -224,12 +222,9 @@ public class AutoSaveStrangerPicture {
                 });
                 return true;
             }
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {
             Log.e(TAG, "[Exception] send_visitor_access_info_request(String strDong, String strHo, String strType, String strTime, String strFileName, String strMessage)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
         return false;
     }
@@ -267,12 +262,9 @@ public class AutoSaveStrangerPicture {
                 });
                 return true;
             }
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {
             Log.e(TAG, "[Exception] send_visitor_upload_complete_notice(boolean bResult, String strDong, String strHo, String strType, String strTime, String strFileName, String strMessage)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
         return false;
     }

+ 28 - 38
WallPadCall/src/main/java/kr/co/icontrols/callengine/engine/AutoSaveVisitorPicture.java

@@ -11,8 +11,8 @@ import kr.co.icontrols.wallpadcall.imap.Request_visitor_access_info;
 import org.apache.commons.net.ftp.FTP;
 
 import com.artncore.WallPadDataMgr.WallpadDeviceSet;
+import com.artncore.commons.define;
 import com.artncore.wallpadimap.RetProci;
-import com.util.LogUtil;
 
 import android.content.Context;
 import android.util.Log;
@@ -56,12 +56,9 @@ public class AutoSaveVisitorPicture {
                 mContext = context;
                 mAutoPictureInfo = Info;
                 bRemote_FrontCalled = Remote_FrontCalled;
-            } catch (RuntimeException re) {
-                LogUtil.errorLogInfo("", TAG, re);
             } catch (Exception e) {
                 Log.e(TAG, "[Exception] startAutoSaveVisitorPicture(Context context, AutoPictureInfo Info)");
-                //e.printStackTrace();            
-                LogUtil.errorLogInfo("", TAG, e);
+                e.printStackTrace();
             }
         }
 
@@ -94,12 +91,9 @@ public class AutoSaveVisitorPicture {
 
                 send_visitor_access_info_request(mAutoPictureInfo.strDong, mAutoPictureInfo.strHo, strType, strTime, strFileName, mAutoPictureInfo.strMessage);
                 Global.sendVisitorEventBRtoMobileVendor(strType, strTime);
-            } catch (RuntimeException re) {
-                LogUtil.errorLogInfo("", TAG, re);
             } catch (Exception e) {
                 Log.e(TAG, "[Exception] startAutoSaveVisitorPicture.run()");
-                //e.printStackTrace();            
-                LogUtil.errorLogInfo("", TAG, e);
+                e.printStackTrace();
             }
         }
     }
@@ -107,12 +101,13 @@ public class AutoSaveVisitorPicture {
     public static class UploadVisitorPicture extends Thread {
 
         boolean bMainServer2dot0 = false;
-
+        int danjiserverType;
         public UploadVisitorPicture() {
             LOG_INFO("[UploadVisitorPicture] ===== START =====");
             WallpadDeviceSet wallpadDeviceSet = new WallpadDeviceSet(mContext);
             try {
-                int danjiserverType = wallpadDeviceSet.GetNewDanjiServer();
+//                bMainServer2dot0 = wallpadDeviceSet.GetNewDanjiServer();
+                danjiserverType = wallpadDeviceSet.GetNewDanjiServer();
                 if(danjiserverType == 1)
                 {
                     bMainServer2dot0 = false;
@@ -123,18 +118,13 @@ public class AutoSaveVisitorPicture {
                 }
                 else
                 {
-
+                    bMainServer2dot0 = true;
                 }
-
-                //bMainServer2dot0 = wallpadDeviceSet.GetNewDanjiServer();
                 LOG_INFO("[UploadVisitorPicture] bMainServer2dot0 [" + bMainServer2dot0 + "]");
                 wallpadDeviceSet.closeDB();
-            } catch (RuntimeException re) {
-                LogUtil.errorLogInfo("", TAG, re);
             } catch (Exception e) {
                 Log.e(TAG, "[Exception] UploadVisitorPicture()");
-                //e.printStackTrace();            
-                LogUtil.errorLogInfo("", TAG, e);
+                e.printStackTrace();
                 wallpadDeviceSet.closeDB();
             }
         }
@@ -142,7 +132,21 @@ public class AutoSaveVisitorPicture {
         public void run() {
             try {
                 mFTPManager = new HDCFTPManager();
-                if (!mFTPManager.connectFTP(strRemoteIP)) {
+                boolean isConnect;
+                if(danjiserverType == 1)
+                {
+                    isConnect = mFTPManager.connectFTP(strRemoteIP);
+                }
+                else if(danjiserverType == 2)
+                {
+                    isConnect = mFTPManager.connectFTP(strRemoteIP);
+                }
+                else
+                {
+                    isConnect = mFTPManager.connectFTP(define.NewDanjiServerIP);
+                }
+
+                if (!isConnect) {
                     Log.w(TAG, "[UploadVisitorPicture.run()] FAIL!! -> connectFTP(...)");
                     send_visitor_upload_complete_notice(false, mAutoPictureInfo.strDong, mAutoPictureInfo.strHo, mAutoPictureInfo.eCallType, strTime, strFileName, "null");
                     return;
@@ -188,12 +192,9 @@ public class AutoSaveVisitorPicture {
                 disconnectFTP();
                 LOG_INFO("[UploadVisitorPicture.run()] Complete upload!!!");
                 send_visitor_upload_complete_notice(true, mAutoPictureInfo.strDong, mAutoPictureInfo.strHo, mAutoPictureInfo.eCallType, strTime, strFileName, "null");
-            } catch (RuntimeException re) {
-                LogUtil.errorLogInfo("", TAG, re);
             } catch (Exception e) {
                 Log.e(TAG, "[Exception] UploadVisitorPicture.run()");
-                //e.printStackTrace();            
-                LogUtil.errorLogInfo("", TAG, e);
+                e.printStackTrace();
             }
         }
     }
@@ -208,13 +209,9 @@ public class AutoSaveVisitorPicture {
             }
             LOG_INFO("[disconnectFTP] disconnectFTP FAIL!!");
             return false;
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-            return false;
         } catch (Exception e) {
             Log.e(TAG, "[Exception] disconnectFTP()");
-            //e.printStackTrace();            
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
             return false;
         }
     }
@@ -222,7 +219,6 @@ public class AutoSaveVisitorPicture {
     static String strReply_User = "";
     static String strReply_PW = "";
     static String strReply_Path = "";
-    static String strPass_Key = "passwd";
 
     public static boolean send_visitor_access_info_request(String strDong, String strHo, String strType, String strTime, final String strFileName, String strMessage) {
         try {
@@ -235,7 +231,7 @@ public class AutoSaveVisitorPicture {
                         LOG_INFO("[send_visitor_access_info_request] ProcSuccess()");
                         visitor_access_info.SetItem("ftp_info");
                         strReply_User = visitor_access_info.GetAttributeVal(0, "user");
-                        strReply_PW = visitor_access_info.GetAttributeVal(0, strPass_Key);
+                        strReply_PW = visitor_access_info.GetAttributeVal(0, "passwd");
                         strReply_Path = visitor_access_info.GetAttributeVal(0, "path");
                         LOG("[send_visitor_access_info_request] Reply!! User [" + strReply_User + "], PW [" + strReply_PW + "], Path [" + strReply_Path + "]");
                         strUserID = strReply_User;
@@ -258,12 +254,9 @@ public class AutoSaveVisitorPicture {
                 });
                 return true;
             }
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {
             Log.e(TAG, "[Exception] send_visitor_access_info_request(String strDong, String strHo, String strType, String strTime, String strFileName, String strMessage)");
-            //e.printStackTrace();            
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
         return false;
     }
@@ -294,12 +287,9 @@ public class AutoSaveVisitorPicture {
                 });
                 return true;
             }
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {
             Log.e(TAG, "[Exception] send_visitor_upload_complete_notice(boolean bResult, String strDong, String strHo, String strType, String strTime, String strFileName, String strMessage)");
-            //e.printStackTrace();            
-            LogUtil.errorLogInfo("", TAG, e);
+            e.printStackTrace();
         }
         return false;
     }

+ 31 - 3
WallPadCall/src/main/java/kr/co/icontrols/callengine/engine/MissedCallVisitorPicture.java

@@ -4,6 +4,7 @@ import android.content.Context;
 import android.util.Log;
 
 import com.artncore.WallPadDataMgr.WallpadDeviceSet;
+import com.artncore.commons.define;
 import com.artncore.wallpadimap.RetProci;
 
 import org.apache.commons.net.ftp.FTP;
@@ -84,6 +85,7 @@ public class MissedCallVisitorPicture {
         String strUploadFile = "";
         String strFileName = "";
         String strTime = "";
+        int danjiserverType;
 
         public uploadVisitorPicture(String strTargetFile) {
             WallpadDeviceSet wallpadDeviceSet = new WallpadDeviceSet(mContext);
@@ -91,7 +93,21 @@ public class MissedCallVisitorPicture {
                 strUploadFile = strTargetFile;
                 strFileName = extractFileName(strTargetFile);
                 strTime = extractFileTime(strTargetFile);
-                bMainServer2dot0 = wallpadDeviceSet.GetNewDanjiServer();
+//                bMainServer2dot0 = wallpadDeviceSet.GetNewDanjiServer();
+                danjiserverType = wallpadDeviceSet.GetNewDanjiServer();
+                if(danjiserverType == 1)
+                {
+                    bMainServer2dot0 = false;
+                }
+                else if(danjiserverType == 2)
+                {
+                    bMainServer2dot0 = true;
+                }
+                else
+                {
+                    bMainServer2dot0 = true;
+                }
+
                 Log.d(TAG, "[uploadVisitorPicture] bMainServer2dot0 [" + bMainServer2dot0 + "]");
                 wallpadDeviceSet.closeDB();
                 Log.d(TAG, "[uploadVisitorPicture] strUploadFile [" + strUploadFile + "], strFileName [" + strFileName + "], strTime [" + strTime + "]");
@@ -104,9 +120,21 @@ public class MissedCallVisitorPicture {
         public void run() {
             try {
                 mFTPManager = new HDCFTPManager();
-
+                boolean isConnect;
+                if(danjiserverType == 1)
+                {
+                    isConnect = mFTPManager.connectFTP(strRemoteIP);
+                }
+                else if(danjiserverType == 2)
+                {
+                    isConnect = mFTPManager.connectFTP(strRemoteIP);
+                }
+                else
+                {
+                    isConnect = mFTPManager.connectFTP(define.NewDanjiServerIP);
+                }
                 if (!mFTPManager.isFTPConnected()) {
-                    if (!mFTPManager.connectFTP(strRemoteIP)) {
+                    if (!isConnect) {
                         Log.w(TAG, "[uploadVisitorPicture.run()] FAIL!! -> connectFTP(...)");
                         send_visitor_upload_complete_notice(false, mAutoPictureInfo.strDong, mAutoPictureInfo.strHo, mAutoPictureInfo.eCallType, strTime, strFileName, "null");
                         return;

+ 1 - 1
WallPadCall/src/main/java/kr/co/icontrols/wallpadcall/MainActivity.java

@@ -345,7 +345,7 @@ public class MainActivity extends WpadActivity {
         try {
             Log.i(TAG, "=============== [START - MainActivity] ===============");
 
-            Intent sipServiceLauncher = new Intent ("kr.co.icontrols.callengine.sip.CeresSIPService.StartService");
+            Intent sipServiceLauncher = new Intent ("kr.co.icontrols.callengine.sip.CeresSIPService.StartSerkr.co.icontrols.callengine.sip.CeresSIPService.vice");
             getApplicationContext().startService(sipServiceLauncher);
 
             if(mCMIF == null){

+ 16 - 19
WallPadMain/src/main/java/kr/co/icontrols/wallpadmain/MainActivity.java

@@ -4499,14 +4499,14 @@ public class MainActivity extends WpadActivity {
 		}
 	}
 
-	class runCallServices extends Thread {
-		public runCallServices() {
-			super();
-		}
-		
-		public void run() {
-			try {
-			    if (Version.getPlatformType() == Version.PLATFORM_TYPE.A40i) {
+    class runCallServices extends Thread {
+        public runCallServices() {
+            super();
+        }
+
+        public void run() {
+            try {
+                if (Version.getPlatformType() == Version.PLATFORM_TYPE.A40i) {
                     if (getIsSubWallpad()) {
                         Log.w(TAG, "[runCallServices.run()] ############### This wallpad is set as a sub-wallpad ###############");
                         Intent SubWallpadServiceLauncher = new Intent ("kr.co.icontrols.callengine.subwallpad.SubWallPadSerialManager.StartService");
@@ -4527,14 +4527,14 @@ public class MainActivity extends WpadActivity {
                         }
                     }
                 }
-			    else {
+                else {
                     int nModelType = Version.getModelType();
-			        if (nModelType == MODEL_TYPE.IHN_750) {
+                    if (nModelType == MODEL_TYPE.IHN_750) {
                         // SIP 서비스만 실행
                         Intent sipServiceLauncher = new Intent ("kr.co.icontrols.callengine.sip.CeresSIPService.StartService");
                         getApplicationContext().startService(sipServiceLauncher);
                     }
-			        else {
+                    else {
                         // SIP/PSTN/Subphone 서비스 실행
                         Intent sipServiceLauncher = new Intent ("kr.co.icontrols.callengine.sip.CeresSIPService.StartService");
                         getApplicationContext().startService(sipServiceLauncher);
@@ -4546,15 +4546,12 @@ public class MainActivity extends WpadActivity {
                         getApplicationContext().startService(SubPhoneServiceLauncher);
                     }
                 }
-			} catch (RuntimeException re) {
-                LogUtil.errorLogInfo("", TAG, re);
+            } catch(Exception e) {
+                Log.e(TAG, "[Exception] runCallServices().run()");
+                e.printStackTrace();
             }
-            catch (Exception e) {
-				Log.e(TAG, "[Exception] runCallServices().run()");
-                LogUtil.errorLogInfo("", TAG, e);
-			}
-		}
-	}
+        }
+    }
 
     // 방문객원격통화 솔루션 사용여부 판별
     private boolean GetRemoteCallUseInfo() {

+ 18 - 1
WallPadMain/src/main/java/kr/co/icontrols/wallpadmain/util/WallPadiMAPUpgrade.java

@@ -32,6 +32,7 @@ import android.os.Message;
 import android.os.StatFs;
 import android.util.Log;
 
+import com.artncore.WallPadDataMgr.WallpadDeviceSet;
 import com.artncore.WallPadDataMgr.WallpadStatusData;
 import com.artncore.WallPadDataMgr.wallpaddbmgr.AddressSet;
 import com.artncore.commons.APIErrorCode;
@@ -941,6 +942,7 @@ public class WallPadiMAPUpgrade {
 		FTPClient f;
 		//ftp_FileDownloadWatcher WatchThread;
 		String localFile;
+		int danjiserverType;
 		boolean CompleteFlag = true; //event_notify 계속보내는 버그로 인하여 추가함
 		
 		public ftp_FileDownload(Handler handle, String path, int idx, String LocalFileName) {
@@ -949,6 +951,11 @@ public class WallPadiMAPUpgrade {
 			this.handle = handle;
 			//WatchThread = wat;
 			localFile = LocalFileName;
+
+			WallpadDeviceSet wallpadDeviceSet = new WallpadDeviceSet(ThisCtx);
+			danjiserverType = wallpadDeviceSet.GetNewDanjiServer();
+			wallpadDeviceSet.closeDB();
+
 		}
 		
 		public void run() {
@@ -974,7 +981,17 @@ public class WallPadiMAPUpgrade {
 				WallpadStatusData Wsdata =  new WallpadStatusData(ThisCtx);
 				FTPServer = Wsdata.GetFTPIP();
 				Wsdata.closeDB();
-				f.connect(FTPServer);
+
+				//여기서 ip정보를 변경해야 함
+				if(danjiserverType == 1 || danjiserverType == 2)
+				{
+					f.connect(FTPServer);
+				}
+				else
+				{
+					f.connect(define.NewDanjiServerIP);
+				}
+
 				boolean ret = false;
 				for(int i =0; i< 1; i++)
 					ret = f.login(id, passwd);

+ 588 - 39
WallPadMain/src/main/java/kr/co/icontrols/wallpadmain/util/iMapServer.java

@@ -135,6 +135,8 @@ public class iMapServer extends Service {
 
 	static final int EVENTTIMELIMITE = 2000;
 	iMapSverSocket SvrSock;
+    iMapSverSocket_Mix danji_mix = null;
+
 	int port =10000;
 	String StrAddr ="";
 	String IPaddr;
@@ -203,7 +205,9 @@ public class iMapServer extends Service {
 	}
 
 	/** 신형 단지서버 사용 유무*/
-	private boolean mNewDanjiServer = false;
+	//private boolean mNewDanjiServer = false;
+    /** 단지서버 타입 1=1.0, 2 = 2.0, 0 = mix*/
+	private int danjiserverType = 1;
 
     /**
      * JEFF, 2019.12.31
@@ -1862,6 +1866,7 @@ public class iMapServer extends Service {
 
         HDCFTPManager mFTPManager;
         boolean bMainServer2dot0 = false;
+        int danjiserverType;
         String strRemoteIP = "10.0.1.1";
         String strDong = "", strHo = "", strType = "", strTime = "", strFileName = "", strUploadFile = "";
 
@@ -1875,7 +1880,7 @@ public class iMapServer extends Service {
                 strFileName = filename;
                 strUploadFile = uploadfile;
 //                bMainServer2dot0 = wallpadDeviceSet.GetNewDanjiServer();
-                int danjiserverType = wallpadDeviceSet.GetNewDanjiServer();
+                danjiserverType = wallpadDeviceSet.GetNewDanjiServer();
                 if(danjiserverType == 1)
                 {
                     bMainServer2dot0 = false;
@@ -1909,7 +1914,22 @@ public class iMapServer extends Service {
                 mFTPManager = new HDCFTPManager();
 
                 if (!mFTPManager.isFTPConnected()) {
-                    if (!mFTPManager.connectFTP(strRemoteIP)) {
+
+                    boolean connect = false;
+                    if(danjiserverType == 1)
+                    {
+                        connect = mFTPManager.connectFTP(strRemoteIP);
+                    }
+                    else if(danjiserverType == 2)
+                    {
+                        connect = mFTPManager.connectFTP(strRemoteIP);
+                    }
+                    else
+                    {
+                        connect = mFTPManager.connectFTP(define.NewDanjiServerIP);
+                    }
+
+                    if (!connect) {
                         Log.w(TAG, "[uploadVisitorPicture.run()] FAIL!! -> connectFTP(...)");
                         send_visitor_upload_complete_notice(false, strDong, strHo, strType, strTime, strFileName, "null");
                         return;
@@ -2928,30 +2948,18 @@ public class iMapServer extends Service {
             try {
                 WallpadDeviceSet wallpadDeviceSet = new WallpadDeviceSet(getApplicationContext());
 //                mNewDanjiServer =  wallpadDeviceSet.GetNewDanjiServer();
-                int danjiserverType = wallpadDeviceSet.GetNewDanjiServer();
-                if(danjiserverType == 1)
-                {
-                    mNewDanjiServer = false;
-                }
-                else if(danjiserverType == 2)
-                {
-                    mNewDanjiServer = true;
-                }
-                else
-                {
-                    mNewDanjiServer = true;
-                }
+                danjiserverType = wallpadDeviceSet.GetNewDanjiServer();
 
                 wallpadDeviceSet.closeDB();
             } catch (RuntimeException re) {
                 LogUtil.errorLogInfo("", TAG, re);
-                mNewDanjiServer = false;
+                danjiserverType = 1;
             }
             catch (Exception e) {
                 Log.e(TAG, "[iMapSverSocket] - GetNewDanjiServer ExceptionError !!!");
                 //e.printStackTrace();
                 LogUtil.errorLogInfo("", TAG, e);
-                mNewDanjiServer = false;
+                danjiserverType = 1;
             }
 
 
@@ -2960,10 +2968,20 @@ public class iMapServer extends Service {
             /////////////////////////////////////////////////////////////////////
             // 신형 단지서버 사용유무에 따라 서버소켓을 생성한다.
             /////////////////////////////////////////////////////////////////////
-            if(!mNewDanjiServer)
+            if(danjiserverType == 1)
             {
                 svr = new ServerSocket(port);
             }
+            else if(danjiserverType == 2)
+            {
+                int svrport = port + 1000;
+                Log.i(TAG, "============================================");
+                Log.i(TAG, "Use SSL Server Start !!! (port:" + svrport + ")");
+                Log.i(TAG, "============================================");
+
+                SSLServer sslServerSocket = new SSLServer(svrport, getResources().openRawResource(R.raw.wallpad_key), "icontrolswallpad1845!");
+                sslsvr = sslServerSocket.getServerSocket();
+            }
             else
             {
                 int svrport = port + 1000;
@@ -2973,6 +2991,9 @@ public class iMapServer extends Service {
 
                 SSLServer sslServerSocket = new SSLServer(svrport, getResources().openRawResource(R.raw.wallpad_key), "icontrolswallpad1845!");
                 sslsvr = sslServerSocket.getServerSocket();
+
+                danji_mix =new iMapSverSocket_Mix();
+                danji_mix.start();
             }
         }
         public void run()
@@ -2984,7 +3005,7 @@ public class iMapServer extends Service {
                     /////////////////////////////////////////////////////////////////////
                     // 신형 단지서버 사용유무에 각각의 socket 에서 accept 를 한다.
                     /////////////////////////////////////////////////////////////////////
-                    if(!mNewDanjiServer)
+                    if(danjiserverType == 1)
                     {
                         sock = svr.accept();
                     }
@@ -3019,6 +3040,90 @@ public class iMapServer extends Service {
                     sslsvr.close();
                     sslsvr = null;
                 }
+            }
+            catch (RuntimeException re) {
+                LogUtil.errorLogInfo("", TAG, re);
+            }
+            catch (Exception e)
+            {
+                //e.printStackTrace();
+                LogUtil.errorLogInfo("", TAG, e);
+            }
+
+        }
+    }
+
+
+    // 메인 서버 소켓 클래스
+
+    /**
+     * 무조건 Mix일 경우만 사용
+     */
+    public class iMapSverSocket_Mix extends Thread
+    {
+        ServerSocket svr;
+        boolean receiveSocketRun = true;
+
+        public iMapSverSocket_Mix() throws IOException
+        {
+            /////////////////////////////////////////////////////////////////////
+            // 신형 단지서버 사용 유무를 가져온다.
+            /////////////////////////////////////////////////////////////////////
+            try {
+                WallpadDeviceSet wallpadDeviceSet = new WallpadDeviceSet(getApplicationContext());
+//                mNewDanjiServer =  wallpadDeviceSet.GetNewDanjiServer();
+                danjiserverType = wallpadDeviceSet.GetNewDanjiServer();
+
+                wallpadDeviceSet.closeDB();
+            } catch (RuntimeException re) {
+                LogUtil.errorLogInfo("", TAG, re);
+            }
+            catch (Exception e) {
+                Log.e(TAG, "[iMapSverSocket] - GetNewDanjiServer ExceptionError !!!");
+                //e.printStackTrace();
+                LogUtil.errorLogInfo("", TAG, e);
+            }
+
+            //////////////////////////////////////////////////
+
+            /////////////////////////////////////////////////////////////////////
+            // 신형 단지서버 사용유무에 따라 서버소켓을 생성한다.
+            /////////////////////////////////////////////////////////////////////
+            if(danjiserverType == 0)
+            {
+                svr = new ServerSocket(port);
+            }
+        }
+        public void run()
+        {
+            while(receiveSocketRun)
+            {
+                try {
+                    Socket sock = null;
+                    /////////////////////////////////////////////////////////////////////
+                    // 신형 단지서버 사용유무에 각각의 socket 에서 accept 를 한다.
+                    /////////////////////////////////////////////////////////////////////
+                    sock = svr.accept();
+                    iMapSverSocketThread_Mix ProciMap = new iMapSverSocketThread_Mix(sock);
+                    ProciMap.start();
+                } catch (IOException e) {
+
+                    //e.printStackTrace();
+                    LogUtil.errorLogInfo("", TAG, e);
+                }
+            }
+        }
+
+        public void destoryThread()
+        {
+            receiveSocketRun = false;
+            try
+            {
+                if( svr != null )
+                {
+                    svr.close();
+                    svr = null;
+                }
 
             }
             catch (RuntimeException re) {
@@ -3061,7 +3166,7 @@ public class iMapServer extends Service {
                 //           사용중일 경우 ready 를 사용하지 않는 수신부로 수행한다.
                 //           (사유:암호화를 사용할 경우 ready 최초 동작되지않음)
                 /////////////////////////////////////////////////////////////////////
-                if (!mNewDanjiServer) {
+                if (danjiserverType == 1) {
                     while (System.currentTimeMillis() < lSocketConnectionPeriod) {
                         try {
                             if (MsgReader.ready()) {
@@ -3509,6 +3614,445 @@ public class iMapServer extends Service {
 		}
 	}
 
+
+    public class iMapSverSocketThread_Mix extends Thread {
+        private final Socket iMAPSock;
+        String               strRcvMSG;
+        WallPadiMAPUpgrade   upgradeProc;
+        Document             doc;
+
+        public iMapSverSocketThread_Mix(Socket sock) {
+            iMAPSock = sock;
+        }
+
+        public void run() {
+            try {
+                Log.i(TAG, "[iMAPSvrProc().run()] Received something!!");
+                InputStream InStm = iMAPSock.getInputStream();
+                iMAPSock.setSoLinger(true, 3000);
+                BufferedReader MsgReader = new BufferedReader(new InputStreamReader(InStm, "euc-kr"));
+                strRcvMSG = "";
+                String InBuffer;
+                int i = 0;
+                boolean bRcvOK = false;
+                lSocketConnectionPeriod = System.currentTimeMillis() + TIMEOUT_iMAP_WAIT;   // 타임아웃시간을 설정한다.
+
+                /////////////////////////////////////////////////////////////////////
+                // 신형단지서버 미사용중일 경우 기존 코드로,
+                //           사용중일 경우 ready 를 사용하지 않는 수신부로 수행한다.
+                //           (사유:암호화를 사용할 경우 ready 최초 동작되지않음)
+                /////////////////////////////////////////////////////////////////////
+                while (System.currentTimeMillis() < lSocketConnectionPeriod) {
+                    try {
+                        if (MsgReader.ready()) {
+                            try {
+                                char[] ReadData = new char[SOCKET_BUFFER_SIZE_READ * 1024];
+                                InBuffer = "";
+                                while (MsgReader.ready()) {
+                                    long charCnt = MsgReader.read(ReadData);
+                                    InBuffer += new String(ReadData, 0, (int)charCnt);
+                                }
+
+                                if (InBuffer != null) strRcvMSG += InBuffer;
+
+                                if (0 < InBuffer.indexOf("</imap>")) {
+                                    bRcvOK = true;
+                                    Log.i(TAG, "[iMAPSvrProc().run()] Received DONE!!");
+                                    break;
+                                }
+                            } catch (RuntimeException re) {
+                                LogUtil.errorLogInfo("", TAG, re);
+                                return;
+                            }
+                            catch (Exception e) {
+                                Log.e(TAG, "[Exception] iMAPSvrProc.run() ===== 1 =====");
+                                //e.printStackTrace();
+                                LogUtil.errorLogInfo("", TAG, e);
+                                return;
+                            }
+                        }
+                        else {
+                            Thread.sleep(100);
+                        }
+                    } catch (RuntimeException re) {
+                        LogUtil.errorLogInfo("", TAG, re);
+                        iMAPSock.close();
+                        return;
+                    }
+                    catch (Exception e) {
+                        Log.e(TAG, "[Exception] iMAPSvrProc.run() ===== 2 =====");
+                        iMAPSock.close();
+                        //e.printStackTrace();
+                        LogUtil.errorLogInfo("", TAG, e);
+                        return;
+                    }
+                }
+
+                if (!bRcvOK) {
+                    Log.i(TAG, "[iMAPSvrProc().run()] iMAP message is unacceptable!!");
+                    Log.i(TAG, "[iMAPSvrProc().run()] ========== START ==========");
+                    Log.i(TAG, strRcvMSG);
+                    Log.i(TAG, "[iMAPSvrProc().run()] ========== END ==========");
+                    iMAPSock.close();
+                    return;
+                }
+
+                strRcvMSG = strRcvMSG.substring(strRcvMSG.indexOf("<"));
+                imapsvrlog( "Socket read end accept </imap>\n"+strRcvMSG);
+                DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+                DocumentBuilder builder = factory.newDocumentBuilder();
+                InputStream istream = new ByteArrayInputStream(strRcvMSG.getBytes());
+                doc = builder.parse(istream);
+                Element elelist = doc.getDocumentElement();
+                NodeList items = elelist.getElementsByTagName("service");
+                Node item = items.item(0);
+                NamedNodeMap attrs = item.getAttributes();
+                String retXML="";
+                for (int j=0; j< attrs.getLength(); j++) {
+                    Node attr = attrs.item(j);
+                    String cmd;
+                    if (attr.getNodeName().equalsIgnoreCase("type")) {
+                        cmd = attr.getNodeValue();
+
+                        if (cmd.equalsIgnoreCase("notice")) {
+                            iMAPSock.close();
+                        }
+                    }
+                    else if (attr.getNodeName().equalsIgnoreCase("name")) {
+                        cmd = attr.getNodeValue();
+
+                        if (cmd.equalsIgnoreCase("event_notify")) {
+                            retXML = ProcEventNotify(elelist);
+                        }
+                        else if (cmd.equalsIgnoreCase("elevator_move_info")) {
+                            ProcElevatorinfo(elelist);
+                            retXML = null;
+                        }
+                        else if (cmd.equalsIgnoreCase("check_epics_upload")) {
+                            retXML = ProcCheckEpiceUpload(doc);
+                        }
+                        else if (cmd.equalsIgnoreCase("update_news")) {
+                            retXML = ProcUpdateNews(doc);
+                        }
+                        else if (cmd.equalsIgnoreCase("update_weather")) {
+                            retXML = ProcUpdateWeather(doc);
+                        }
+                        else if (cmd.equalsIgnoreCase("schedule_inquiry")) {
+                            retXML = ProcSchduleInquiry(doc);
+                        }
+                        else if (cmd.equalsIgnoreCase("schedule_renew")) {
+                            retXML = ProcSchduleRenew(doc);
+                        }
+                        else if (cmd.equalsIgnoreCase("schdule")) {
+                            String SvcType="";
+                            int k;
+                            for (k = j + 1; k < attrs.getLength(); k++) {
+                                Node attr1 = attrs.item(k);
+                                SvcType = attr1.getNodeName();
+                                if (SvcType.equalsIgnoreCase("shc_type")) {
+                                    SvcType = attr1.getNodeValue();
+                                    break;
+                                }
+                            }
+                            retXML = ProcUpdateSchedule(elelist,SvcType);
+                        }
+                        else if (cmd.equalsIgnoreCase("device_reset")) {
+                            retXML = ProcDeviceReset(elelist);
+                        }
+                        else if (cmd.equalsIgnoreCase("notify_parcel_event")) {
+                            retXML = ProcNotifyparcel(doc);
+                        }
+                        else if (cmd.equalsIgnoreCase("notify_post_info")) {
+                            // 스마트우편함 연동 여부
+                            WallpadDeviceSet DevSet = new WallpadDeviceSet(getApplicationContext());
+                            boolean bSmartPostUsage = DevSet.Get_SmartPostUse();
+                            DevSet.closeDB();
+                            Log.d(TAG, "[iMapSverSocketThread.run()] bSmartPostUsage [" + bSmartPostUsage + "]");
+                            if (bSmartPostUsage) retXML = ProcNotiPostInfo(doc); // 스마트우편함
+                        }
+                        else if (cmd.equalsIgnoreCase("get_security_mode")) {
+                            String Dong = null;
+                            String Ho = null;
+
+                            WallpadStatusData statusDB = new WallpadStatusData(getApplicationContext());
+                            String result;
+                            String modeStr = null;
+                            int status = statusDB.GetAlarmStatus();
+                            if ((status == WallpadStatusData.ALARM_NONE) || (status == WallpadStatusData.GUARD_IN) || (status == WallpadStatusData.GUARD_OUT) || (status == WallpadStatusData.GUARD_OUT_WAIT)) {
+                                if (status == WallpadStatusData.ALARM_NONE) modeStr = "normal";
+                                else if (status == WallpadStatusData.GUARD_IN) modeStr = "occupied";
+                                else if (status == WallpadStatusData.GUARD_OUT) modeStr = "unoccupied";
+                                else if (status == WallpadStatusData.GUARD_OUT_WAIT) modeStr = "waitunoccupied";
+
+                                result = "ok";
+                            }
+                            else {
+                                modeStr = "null";
+                                result = "fail";
+                            }
+
+                            try {
+                                NodeList GSM_items = elelist.getElementsByTagName("home_info");
+                                Node GSM_item = GSM_items.item(0);
+                                NamedNodeMap GSM_attrsParam = GSM_item.getAttributes();
+
+                                for (int k = 0; k < GSM_attrsParam.getLength(); k++) {
+                                    Node GSM_attr = GSM_attrsParam.item(k);
+                                    if (GSM_attr.getNodeName().equalsIgnoreCase("dong")) Dong = trimquotation(GSM_attr.getNodeValue());
+                                    else if (GSM_attr.getNodeName().equalsIgnoreCase("ho")) Ho = trimquotation(GSM_attr.getNodeValue());
+                                }
+
+                                WallpadStatusData DBMGR = null;
+                                DBMGR = new WallpadStatusData(getApplicationContext());
+                                AddressSet addc =  DBMGR.getAddressMGR(); //DB에서 동호 정보 받아옴
+                                DBMGR.closeDB();
+
+                                if ((Dong.equalsIgnoreCase(addc.Dong) == false) || (Ho.equalsIgnoreCase(addc.Ho) == false)) {
+                                    result = "fail";
+                                }
+                            } catch (RuntimeException re) {
+                                LogUtil.errorLogInfo("", TAG, re);
+                                result = "fail";
+                            }
+                            catch (Exception e) {
+                                result = "fail";
+                            }
+
+                            retXML = XMLHeader +
+                                    "   <service type=\"reply\" name=\"get_security_mode\" result=\""+result+"\">\r\n"+
+                                    "      <home_info dong=\""+AddrDong+"\" ho=\""+AddrHo+"\" mode=\""+modeStr+"\"/>\r\n"+
+                                    "   </service>\r\n"+
+                                    "</imap>\r\n";
+
+                            statusDB.closeDB();
+                        }
+                        else if (cmd.equalsIgnoreCase("set_setup_info")) {
+                            retXML = ProcSetsetup(doc);
+                        }
+                        else if (cmd.equalsIgnoreCase("get_setup_info")) {
+                            retXML = ProcGetsetup(doc);
+                        }
+                        else if (cmd.equalsIgnoreCase("check_lobby_passwd")) {
+                            retXML = CheckPassword(doc);
+                        }
+                        else if (cmd.equalsIgnoreCase("device_live_check")) {
+                            retXML = ProcDeviceLiveCheck();
+                        }
+                        else if (cmd.equalsIgnoreCase("pairing_hdev_sync_alarm")) {
+                            retXML = ProcPairingHdevSyncAlarm(elelist);
+                        }
+                        else if (cmd.equalsIgnoreCase("pairing_hdev_sync_security")) {
+                            retXML = ProcPairingHdevSyncSecurity(elelist);
+                        }
+                        else if (cmd.equalsIgnoreCase("notify_car_event")) {
+                            retXML = ProcParkInformation(elelist);
+                        }
+                        else if (cmd.equalsIgnoreCase("notify_smartkey_event")) {
+                            retXML = ProcSmartKeyEvent(elelist);
+                        }
+                        else if (cmd.equalsIgnoreCase("notify_parkinfo_cham_upis")) {
+                            retXML = ProcParkInformation_cham_upis(elelist);
+                        }
+                        else if (cmd.equalsIgnoreCase("remote_auscultate")) {
+                            retXML = ProcauscultateReq(doc);
+                        }
+                        else if (cmd.equalsIgnoreCase("upgrade")) {
+                            imapsvrlog( "Enter Upgrade");
+                            procUpgrade();
+                            retXML = null;
+                        }
+                        else if (cmd.equals("check_sip_activation")) {
+                            String sip_result = "fail";
+                            ActivityManager manager = (ActivityManager)getSystemService(ACTIVITY_SERVICE);
+                            List<ActivityManager.RunningServiceInfo> rsi = manager.getRunningServices(50);
+
+                            // Jeff added below codes for call app (2018.01.25)
+                            String strSIPPackageName = "kr.co.icontrols.callengine.sip.CeresSIPService";
+
+                            for (int k = 0; k < rsi.size(); k++) {
+                                ActivityManager.RunningServiceInfo rsInfo = rsi.get(k);
+                                if (rsInfo.service.getClassName().equals(strSIPPackageName)) {
+                                    sip_result = "ok";
+                                    break;
+                                }
+                            }
+                            retXML = XMLHeader + "<service type=\"reply\" name=\"check_sip_activation\" result=\"" + sip_result + "\">\r\n    <message>\"null\"</message>\r\n</service>\r\n</imap>\r\n";
+                        }
+                        else if (cmd.equalsIgnoreCase("remote_get_home_devices")) {
+                            retXML = iCMDProcDevList(doc);
+                        }
+                        else if (cmd.equalsIgnoreCase("remote_access_gas")) {
+                            retXML = iCMDProcGASControl(elelist);
+                        }
+                        else if (cmd.equalsIgnoreCase("remote_access_smartlight")) {
+                            retXML = iCMDProcSDPSmartLightControl(doc);
+                        }
+                        else if (cmd.equalsIgnoreCase("remote_access_livinglight")) {
+                            if (ModelType == MODEL_TYPE.IHN_1020GL) {
+                                retXML = iCMDProc_I_LightControl(doc);
+                            }
+                            else {
+                                retXML = iCMDProcLivingLightControl(doc);
+                            }
+                        }
+                        else if (cmd.equalsIgnoreCase("remote_access_electric")) {
+                            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) {
+                                retXML = iCMDProcSDPConcentControl(doc);
+                            }
+                            else if (ModelType == MODEL_TYPE.IHN_1020GL) {
+                                retXML = iCMDProcEnergyMeterConcentControl(doc);
+                            }
+                            else {
+                                retXML = iCMDProcMultiSWControl(doc);
+                            }
+                        }
+                        else if (cmd.equalsIgnoreCase("remote_access_doorlock")) {
+                            retXML = iCMDProcDoorlockControl(doc);
+                        }
+                        else if (cmd.equalsIgnoreCase("remote_access_temper")) {
+                            retXML = iCMDProcTemperControl(doc);
+                        }
+                        else if (cmd.equalsIgnoreCase("remote_access_mode")) {
+                            retXML = iCMDProcModeControl(doc);
+                        }
+                        else if (cmd.equalsIgnoreCase("remote_access_ventil")) {
+                            retXML = iCMDProcVentilControl(doc);
+                        }
+                        else if (cmd.equalsIgnoreCase("remote_access_curtain")) {
+                            retXML = iCMDProcCurtainControl(doc);
+                        }
+                        else if (cmd.equalsIgnoreCase("remote_access_light")) {
+                            if (ModelType == Version.MODEL_TYPE.IHN_1020GL) {
+                                retXML = iCMDProcEnergyMeterLightControl(doc);
+                            }
+                            else {
+                                retXML = iCMDProcLightControl(doc);
+                            }
+                        }
+                        else if (cmd.equalsIgnoreCase("remote_access_light_batch_control")) {
+                            retXML = iCMDProcLightBatchControl(elelist);
+                        }
+                        //모바일 사용자 인증 관련 메시지
+                        else if (cmd.equalsIgnoreCase("remote_register_new_device_auth_number")) {
+                            ProcMobileDevice_AuthNumber(elelist);
+                        }
+                        else if (cmd.equalsIgnoreCase("remote_register_new_device")) {
+                            retXML = ProcMobileDevice_ADD_Finish(elelist);
+                        }
+                        else if (cmd.equalsIgnoreCase("remote_delete_device")) {
+                            ProcMobileDevice_Delete(elelist);
+                        }
+                        else if (cmd.equalsIgnoreCase("get_accesskey_info")) {
+                            retXML = ProcGetSmartKeyInfo(elelist);
+                        }
+                        else if (cmd.equalsIgnoreCase("get_app_version_info")) {
+                            retXML = ProcGetAppVersionInfo();
+                        }
+                        else if (cmd.equalsIgnoreCase("igate_init_info")) {
+                            retXML = ProcIgateInitInfo(elelist);
+                        }
+                        else if (cmd.equalsIgnoreCase("elec_car_charge_event")) {
+                            retXML = ProcElecCarChargeEventInfo(elelist);
+                        }
+                        else if (cmd.equalsIgnoreCase("energy_target_info_alarm")) {
+                            retXML = ProcEnergyTargetInfoAlarm(elelist);
+                        }
+                        else if (cmd.equalsIgnoreCase("check_call_option")) {
+                            retXML = ProcCheckCallOption();
+                        }
+                        else if (cmd.equalsIgnoreCase("chat_sequence")) {
+                            retXML = ProcChatSequence(elelist);
+                        }
+                        else if (cmd.equalsIgnoreCase("chat_message")) {
+                            retXML = ProcChatMessage(elelist);
+                        }
+                        else if (cmd.equalsIgnoreCase("evacuation_ladder_open")) {
+                            retXML = ProcEvacuationLadderOpen(elelist);
+                        }
+                        else if (cmd.equalsIgnoreCase("smart_light_info")) {
+                            retXML = SmartLightDetailInfo(elelist);
+                        }
+                        else if (cmd.equalsIgnoreCase("get_knx_device_info")) {
+                            retXML = KNXDeviceDetailInfo(elelist);
+                        }
+                        else if( cmd.equalsIgnoreCase("set_server_version")) {
+                            retXML = ProcSetServerChange(elelist);
+                        }
+                        else if( cmd.equalsIgnoreCase("remote_access_onepass")) {
+                            retXML = iCMDProcOnePass(elelist);
+                        }
+                        else if( cmd.equalsIgnoreCase("remote_entire_access_light_control")) {
+                            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) {
+                                retXML = iCMDProcEntireLightControl(doc); // 전체 조명 제어
+                            }
+                        }
+                        break;
+                    }
+                }
+
+                if (retXML != null) {
+                    imapsvrlog( "Socket write line\n"+retXML+"\r\n SO :"+iMAPSock.getSoLinger());
+                    DataOutputStream outstream = new DataOutputStream(iMAPSock.getOutputStream());
+                    byte[] outBF = retXML.getBytes("euc-kr");
+                    outstream.write(outBF);
+                    outstream.flush();
+
+                    try { Thread.sleep(3000);}
+                    catch (RuntimeException re) {
+                        LogUtil.errorLogInfo("", TAG, re);
+                    }
+                    catch (Exception e){
+                        LogUtil.errorLogInfo("", TAG, e);
+                    }
+                    iMAPSock.close();
+                }
+                else {
+                    try {iMAPSock.close();}
+                    catch (RuntimeException re) {
+                        LogUtil.errorLogInfo("", TAG, re);
+                    }
+                    catch (Exception e){
+                        LogUtil.errorLogInfo("", TAG, e);
+                    }
+                }
+            }
+            catch (RuntimeException re) {
+                LogUtil.errorLogInfo("", TAG, re);
+            }
+            catch (Exception e) {
+                try {iMAPSock.close();}
+                catch (RuntimeException re) {
+                    LogUtil.errorLogInfo("", TAG, re);
+                }
+                catch (Exception E){
+                    LogUtil.errorLogInfo("", TAG, E);
+                }
+                LogUtil.errorLogInfo("", TAG, e);
+            }
+        }
+
+        // Upgrade 설정 상태를 확인 하여 Upgrade 진입 여부 결정
+        private void procUpgrade() {
+            imapsvrlog( "upgrade Start \n"+"         "+WallPadiMAPUpgrade.active);
+            WallpadStatusData sdb = new WallpadStatusData(getApplicationContext());
+            String[] getstate = sdb.GetSystemUpdateStatus();
+            sdb.closeDB();
+
+            Log.i(TAG, "WallPadiMAPUpgrade.active [" + WallPadiMAPUpgrade.active + "]");
+            for (int i = 0; i < getstate.length; i++) {
+                Log.i(TAG, "getstate[" + i + "] = " + getstate[i]);
+            }
+
+            if (WallPadiMAPUpgrade.active == true || getstate[0].equalsIgnoreCase("SET")) return;
+
+            upgradeProc = new WallPadiMAPUpgrade(getApplicationContext(), doc, iMAPSock);
+
+            if (WallPadiMAPUpgrade.active == true) upgradeProc.StartUpgrade();
+        }
+    }
+
 	// " 제거
 	private String trimquotation(String sen) {
 		sen = sen.replaceAll("\"", "");
@@ -11275,38 +11819,27 @@ public class iMapServer extends Service {
             try {
                 WallpadDeviceSet wallpadDeviceSet = new WallpadDeviceSet(getApplicationContext());
                // mNewDanjiServer =  wallpadDeviceSet.GetNewDanjiServer();
-                int danjiserverType = wallpadDeviceSet.GetNewDanjiServer();
-                if(danjiserverType == 1)
-                {
-                    mNewDanjiServer = false;
-                }
-                else if(danjiserverType == 2)
-                {
-                    mNewDanjiServer = true;
-                }
-                else
-                {
-                    mNewDanjiServer = true;
-                }
+                danjiserverType = wallpadDeviceSet.GetNewDanjiServer();
+
 
                 wallpadDeviceSet.closeDB();
             } catch (RuntimeException re) {
                 LogUtil.errorLogInfo("", TAG, re);
-                mNewDanjiServer = false;
+                danjiserverType = 1;
             }
             catch (Exception e) {
                 Log.e(TAG, "[iMapSverSocket] - GetNewDanjiServer ExceptionError !!!");
                 //e.printStackTrace();
                 LogUtil.errorLogInfo("", TAG, e);
-                mNewDanjiServer = false;
+                danjiserverType = 1;
             }
 
-            Log.d(TAG, " iMapSverReload - mNewDanjiServer :" + mNewDanjiServer );
+            Log.d(TAG, " iMapSverReload - mNewDanjiServer :" + danjiserverType );
 
             // 단지서버2.0은 로컬 단지과리서버 하나로 운영이 됨
             // 신형 단지서버로 설정이 되어 있으면 관리PC IP를 10.0.1.1로 변경 해주어야 함
             // 관리 PC IP도 변경하도록 한다.
-            if (mNewDanjiServer == true) {
+            if (danjiserverType != 0) {
                 WallpadStatusData wallpadStatusData = new WallpadStatusData(getApplicationContext());
                 wallpadStatusData.SetManagePC(Common.DEFAULT_SERVER_IP, Common.DEFAULT_SERVER_PORT);
                 wallpadStatusData.closeDB();
@@ -11316,7 +11849,7 @@ public class iMapServer extends Service {
                 wallpadStatusData.SetManagePC(Common.DEFAULT_MANAGER_PC_IP, Common.DEFAULT_MANAGER_PC_PORT);
                 wallpadStatusData.closeDB();
             }
-            Log.d(TAG, "$$$$$$$$$$$$$$ mNewDanjiServer : " + mNewDanjiServer);
+            Log.d(TAG, "$$$$$$$$$$$$$$ mNewDanjiServer : " + danjiserverType);
         }
 
         public void run() {
@@ -11329,6 +11862,11 @@ public class iMapServer extends Service {
                     LogUtil.errorLogInfo("", TAG, e); 
                 }
 
+                if(danji_mix!=null)
+                {
+                    danji_mix.destoryThread();
+                }
+
                 SvrSock.destoryThread();
 
 
@@ -11343,6 +11881,16 @@ public class iMapServer extends Service {
                     {
                         Log.d(TAG, " is Live Socket Reload i = : " + i );
                     }
+
+                    if(danji_mix!=null)
+                    {
+                        if( danji_mix.isAlive() == false )
+                        {
+                            Log.d(TAG, " Mix Receive Socket Reload i = : " + i );
+                            break;
+                        }
+                    }
+
                     try{ Thread.sleep(100);	}
                     catch (RuntimeException re) {
                         LogUtil.errorLogInfo("", TAG, re);
@@ -11351,6 +11899,7 @@ public class iMapServer extends Service {
                         LogUtil.errorLogInfo("", TAG, e); 
                     }
                 }
+
                 SvrSock = new iMapSverSocket();
                 SvrSock.start();