소스 검색

2021.11.26 VIP wallpadCall 통화 merge
1. front doorlock
2. door open 수정
3. 음성 튜닝 수정

DESKTOP-UNEGUH3\MadeinLab_SW_02 3 년 전
부모
커밋
b41608e8cc

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

@@ -1933,9 +1933,12 @@ public class CallController extends CallManager implements SIPEventListener {
 //                    MainActivity.mIOInterface.interfaceIGW300(IGW300CMD.AUDIO_FRONT_WALLPAD); // IGW300_CallPathCtrl -> Handler로 수정
 //                    MainActivity.mAudioManager.setMode(AUDIO_MODE_FRONT); // Audio setMode -> Handler로 수정
 //                    MainActivity.mIOInterface.ctrlAudioSwitch34118(true); // JNI Control
-                    ((MainActivity) mContext).sendHandlerMsg(IGW300CMD.AUDIO_FRONT_WALLPAD, 0, 0);
-                    sendHandlerMsg(HANDLERMSG.SETMODE_AUDIO_FRONT_WALLPAD, 0, 0);
-                    MainActivity.mIOInterface.ctrlAudioSwitch34118(true);
+//                    ((MainActivity) mContext).sendHandlerMsg(IGW300CMD.AUDIO_FRONT_WALLPAD, 0, 0);
+//                    sendHandlerMsg(HANDLERMSG.SETMODE_AUDIO_FRONT_WALLPAD, 0, 0);
+//                    MainActivity.mIOInterface.ctrlAudioSwitch34118(true);
+
+                    MainActivity.mAudioManager.setMode(AUDIO_MODE_IN_DOOR_COMMUNICATION_V40);
+                    MainActivity.mIOInterface.ctrlAudioSwitch34118(false);
                 }
                 else if (ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40 || ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40_NOUGAT) {
                     MainActivity.mIOInterface.ctrlSetTalkPathDoor();

+ 2 - 0
WallPadCall/src/main/java/kr/co/icontrols/v40ioctl/V40IOInterface2.java

@@ -35,4 +35,6 @@ public class V40IOInterface2 {
     public native void NetDns2(String dns);
 
     public native void volumectl(String vol);
+
+    public native void micgainctl(String vol);
 }

+ 17 - 0
WallPadCall/src/main/java/kr/co/icontrols/wallpadcall/IOInterface.java

@@ -709,6 +709,23 @@ public class IOInterface {
         }
     }
 
+    public void setWallPadMicGain_V40(String sValue) {
+        try {
+            Log.d(TAG, "[setWallPadMicGain_V40] sValue [" + sValue + "]");
+            if ((BOARDTYPE == BOARD_TYPE.V40_IGW300_NOUGAT) || (BOARDTYPE == BOARD_TYPE.V40_NOUGAT)) {
+                mV40IOIF_NOUGAT.micgainctl(sValue);
+            } else {
+                Log.w(TAG, "[setWallPadMicGain_V40] Not supported BOARDTYPE!! [" + BOARDTYPE + "]");
+            }
+        } catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+        } catch (Exception e) {
+            Log.e(TAG, "[Exception] setWallPadVolume_V40");
+            //e.printStackTrace();
+            LogUtil.errorLogInfo("", TAG, e);
+        }
+    }
+
     private Boolean setDTMFWrite(int nNo) {
         try {
             int nResult = -1;

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

@@ -74,6 +74,8 @@ import java.util.List;
 import javax.crypto.Cipher;
 import javax.crypto.spec.SecretKeySpec;
 
+import de.re.easymodbus.exceptions.ModbusException;
+import de.re.easymodbus.modbusclient.ModbusClient;
 import kr.co.icontrols.ReliefCall.ReliefCallInterface;
 import kr.co.icontrols.callengine.engine.AudioRecordController;
 import kr.co.icontrols.callengine.engine.CallController;
@@ -142,7 +144,7 @@ import static kr.co.icontrols.wallpadcall.declare.Declare.BR.ACNAME_MAIN_NOTI;
  */
 public class MainActivity extends WpadActivity {
     private final static String TAG = "MainActivity";
-// test
+
     /**
      * MoIP 영상통화시, FFMPEG 사용 여부 설정
      * true: FFMPEG 사용, MoIP 영상을 안드로이드 화면의 surface에 출력
@@ -5757,4 +5759,48 @@ public class MainActivity extends WpadActivity {
         }
     }
 
+    /**
+     * 도어락에 열림 명령을 내린다.
+     *
+     * @return (int) - >=0 : 성공, <0 : 실패
+     */
+    public int Device_DoorOpen(final int address) {
+        Log.d("TAG", "[Device_DoorOpen] - Start");
+        final ModbusClient modbusClient = new ModbusClient("10.0.215.2", 502);
+        modbusClient.setConnectionTimeout(5000);
+        try {
+            new Thread() {
+                public void run() {
+                    try {
+                        modbusClient.Connect();
+                        modbusClient.WriteSingleCoil(address, true);
+                        Thread.sleep(600);
+                        modbusClient.WriteSingleCoil(address, false);
+                        modbusClient.Disconnect();
+                    } catch (IOException | ModbusException | InterruptedException e) {
+                        e.printStackTrace();
+                        try {
+                            modbusClient.Disconnect();
+                        } catch (IOException ioException) {
+                            ioException.printStackTrace();
+                        }
+                    }
+
+                }
+            }.start();
+
+        } catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+            return -102;
+        } catch (Exception e) {
+            //e.printStackTrace();
+            LogUtil.errorLogInfo("", TAG, e);
+            return -102;
+        }
+
+        Log.d("TAG", "[Device_DoorOpen] - OK");
+
+        return 0;
+    }
+
 }

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

@@ -756,6 +756,19 @@ public final class Global {
         }
     }
 
