فهرست منبع

2022.04.28 wallpadcall release

DESKTOP-UNEGUH3\MadeinLab_SW_02 3 سال پیش
والد
کامیت
db52b22607

BIN
WallPadCall/libs/bssofthns.jar


+ 2 - 2
WallPadCall/src/main/java/kr/co/icontrols/callengine/engine/CallController.java

@@ -1953,9 +1953,9 @@ public class CallController extends CallManager implements SIPEventListener {
                     MainActivity.mIOInterface.ctrlAudioSwitch34118(false);
                 }
                 else if (ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40 || ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40_NOUGAT) {
-                    MainActivity.mIOInterface.ctrlSetTalkPathDoor();
+                    //MainActivity.mIOInterface.ctrlSetTalkPathDoor();
                     MainActivity.mAudioManager.setMode(AUDIO_MODE_IN_DOOR_COMMUNICATION_V40);
-                    MainActivity.mIOInterface.ctrlAudioSwitch34118(true);
+                    MainActivity.mIOInterface.ctrlAudioSwitch34118(false);
                 }
             }
             else if (eCallPath == CALLPATH.MOIP) {

+ 1 - 0
WallPadCall/src/main/java/kr/co/icontrols/callengine/engine/SIPInterface.java

@@ -14,6 +14,7 @@ import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.IBinder;
+import android.os.Looper;
 import android.os.Message;
 import android.os.Messenger;
 import android.os.RemoteException;

+ 19 - 36
WallPadCall/src/main/java/kr/co/icontrols/callengine/engine/VideoJNI.java

@@ -262,44 +262,35 @@ public class VideoJNI {
 
     public void decoderStopOperation() {
         try {
-            int nTime = 700;
+            int nTime = 100;
             Log.d(TAG, "[decoderStopOperation] BOARDTYPE [" + BOARDTYPE + "], bDecoderStarted [" + bDecoderStarted + "], SWDecoderStarted [" + SWDecoderStarted + "]");
             if (BOARDTYPE == BOARD_TYPE.V40_IGW300) {
                 if (bDecoderStarted) {
+                    mV40IFCCD.decoderStopOperation();
                     bDecoderStarted = false;
-                    new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
-                        @Override
-                        public void run() {
-                            mV40IFCCD.decoderStopOperation();
-                        }
-                    }, nTime);
+//                    new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
+//                        @Override
+//                        public void run() {
+//
+//                        }
+//                    }, nTime);
                 }
             }
             else if (BOARDTYPE == BOARD_TYPE.V40) {
                 if (bDecoderStarted) {
+                    mV40IFCCD.decoderStopOperation();
                     bDecoderStarted = false;
-                    new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
-                        @Override
-                        public void run() {
-                            mV40IFCCD.decoderStopOperation();
-                        }
-                    }, nTime);
                 }
             }
             else if (BOARDTYPE == BOARD_TYPE.V40_IGW300_NOUGAT) {
                 if (bDecoderStarted) {
+                    mV40IFCCD.decoderStopOperation();
                     bDecoderStarted = false;
-                    new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
-                        @Override
-                        public void run() {
-                            mV40IFCCD.decoderStopOperation();
-                        }
-                    }, nTime);
                 }
             }
             else if (BOARDTYPE == BOARD_TYPE.V40_NOUGAT) {
                 if (bDecoderStarted) {
-                    bDecoderStarted = false;
+                    //bDecoderStarted = false;
 
                     if (bFFMPEGEnable) {
                         if (SWDecoderStarted) {
@@ -308,20 +299,12 @@ public class VideoJNI {
                             SWDecoderClose(1);
                             Log.e(TAG, "[decoderStopOperation] ========== JEFF 2 ========== SWDecoderStarted [" + SWDecoderStarted + "]");
                         }
-                        new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
-                            @Override
-                            public void run() {
-                                mV40IFCCD.decoderStopOperation();
-                            }
-                        }, nTime);
+                        mV40IFCCD.decoderStopOperation();
+                        bDecoderStarted = false;
                     }
                     else {
-                        new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
-                            @Override
-                            public void run() {
-                                mV40IFCCD.decoderStopOperation();
-                            }
-                        }, nTime);
+                        mV40IFCCD.decoderStopOperation();
+                        bDecoderStarted = false;
                     }
                 }
             }