+    public static void setV40WallPadMicGain(String sVolume) {
+        try {
+            Log.d(TAG, "[setV40WallPadMicGain] nVolume: " + sVolume);
+            MainActivity.mIOInterface.setWallPadMicGain_V40(sVolume);
+        } catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+        } catch (Exception e) {
+            Log.e(TAG, "[Exception] setV40WallPadMicGain(int nVolume)");
+            //e.printStackTrace();
+            LogUtil.errorLogInfo("", TAG, e);
+        }
+    }
+
     public static void setV40WallPadVolume_LOBBY(int nVolume) {
         try {
             Log.d(TAG, "[setV40WallPadVolume] nVolume: " + nVolume);

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

@@ -520,7 +520,15 @@ public class TalkFront extends WpadScreen implements CallEventListener, MainEven
                             ((MainActivity) mContext).sendHandlerMsg(MainActivity.HANDLERMSG.SET_TEMPSYSTEM_VOLUME, 0, 0);// 통화 중 임의 볼륨값 설정 seulki
                             MainActivity.mCallController.selectVideoSourceToSubPhone(CALLTYPE.NONE, false);
                             if (ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40_IGW300 || ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40_IGW300_NOUGAT) {
-                                MainActivity.mCallController.setTalkPath(CALLPATH.MOIP_IHND101_LOBBY);
+                                //MainActivity.mCallController.setTalkPath(CALLPATH.FRONT);
+                                if ((Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I_LX2) || (Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I))
+                                {
+                                    MainActivity.mCallController.setTalkPath(CALLPATH.FRONT);
+                                }
+                                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);
+                                }
                             }
                             else if (ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40 || ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40_NOUGAT) {
                                 MainActivity.mCallController.setTalkPath(CALLPATH.MOIP_IHN1010_LOBBY_GUARD);
@@ -1001,6 +1009,10 @@ public class TalkFront extends WpadScreen implements CallEventListener, MainEven
         try {
             LOG_INFO("[doTalk] eCallOwner [" + eCallOwner + "], nSelectedFilter [" + nSelectedFilter + "]" + "RemoteIDInfo.strIP [" + RemoteIDInfo.strIP + "]");
             if ((MainActivity.mCallController.mCallInfo.getFRONT() == CALLSTATUS.CALLED) || (MainActivity.mCallController.mCallInfo.getFRONT() == CALLSTATUS.CALLING)) {
+                enableEndBTN(false);
+                enableOpenDoorBTN(false);
+                sendHandlerMsgDelayed(TalkLobby.HANDLERMSG.ENABLE_END_BTN, 0, 0, null, 2000);
+                sendHandlerMsgDelayed(TalkLobby.HANDLERMSG.ENABLE_OPENDOOR_BTN, 0, 0, null, 2000);
                 send_start_talking_request(RemoteIDInfo.strIP);
                 //MainActivity.mCallController.acceptMoIPCall(false);
                 MainActivity.mCallController.mCallInfo.setCallOwner(eCallOwner);
@@ -1095,6 +1107,7 @@ public class TalkFront extends WpadScreen implements CallEventListener, MainEven
             if (MainActivity.mCallController.mCallInfo.getFRONT() == CALLSTATUS.CALLED || MainActivity.mCallController.mCallInfo.getFRONT() == CALLSTATUS.CALLING) {
                 Global.stopMelodyRepeat();
 //                Global.changeVolumeMoIPMode(CALLTYPE.NONE);
+
                 if (!send_lobby_open_request(RemoteIDInfo.strIP)) {
                     MainActivity.mSound.Play(SND.setting.RETRY_ACTION);
                 }
@@ -1515,6 +1528,8 @@ public class TalkFront extends WpadScreen implements CallEventListener, MainEven
         LOG_INFO("[send_lobby_open_request] strTargetIP [" + strTargetIP + "]");
         MainActivity.mCallController.setTalkPath(CALLPATH.NORMAL);
         nCurrentMicGain = MainActivity.mIOInterface.getMICGain();
+
+        ((MainActivity) mContext).Device_DoorOpen(19); //16 address start
         try {
             bSentiMAP = true;
             Request_lobby_open lobby_open = new Request_lobby_open(mContext);
@@ -1934,6 +1949,14 @@ public class TalkFront extends WpadScreen implements CallEventListener, MainEven
             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");
+                }
             }
         } catch (RuntimeException re) {
             LogUtil.errorLogInfo("", TAG, re);

+ 27 - 0
WallPadCall/src/main/java/kr/co/icontrols/wallpadcall/screen/TalkLobby.java

@@ -57,6 +57,7 @@ import kr.co.icontrols.wallpadcall.imap.Request_lobby_capture;
 import kr.co.icontrols.wallpadcall.imap.Request_lobby_open;
 import kr.co.icontrols.wallpadcall.imap.Request_start_talking;
 import kr.co.icontrols.wallpadcall.imap.Request_stop_talking;
+import kr.co.icontrols.wallpadsupport.Version;
 import kr.co.icontrols.wallpadsupport.WpadImageView;
 import kr.co.icontrols.wallpadsupport.WpadImageView.TOUCH_KIND;
 import kr.co.icontrols.wallpadsupport.WpadScale;
@@ -971,6 +972,11 @@ public class TalkLobby extends WpadScreen implements CallEventListener, MainEven
         try {
             LOG_INFO("[doTalk] eCallOwner [" + eCallOwner + "], nSelectedFilter [" + nSelectedFilter + "]" + "RemoteIDInfo.strIP [" + RemoteIDInfo.strIP + "]");
             if (MainActivity.mCallController.mCallInfo.getLOBBY() == CALLSTATUS.CALLED) {
+                enableEndBTN(false);
+                enableOpenDoorBTN(false);
+                sendHandlerMsgDelayed(HANDLERMSG.ENABLE_END_BTN, 0, 0, null, 2000);
+                sendHandlerMsgDelayed(HANDLERMSG.ENABLE_OPENDOOR_BTN, 0, 0, null, 2000); // 멀티콜 수락시 통화버튼 활성화 안함
+
                 send_start_talking_request(RemoteIDInfo.strIP);
                //MainActivity.mCallController.acceptMoIPCall(false);
                 MainActivity.mCallController.mCallInfo.setCallOwner(eCallOwner);
@@ -1463,6 +1469,8 @@ public class TalkLobby extends WpadScreen implements CallEventListener, MainEven
         LOG_INFO("[send_lobby_open_request] strTargetIP [" + strTargetIP + "]");
         MainActivity.mCallController.setTalkPath(CALLPATH.NORMAL);
         nCurrentMicGain = MainActivity.mIOInterface.getMICGain();
+
+        //((MainActivity) mContext).Device_DoorOpen(19); //16 start
         try {
             bSentiMAP = true;
             Request_lobby_open lobby_open = new Request_lobby_open(mContext);
@@ -1880,6 +1888,16 @@ public class TalkLobby extends WpadScreen implements CallEventListener, MainEven
             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");
+                }
+
             }
         } catch (RuntimeException re) {
             LogUtil.errorLogInfo("", TAG, re);
@@ -2133,6 +2151,15 @@ 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");
+                    }
+
                     break;
 
                 case HANDLERMSG.SEND_BROADCAST_FILTER:

+ 49 - 0
WallPadCall/src/main/java/kr/co/icontrols/wallpadcall/screen/TalkResidence.java

@@ -2619,6 +2619,55 @@ public class TalkResidence extends WpadScreen implements CallEventListener, Main
         try {
             LOG("[ctrlWallPadMoIPVolume] nValue [" + nValue + "]");
             Global.setV40WallPadVolume_RESIDENCE(nCurrentVolume);
+
+            int nRemoteNum = -1;
+            int nDeviceNm = -1;
+            String sVol = "0x0000";
+
+            for(int i = 0; i < strEndIP.length; i++)
+            {
+                if (ConfigValues.strDeviceIPaddress.equals(strEndIP[i])) {
+                    nDeviceNm = i; //0 1 2
+                    //break;
+                }
+                else if (RemoteIDInfo.strIP.equals(strEndIP[i])) {
+                    nRemoteNum = i; //3 4 5 6
+                    //break;
+                }
+            }
+
+            if (nDeviceNm > -1 && nDeviceNm < 3)
+            {
+                if (nRemoteNum > -1 && nRemoteNum < 3)
+                {
+                    sVol = "0x0170";
+                }
+                else if (nRemoteNum > 2 && nRemoteNum < 7)
+                {
+                    sVol = "0x0300";
+                }
+                else
+                    sVol = "0x0300";
+
+            }
+            else if (nDeviceNm > 2 && nDeviceNm < 7)
+            {
+                if (nRemoteNum > -1 && nRemoteNum < 3)
+                {
+                    sVol = "0x0300";
+                }
+                else if (nRemoteNum > 2 && nRemoteNum < 7)
+                {
+                    sVol = "0x0300";
+                }
+                else
+                    sVol = "0x0300";
+            }
+            else
+                sVol = "0x0300";
+
+            Global.setV40WallPadMicGain(sVol);
+
         } catch (RuntimeException re) {
             LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {

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


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