@@ -345,7 +328,7 @@ public class VideoJNI {
                     SWSendDataToDecoder(hData, nFrameLen);
                 }
                 else {
-                    mV40IFCCD.sendDataToDecoder(hData, nHeaderLen, nFrameLen, nTimeStamp);
+                    if (bDecoderStarted) mV40IFCCD.sendDataToDecoder(hData, nHeaderLen, nFrameLen, nTimeStamp);
                 }
             }
             else if (BOARDTYPE == BOARD_TYPE.V40) {
@@ -353,16 +336,16 @@ public class VideoJNI {
                     SWSendDataToDecoder(hData, nFrameLen);
                 }
                 else {
-                    mV40IFCCD.sendDataToDecoder(hData, nHeaderLen, nFrameLen, nTimeStamp);
+                    if (bDecoderStarted) mV40IFCCD.sendDataToDecoder(hData, nHeaderLen, nFrameLen, nTimeStamp);
                 }
             }
             else if (BOARDTYPE == BOARD_TYPE.V40_IGW300_NOUGAT) {
                 if (bFFMPEGEnable) {
                     SWSendDataToDecoder(hData, nFrameLen);
-                    mV40IFCCD.sendDataToDecoder(hData, nHeaderLen, nFrameLen, nTimeStamp);
+                    if (bDecoderStarted) mV40IFCCD.sendDataToDecoder(hData, nHeaderLen, nFrameLen, nTimeStamp);
                 }
                 else {
-                    mV40IFCCD.sendDataToDecoder(hData, nHeaderLen, nFrameLen, nTimeStamp);
+                    if (bDecoderStarted) mV40IFCCD.sendDataToDecoder(hData, nHeaderLen, nFrameLen, nTimeStamp);
                 }
             }
             else if (BOARDTYPE == BOARD_TYPE.V40_NOUGAT) {

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

@@ -582,6 +582,21 @@ public class MainActivity extends WpadActivity {
                 Log.e(TAG, "menueListDataClass == null, Load Default List");
                 menuListDataClass = LoadDefaultMenuList();
             }
+            else
+            {
+                for (int i = 0; i < menuListDataClass.idMappingTable.length; i++) {
+//Temp_menuListDataClass.idMappingTable[i].Name
+                    Log.e(TAG, "menueListDataClass test " + menuListDataClass.idMappingTable[i].Name);
+
+                    if(menuListDataClass.idMappingTable[i].Name.contains("로비"))
+                    {
+                        menuListDataClass.idMappingTable[i].Name = "대문";
+                        break;
+                    }
+
+
+                }
+            }
 
 //            enableKaKaoiFunction(false);
 
@@ -1368,7 +1383,9 @@ public class MainActivity extends WpadActivity {
                     break;
 
                 case API_Menu.SubMenuCall.Lobby:
-                    setTitleText(API_Menu.SubMenuCall.Name_Lobby);
+                    //modify KSJ 2022.04.26 통화 메뉴
+                    setTitleText("대문");
+                    //setTitleText(API_Menu.SubMenuCall.Name_Lobby);
                     ScreenTalkLobby = new TalkLobby(this, ScreenLayout);
                     super.setCurrentScreen(ScreenTalkLobby);
                     break;
@@ -1415,7 +1432,9 @@ public class MainActivity extends WpadActivity {
                     break;
 
                 case ID.SCREEN.SCREEN_TALKLOBBY_SUBWALLPAD:
-                    setTitleText(API_Menu.SubMenuCall.Name_Lobby);
+                    //modify KSJ 2022.04.26 통화 메뉴
+                    setTitleText("대문");
+                    //setTitleText(API_Menu.SubMenuCall.Name_Lobby);
                     ScreenTalkLobbySub = new TalkLobby_SubWallPad(this, ScreenLayout);
                     super.setCurrentScreen(ScreenTalkLobbySub);
                     break;
@@ -1907,7 +1926,9 @@ public class MainActivity extends WpadActivity {
         //추가 또는 수정해야할 부분 1. - Menu정보가 DB에 없을 경우 불러올 스크린 종류(시작)
         arrayList.add(API_Menu.SubMenuCall.Name_Door);
         ChildCount++;
-        arrayList.add(API_Menu.SubMenuCall.Name_Lobby);
+        //modify KSJ 2022.04.26 통화 메뉴
+        arrayList.add("대문");
+        //arrayList.add(API_Menu.SubMenuCall.Name_Lobby);
         ChildCount++;
         arrayList.add(API_Menu.SubMenuCall.Name_Guard);
         ChildCount++;
@@ -1925,10 +1946,13 @@ public class MainActivity extends WpadActivity {
 //                Temp_menuListDataClass.idMappingTable[i].Id = API_Menu.SubMenuCall.Door;
                 Temp_menuListDataClass.idMappingTable[i].Id = ID.SCREEN.SCREEN_TALKFRONT_SUBWALLPAD;
                 Temp_menuListDataClass.idMappingTable[i].Name = API_Menu.SubMenuCall.Name_Door;
-            } else if (arrayList.get(i).equals(API_Menu.SubMenuCall.Name_Lobby)) {
+            } else if (arrayList.get(i).equals("대문")) {
+            //else if (arrayList.get(i).equals(API_Menu.SubMenuCall.Name_Lobby)) { //modify KSJ 2022.04.26 통화 메뉴
 //                Temp_menuListDataClass.idMappingTable[i].Id = API_Menu.SubMenuCall.Lobby;
                 Temp_menuListDataClass.idMappingTable[i].Id = ID.SCREEN.SCREEN_TALKLOBBY_SUBWALLPAD;
-                Temp_menuListDataClass.idMappingTable[i].Name = API_Menu.SubMenuCall.Name_Lobby;
+                //modify KSJ 2022.04.26 통화 메뉴
+                Temp_menuListDataClass.idMappingTable[i].Name = "대문";
+                //Temp_menuListDataClass.idMappingTable[i].Name = API_Menu.SubMenuCall.Name_Lobby;
             } else if (arrayList.get(i).equals(API_Menu.SubMenuCall.Name_Guard)) {
 //                Temp_menuListDataClass.idMappingTable[i].Id = API_Menu.SubMenuCall.Guard;
                 Temp_menuListDataClass.idMappingTable[i].Id = ID.SCREEN.SCREEN_TALKGUARD_SUBWALLPAD;
@@ -5798,7 +5822,7 @@ public class MainActivity extends WpadActivity {
                     try {
                         modbusClient.Connect();
                         modbusClient.WriteSingleCoil(address, true);
-                        Thread.sleep(600);
+                        Thread.sleep(1200);
                         modbusClient.WriteSingleCoil(address, false);
                         modbusClient.Disconnect();
                     } catch (IOException | ModbusException | InterruptedException e) {

+ 16 - 0
WallPadCall/src/main/java/kr/co/icontrols/wallpadcall/declare/Global.java

@@ -735,6 +735,8 @@ public final class Global {
     // V40_300 / V40(현산) VOLUME TABLE
     private static String[] sV40WallPadVolumeTable = new String[]{"0x0036", "0x0036", "0x0040", "0x004c", "0x005a", "0x006b", "0x0080", "0x0098", "0x00b5", "0x00d7", "0x100"};
     private static String[] sV40WallPadVolumeTable_RESIDENCE = new String[]{"0x006b", "0x006b", "0x0080", "0x0098", "0x00b5", "0x00d7", "0x0100", "0x0130", "0x016a", "0x01ae", "0x200"};
+    //private static String[] sV40WallPadVolumeTable_FRONT = new String[]{"0x0036", "0x0036", "0x0096", "0x0116", "0x0156", "0x0200", "0x0233", "0x025a", "0x270", "0x0296", "0x300"};
+    private static String[] sV40WallPadVolumeTable_FRONT = new String[]{"0x0036", "0x0036", "0x0096", "0x0116", "0x0156", "0x0200", "0x0233", "0x025a", "0x270", "0x0296", "0x300"};
 
     // IHN-1020B-I 전용 통화 음량 테이블 (AOS 7.1.1, MadeInLAB)
     private static String[] sV40WallPadVolumeTable_RESIDENCE_IHN1020B_I = new String[]{"0x0066", "0x0066", "0x00CC", "0x0132", "0x0198", "0x0200", "0x0233", "0x0266", "0x0299", "0x02CC", "0x0300"};
@@ -771,6 +773,20 @@ public final class Global {
         }
     }
 
+    public static void setV40WallPadVolume_Front(int nVolume) {
+        try {
+            Log.d(TAG, "[setV40WallPadVolume_Front] nVolume: " + nVolume);
+
+            MainActivity.mIOInterface.setWallPadVolume_V40(sV40WallPadVolumeTable[nVolume]);
+        } catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+        } catch (Exception e) {
+            Log.e(TAG, "[Exception] setV40WallPadVolume_Front(int nVolume)");
+            //e.printStackTrace();
+            LogUtil.errorLogInfo("", TAG, e);
+        }
+    }
+
     public static void setV40WallPadVolume_LOBBY(int nVolume) {
         try {
             Log.d(TAG, "[setV40WallPadVolume] nVolume: " + nVolume);

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

@@ -1072,7 +1072,7 @@ public class InquiryCallHistory extends WpadScreen implements CallEventListener,
 
     private boolean activateTalkBTN(String strName) {
         try {
-            if (strName.contains("로비")) return false;
+            if (strName.contains("대문")) return false;
             //else if (strName.contains("현관")) return false;
             else if (strName.contains("발신번호 없음")) return false;
             else if (strName.contains("발신번호제한")) return false;

+ 17 - 9
WallPadCall/src/main/java/kr/co/icontrols/wallpadcall/screen/InquiryVisitorPictureHistory.java

@@ -631,7 +631,7 @@ public class InquiryVisitorPictureHistory extends WpadScreen implements CallEven
         }
     }
 
-    private void drawVisitorPicture(int nIndex, String strURI) {
+    private boolean drawVisitorPicture(int nIndex, String strURI) {
         try {
             LOG_INFO("[drawVisitorPicture] nIndex [" + nIndex + "], strURI [" + strURI + "]");
             File mFile = new File(strURI);
@@ -639,8 +639,10 @@ public class InquiryVisitorPictureHistory extends WpadScreen implements CallEven
                 Drawable mDrawable = Drawable.createFromPath(strURI);
                 mLIST[nIndex].IMG_VISITORPICTURE.setImageDrawable(mDrawable);
                 mLIST[nIndex].IMG_VISITORPICTURE.setVisibility(View.VISIBLE);
+                return true;
             } else {
                 LOG_WARN("[drawVisitorPicture] There is no file!!!");
+                return false;
             }
 
             // TODO 사진 복호화 추후 적용!!!!
@@ -677,6 +679,8 @@ public class InquiryVisitorPictureHistory extends WpadScreen implements CallEven
             //e.printStackTrace();
             LogUtil.errorLogInfo("", TAG, e);
         }
+
+        return false;
     }
 
     boolean bSelectMode = false;
@@ -941,8 +945,8 @@ public class InquiryVisitorPictureHistory extends WpadScreen implements CallEven
                     String strLocalURI = mVisitorPictureHistoryInfoTable.getVisitorPictureHistoryInfo(i).getURI();
                     if (!mFTPManager.downloadFile(strRemoteURI, strLocalURI)) {
                         Log.w(TAG, "[DownloadVisitorPicture.run()] FAIL!! -> uploadFile(...) " + i);
-                        disconnectFTP();
-                        return;
+                        //disconnectFTP();
+                        //return;
                     }
 
                     //
@@ -1244,14 +1248,18 @@ public class InquiryVisitorPictureHistory extends WpadScreen implements CallEven
             }
 
             for (int i = 0; i < nInfoCnt; i++) {
-                mLIST[i].TXT_INFO.setText(mLIST_VALUE[i].INFO);
-                mLIST[i].IMG_UNIT.setVisibility(View.VISIBLE);
-                mLIST[i].TXT_INFO.setVisibility(View.VISIBLE);
-                if (mLIST_VALUE[i].NEW.equals("FALSE"))
-                    mLIST[i].IMG_NEW.setVisibility(View.VISIBLE);
+                if(drawVisitorPicture(i, mLIST_VALUE[i].URI))
+                {
+                    mLIST[i].TXT_INFO.setText(mLIST_VALUE[i].INFO);
+                    mLIST[i].IMG_UNIT.setVisibility(View.VISIBLE);
+                    mLIST[i].TXT_INFO.setVisibility(View.VISIBLE);
+                    if (mLIST_VALUE[i].NEW.equals("FALSE"))
+                        mLIST[i].IMG_NEW.setVisibility(View.VISIBLE);
+                }
+
 //                if (mLIST_VALUE[i].THIEF.equals("TRUE"))
 //                    mLIST[i].IMG_THIEF.setVisibility(View.VISIBLE);
-                drawVisitorPicture(i, mLIST_VALUE[i].URI);
+
             }
 
             //if (nInfoCnt > 0) MainActivity.mVisitorPictureHistoryManager.updateNewCheck(mLIST_VALUE[nInfoCnt - 1].ID, mLIST_VALUE[0].ID);

+ 36 - 12
WallPadCall/src/main/java/kr/co/icontrols/wallpadcall/screen/TalkFront.java

@@ -428,6 +428,7 @@ public class TalkFront extends WpadScreen implements CallEventListener, MainEven
         try {
             LOG_INFO("[onMainTouchEvent] eEvent [" + eEvent + "] RemoteIDInfo.strIP [" + RemoteIDInfo.strIP + "]");
             if (eEvent == MAINEVENT.BTN_HOME && m_bCallStartBtnEnable == false) {
+                MainActivity.mCallController.mSIPInterface.videoSet(false, false, false); //add KSJ 2022.04.26 통화 종료시 화면이 종료 안되는 현상 수정.
                 send_stop_talking_request(RemoteIDInfo.strIP);
                 if ((MainActivity.mCallController.mCallInfo.getFRONT() != CALLSTATUS.TALKING) && ((MainActivity) mContext).bDelCallTouch == false) Sound().Play(SND.effect.TOUCH_LATCHED);
                 finishWallpadCallApp();
@@ -464,7 +465,28 @@ public class TalkFront extends WpadScreen implements CallEventListener, MainEven
     public void onCallEvent(CALLOWNER eCallOwner, CALLSTATUS eCallStatus, CALLTYPE eCallType, String strRemoteIP, String strRemoteSIPID, String strMessage) {
         try {
             LOG_INFO("[onCallEvent] eCallOwner [" + eCallOwner + "], eCallStatus [" + eCallStatus + "], eCallType [" + eCallType + "], strRemoteIP [" + strRemoteIP + "], strRemoteSIPID [" + strRemoteSIPID + "], strMessage [" + strMessage + "]");
-            if (eCallType == CALLTYPE.NONE) return;
+            if (eCallType == CALLTYPE.NONE)
+            {
+                bEnableVisitorPic = false;
+                bReliefCallInit = false;
+                //Global.stopMelodyRepeat();
+                MainActivity.mCallController.setTalkPath(CALLPATH.NORMAL);
+                ((MainActivity) mContext).finishPopUp(ID.POPUP.POPUP_ALL);
+                ((MainActivity) mContext).finishManual(ID.MANUAL.MANUAL_ALL);
+                ((MainActivity) mContext).displayRemoteID(null);
+                if (eCallOwner == CALLOWNER.MOBILE) {
+                    MainActivity.mCallController.quitMoIPCall();
+//                        ((MainActivity) mContext).showRemoteCallNoticeText(false);
+                }
+                MainActivity.mCallController.mCallInfo.setCallStatus(CALLTYPE.FRONT, CALLSTATUS.IDLE);
+                MainActivity.mCallController.stop1stCallTimer();
+                MainActivity.mCallController.stop2ndCallTimer();
+                MainActivity.mCallController.setTalkPath(CALLPATH.NORMAL);
+                nSelectedFilter = 0;
+                sendReliefFilterSelectBR(nSelectedFilter);
+                MainActivity.mCallController.MultiCallScenarioManager();
+                return;
+            }
 
             if (eCallType == CALLTYPE.FRONT) {
                 MainActivity.mCallController.setRemoteInfo(strRemoteSIPID, strRemoteIP);
@@ -545,10 +567,12 @@ public class TalkFront extends WpadScreen implements CallEventListener, MainEven
                                 if ((Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I_LX2) || (Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I))
                                 {
                                     MainActivity.mCallController.setTalkPath(CALLPATH.FRONT);
+                                    Global.setV40WallPadVolume_Front(nCurrentVolume);
                                 }
                                 else if ((Version.getModelType() == Version.MODEL_TYPE.IHN_1010_I_LX2) || (Version.getModelType() == Version.MODEL_TYPE.IHN_1010_I))
                                 {
-                                    MainActivity.mCallController.setTalkPath(CALLPATH.MOIP_IHND101_LOBBY);
+                                    MainActivity.mCallController.setTalkPath(CALLPATH.FRONT);
+                                    Global.setV40WallPadVolume_Front(nCurrentVolume);
                                 }
                             }
                             else if (ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40 || ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40_NOUGAT) {
@@ -2021,15 +2045,15 @@ public class TalkFront extends WpadScreen implements CallEventListener, MainEven
             CALLSTATUS eCallStatus = MainActivity.mCallController.mCallInfo.getFRONT();
             LOG("[ctrlVolume] eCallStatus [" + eCallStatus + "]");
             if (eCallStatus == CALLSTATUS.TALKING) {
-                Global.setV40WallPadVolume_LOBBY(nCurrentVolume);
-                if ((Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I_LX2) || (Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I))
-                {
-                    Global.setV40WallPadMicGain("0x0200");
-                }
-                else if ((Version.getModelType() == Version.MODEL_TYPE.IHN_1010_I_LX2) || (Version.getModelType() == Version.MODEL_TYPE.IHN_1010_I))
-                {
-                    //Global.setV40WallPadMicGain("0x0080");
-                }
+                Global.setV40WallPadVolume_Front(nCurrentVolume);
+//                if ((Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I_LX2) || (Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I))
+//                {
+//                    Global.setV40WallPadMicGain("0x0200");
+//                }
+//                else if ((Version.getModelType() == Version.MODEL_TYPE.IHN_1010_I_LX2) || (Version.getModelType() == Version.MODEL_TYPE.IHN_1010_I))
+//                {
+//                    //Global.setV40WallPadMicGain("0x0080");
+//                }
             }
         } catch (RuntimeException re) {
             LogUtil.errorLogInfo("", TAG, re);
@@ -2304,7 +2328,7 @@ public class TalkFront extends WpadScreen implements CallEventListener, MainEven
                     break;
 
                 case TalkFront.HANDLERMSG.SET_VOLUME_TABLE:
-                    Global.setV40WallPadVolume_LOBBY(nCurrentVolume);
+                    Global.setV40WallPadVolume_Front(nCurrentVolume);
                     break;
 
                 case TalkFront.HANDLERMSG.SEND_BROADCAST_FILTER:

+ 58 - 35
WallPadCall/src/main/java/kr/co/icontrols/wallpadcall/screen/TalkLobby.java

@@ -304,6 +304,7 @@ public class TalkLobby extends WpadScreen implements CallEventListener, MainEven
         super.onClose();
         try {
             LOG_INFO("[onClose]");
+            MainActivity.mCallController.mSIPInterface.videoSet(false, false, false);
             //MainActivity.mIOInterface.ctrlPopupGUI(true);
             if (MainActivity.mIOInterface != null) MainActivity.mIOInterface.ctrlWallPadLED_Call(false);
             nSelectedFilter = 0;
@@ -329,7 +330,7 @@ public class TalkLobby extends WpadScreen implements CallEventListener, MainEven
             if (ConfigValues.bReliefCall) selectReliefCallFilter(nSelectedFilter);
             MainActivity.mCallController.releaseCallEventListener();
             ((MainActivity) mContext).releaseMainEventListener();
-            MainActivity.mCallController.mSIPInterface.videoSet(false, false, false);
+
             initCallVariables();
             //super.setFinishTimerDestroy();
             //Global.add1stCallHistoryInfoFinal();
@@ -423,6 +424,7 @@ public class TalkLobby extends WpadScreen implements CallEventListener, MainEven
         try {
             LOG_INFO("[onMainTouchEvent] eEvent [" + eEvent + "] RemoteIDInfo.strIP [" + RemoteIDInfo.strIP + "]");
             if (eEvent == MAINEVENT.BTN_HOME && m_bCallStartBtnEnable == false) {
+                MainActivity.mCallController.mSIPInterface.videoSet(false, false, false); //add KSJ 2022.04.26 통화 종료시 화면이 종료 안되는 현상 수정.
                 send_stop_talking_request(RemoteIDInfo.strIP);
                 if ((MainActivity.mCallController.mCallInfo.getLOBBY() != CALLSTATUS.TALKING) && ((MainActivity) mContext).bDelCallTouch == false)  Sound().Play(SND.effect.TOUCH_LATCHED);
                 ctrlAlphaBlending(false);
@@ -460,7 +462,28 @@ public class TalkLobby extends WpadScreen implements CallEventListener, MainEven
     public void onCallEvent(CALLOWNER eCallOwner, CALLSTATUS eCallStatus, CALLTYPE eCallType, String strRemoteIP, String strRemoteSIPID, String strMessage) {
         try {
             LOG_INFO("[onCallEvent] eCallOwner [" + eCallOwner + "], eCallStatus [" + eCallStatus + "], eCallType [" + eCallType + "], strRemoteIP [" + strRemoteIP + "], strRemoteSIPID [" + strRemoteSIPID + "], strMessage [" + strMessage + "]");
-            if (eCallType == CALLTYPE.NONE) return;
+            if (eCallType == CALLTYPE.NONE)
+            {
+                bEnableVisitorPic = false;
+                bReliefCallInit = false;
+                //Global.stopMelodyRepeat();
+                MainActivity.mCallController.setTalkPath(CALLPATH.NORMAL);
+                ((MainActivity) mContext).finishPopUp(ID.POPUP.POPUP_ALL);
+                ((MainActivity) mContext).finishManual(ID.MANUAL.MANUAL_ALL);
+                //((MainActivity) mContext).displayRemoteID(null);
+                if (eCallOwner == CALLOWNER.MOBILE) {
+                    MainActivity.mCallController.quitMoIPCall();
+//                        ((MainActivity) mContext).showRemoteCallNoticeText(false);
+                }
+                MainActivity.mCallController.mCallInfo.setCallStatus(CALLTYPE.LOBBY, CALLSTATUS.IDLE);
+                MainActivity.mCallController.stop1stCallTimer();
+                MainActivity.mCallController.stop2ndCallTimer();
+                MainActivity.mCallController.setTalkPath(CALLPATH.NORMAL);
+                nSelectedFilter = 0;
+                sendReliefFilterSelectBR(nSelectedFilter);
+                MainActivity.mCallController.MultiCallScenarioManager();
+                return;
+            }
 
             if (eCallType == CALLTYPE.LOBBY) {
                 MainActivity.mCallController.setRemoteInfo(strRemoteSIPID, strRemoteIP);
@@ -1508,16 +1531,16 @@ public class TalkLobby extends WpadScreen implements CallEventListener, MainEven
 //                        }
                         //MainActivity.mCallController.setTalkPath(CALLPATH.NORMAL);
 //                        MainActivity.mSound.Play(SND.mode.OPENDOOR);
-                        //mPathCheckHandler.sendEmptyMessage(2); // 통화패스 Normal로 변경 확인 후 멘트 출력 seulki
-
-                        int nMentDuration = MainActivity.mSound.PlayMent(SND.mode.OPENDOOR);
-                        try {
-                            Log.d(TAG, "[mPathCheckHandler.handleMessage] nMentDuration -> " + nMentDuration);
-                            Thread.sleep(nMentDuration + 1500);
-                        } catch (InterruptedException e) {
-                            //e.printStackTrace();
-                            LogUtil.errorLogInfo("", TAG, e);
-                        }
+                        mPathCheckHandler.sendEmptyMessage(2); // 통화패스 Normal로 변경 확인 후 멘트 출력 seulki
+
+//                        int nMentDuration = MainActivity.mSound.PlayMent(SND.mode.OPENDOOR);
+//                        try {
+//                            Log.d(TAG, "[mPathCheckHandler.handleMessage] nMentDuration -> " + nMentDuration);
+//                            Thread.sleep(nMentDuration + 1500);
+//                        } catch (InterruptedException e) {
+//                            //e.printStackTrace();
+//                            LogUtil.errorLogInfo("", TAG, e);
+//                        }
 
                         enableTalkBTN(false);
                         enableEndBTN(false);
@@ -1916,14 +1939,14 @@ public class TalkLobby extends WpadScreen implements CallEventListener, MainEven
             if (eCallStatus == CALLSTATUS.TALKING) {
                 Global.setV40WallPadVolume_LOBBY(nCurrentVolume);
 
-                if ((Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I_LX2) || (Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I))
-                {
-                    Global.setV40WallPadMicGain("0x0200");
-                }
-                else if ((Version.getModelType() == Version.MODEL_TYPE.IHN_1010_I_LX2) || (Version.getModelType() == Version.MODEL_TYPE.IHN_1010_I))
-                {
-                    Global.setV40WallPadMicGain("0x0080");
-                }
+//                if ((Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I_LX2) || (Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I))
+//                {
+//                    Global.setV40WallPadMicGain("0x0200");
+//                }
+//                else if ((Version.getModelType() == Version.MODEL_TYPE.IHN_1010_I_LX2) || (Version.getModelType() == Version.MODEL_TYPE.IHN_1010_I))
+//                {
+//                    Global.setV40WallPadMicGain("0x0080");
+//                }
 
             }
         } catch (RuntimeException re) {
@@ -2179,14 +2202,14 @@ public class TalkLobby extends WpadScreen implements CallEventListener, MainEven
 
                 case HANDLERMSG.SET_VOLUME_TABLE:
                     Global.setV40WallPadVolume_LOBBY(nCurrentVolume);
-                    if ((Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I_LX2) || (Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I))
-                    {
-                        Global.setV40WallPadMicGain("0x0200");
-                    }
-                    else if ((Version.getModelType() == Version.MODEL_TYPE.IHN_1010_I_LX2) || (Version.getModelType() == Version.MODEL_TYPE.IHN_1010_I))
-                    {
-                        Global.setV40WallPadMicGain("0x0080");
-                    }
+//                    if ((Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I_LX2) || (Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I))
+//                    {
+//                        Global.setV40WallPadMicGain("0x0200");
+//                    }
+//                    else if ((Version.getModelType() == Version.MODEL_TYPE.IHN_1010_I_LX2) || (Version.getModelType() == Version.MODEL_TYPE.IHN_1010_I))
+//                    {
+//                        Global.setV40WallPadMicGain("0x0080");
+//                    }
 
                     break;
 
@@ -2317,13 +2340,13 @@ public class TalkLobby extends WpadScreen implements CallEventListener, MainEven
             }
             else if (msg.what == 3) {
                 Log.d(TAG, "[mPathCheckHandler.handleMessage] Handler finish!! PATH [NORMAL] -> play dooropen ment!");
-                try {
-
-                    Thread.sleep(3000);
-                } catch (InterruptedException e) {
-                    //e.printStackTrace();
-                    LogUtil.errorLogInfo("", TAG, e);
-                }
+//                try {
+//
+//                    Thread.sleep(3000);
+//                } catch (InterruptedException e) {
+//                    //e.printStackTrace();
+//                    LogUtil.errorLogInfo("", TAG, e);
+//                }
                 int nMentDuration = MainActivity.mSound.PlayMent(SND.mode.OPENDOOR);
                 try {
                     Log.d(TAG, "[mPathCheckHandler.handleMessage] nMentDuration -> " + nMentDuration);

+ 87 - 1
WallPadCall/src/main/java/kr/co/icontrols/wallpadcall/screen/TalkResidence.java

@@ -660,7 +660,27 @@ public class TalkResidence extends WpadScreen implements CallEventListener, Main
     public void onCallEvent(CALLOWNER eCallOwner, CALLSTATUS eCallStatus, CALLTYPE eCallType, String strRemoteIP, String strRemoteSIPID, String strMessage) {
         try {
             LOG_INFO("[onCallEvent] eCallOwner [" + eCallOwner + "], eCallStatus [" + eCallStatus + "], eCallType [" + eCallType + "], strRemoteIP [" + strRemoteIP + "], strRemoteSIPID [" + strRemoteSIPID + "], strMessage [" + strMessage + "]");
-            if (eCallType == CALLTYPE.NONE) return;
+            if (eCallType == CALLTYPE.NONE)
+            {
+
+
+
+                if (eCallOwner != CALLOWNER.WALLPAD) {
+                    //((MainActivity) mContext).showRemoteCallNoticeText(false);
+                    ((MainActivity) mContext).finishPopUp(ID.POPUP.POPUP_NOTICE_SUBPHONETALK);
+                }
+
+                new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
+                    @Override
+                    public void run() {
+                        LOG_INFO("[onCallEvent] eCallType none");
+                        doEnd();
+                        LOG_INFO("[onCallEvent] eCallType none END");
+                    }
+                }, 1000);
+
+                return;
+            }
 
             if (eCallType == CALLTYPE.RESIDENCE) {
                 MainActivity.mCallController.setRemoteInfo(strRemoteSIPID, strRemoteIP);
@@ -1632,6 +1652,29 @@ public class TalkResidence extends WpadScreen implements CallEventListener, Main
                     showTalkMode(true);
                     super.setFinishTimerDestroy();
                     MainActivity.mCallController.set1stCallTimer(eMType, MainActivity.mCallController.mCTT.RESIDENCEnRESIDENCE);
+
+                    if (ConfigValues.bWallPadCameraEnable) {
+                        //BTN_END.setImageResource(R.drawable.btn_residence_end_disabled2);
+                        BTN_END.setButtonEventOffEnable(R.drawable.btn_residence_end_disabled2);
+                    }
+                    else
+                    {
+                        //BTN_END.setImageResource(R.drawable.btn_residence_end_disabled2);
+                        BTN_END.setButtonEventOffEnable(R.drawable.btn_residence_end_disabled2);
+                    }
+
+                    //BTN_END.setEnabled(false);
+
+                    m_bCallStartBtnEnable = true;
+                    new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
+                        @Override
+                        public void run() {
+                            BTN_END.setImageResource(R.drawable.btn_residence_end_normal2);
+                            BTN_END.setButtonEventOffDisable();
+                            m_bCallStartBtnEnable = false;
+                        }
+                    }, 3000);
+
                     doTalk(CALLOWNER.WALLPAD);
                 } else {
                     // 멀티콜 수신중 (호출수신중)
@@ -1649,6 +1692,28 @@ public class TalkResidence extends WpadScreen implements CallEventListener, Main
                 if (RemoteIDInfo.bAutoCall) {
                     if (ConfigValues.bWallPadCameraEnable) BTN_TALK.setButtonEventOffEnable(R.drawable.btn_residence_call_disabled3);
                     else BTN_TALK.setButtonEventOffEnable(R.drawable.btn_residence_call_disabled2);
+
+                    if (ConfigValues.bWallPadCameraEnable) {
+                        //BTN_END.setImageResource(R.drawable.btn_residence_end_disabled2);
+                        BTN_END.setButtonEventOffEnable(R.drawable.btn_residence_end_disabled2);
+                    }
+                    else
+                    {
+                        //BTN_END.setImageResource(R.drawable.btn_residence_end_disabled2);
+                        BTN_END.setButtonEventOffEnable(R.drawable.btn_residence_end_disabled2);
+                    }
+
+                    //BTN_END.setEnabled(false);
+
+                    m_bCallStartBtnEnable = true;
+                    new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
+                        @Override
+                        public void run() {
+                            BTN_END.setImageResource(R.drawable.btn_residence_end_normal2);
+                            BTN_END.setButtonEventOffDisable();
+                            m_bCallStartBtnEnable = false;
+                        }
+                    }, 3000);
                     doAutoCall();   // 멀티콜 상황이 아닌경우 자동호출을 수행함
                 }
                 MainActivity.mCallController.mCallInfo.resetMultiCallInfo();
@@ -1706,6 +1771,27 @@ public class TalkResidence extends WpadScreen implements CallEventListener, Main
             } else if (eCallType == CALLTYPE.RESIDENCE) {
                 if (ConfigValues.bWallPadCameraEnable) BTN_TALK.setButtonEventOffEnable(R.drawable.btn_residence_call_disabled3);
                 else BTN_TALK.setButtonEventOffEnable(R.drawable.btn_residence_call_disabled2);
+                if (ConfigValues.bWallPadCameraEnable) {
+                    //BTN_END.setImageResource(R.drawable.btn_residence_end_disabled2);
+                    BTN_END.setButtonEventOffEnable(R.drawable.btn_residence_end_disabled2);
+                }
+                else
+                {
+                    //BTN_END.setImageResource(R.drawable.btn_residence_end_disabled2);
+                    BTN_END.setButtonEventOffEnable(R.drawable.btn_residence_end_disabled2);
+                }
+
+                //BTN_END.setEnabled(false);
+
+                m_bCallStartBtnEnable = true;
+                new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
+                    @Override
+                    public void run() {
+                        BTN_END.setImageResource(R.drawable.btn_residence_end_normal2);
+                        BTN_END.setButtonEventOffDisable();
+                        m_bCallStartBtnEnable = false;
+                    }
+                }, 3000);
                 doAutoCall();
                 return true;
             } else {