From eef9304b647a4bd2ca8b19347fefe2a5bc7880cc Mon Sep 17 00:00:00 2001
From: juvancic <juvancic@sintesio.org>
Date: Tue, 30 May 2023 17:28:38 +0200
Subject: [PATCH] added emergency config parameters/intefcaes

---
 ttcn/LibIot/LibIot_VxLTE_Functions.ttcn | 178 ++++++++++++++++++------
 1 file changed, 133 insertions(+), 45 deletions(-)

diff --git a/ttcn/LibIot/LibIot_VxLTE_Functions.ttcn b/ttcn/LibIot/LibIot_VxLTE_Functions.ttcn
index 77bbff2..2a0754e 100644
--- a/ttcn/LibIot/LibIot_VxLTE_Functions.ttcn
+++ b/ttcn/LibIot/LibIot_VxLTE_Functions.ttcn
@@ -1,23 +1,35 @@
 /*
- *	@author        STF	574
- *	@version        $Id: LibIot_VxLTE_Functions.ttcn	1	2020-05-29 15:06:42Z pintar	$
- *	@desc        This module	provides Functions parameters	which	need to	be 
- *            	changeable within	validation
+ *    @author        STF    574
+ *    @version        $Id: LibIot_VxLTE_Functions.ttcn    1    2020-05-29 15:06:42Z pintar    $
+ *    @desc        This module    provides Functions parameters    which    need to    be 
+ *                changeable within    validation
  */
 
 module LibIot_VxLTE_Functions     {
  
-    import from LibIot_TypesAndValues
-    {
-        type IOTExecMode,	IotVerdictType,	CaptureMode, RecordMode, FileList, TimeOffset, EutInterfaceInfoList,
-        ProtocolFilter,	IpAddress, PortNumber, ProductList, InterfaceAvailable, InterfaceAvailableList,MonitorInterfaceInfo,
-        VxLTEMonitorInterfaceList;
-	}
-	import from AtsImsIot_Templates {
-        template	/*m_generalConfigurationReq_offline, m_generalConfigurationReq_online, m_generalConfigurationReq_merge,
-                    m_generalConfigurationRsp_success, m_generalConfigurationRsp_error, m_generalConfigurationRsp_timeout,*/
-                    m_SetFilterReq/*, mw_SetFilterRsp, m_startTrafficCaptureReq, m_stopTrafficCaptureReq,
-                    m_startTrafficCaptureRsp_any, m_stopTrafficCaptureRsp_any*/; 
+    import from LibIot_TypesAndValues {
+        type
+            IOTExecMode,
+            IotVerdictType,
+            CaptureMode,
+            RecordMode,
+            FileList,
+            TimeOffset,
+            EutInterfaceInfoList,
+            ProtocolFilter,
+            IpAddress,
+            PortNumber,
+            ProductList,
+            InterfaceAvailable,
+            InterfaceAvailableList,
+            MonitorInterfaceInfo,
+            VxLTEMonitorInterfaceList;
+    }
+    import from AtsImsIot_Templates {
+        template /*m_generalConfigurationReq_offline, m_generalConfigurationReq_online, m_generalConfigurationReq_merge,
+                        m_generalConfigurationRsp_success, m_generalConfigurationRsp_error, m_generalConfigurationRsp_timeout,*/
+            m_SetFilterReq /*, mw_SetFilterRsp, m_startTrafficCaptureReq, m_stopTrafficCaptureReq,
+                        m_startTrafficCaptureRsp_any, m_stopTrafficCaptureRsp_any*/;
     }
     import from LibIot_VxLTE_PIXITS all;
     import from LibIot_VxLTE_Templates all;
@@ -28,9 +40,9 @@ module LibIot_VxLTE_Functions     {
     type record of charstring InterfaceNamesList;
     group ConfigurationFunctions{
         /**
-        * @desc 	Check and create a list of monitor interfaces based on PIXITS
-        * @param 	 
-        * @return 	the created monitor component list in vc_MonIntfList
+        * @desc     Check and create a list of monitor interfaces based on PIXITS
+        * @param      
+        * @return     the created monitor component list in vc_MonIntfList
         */
         function f_setVxLteMonIterfacesAvailability(/*inout VxLTEMonitorInterfaceList p_vxlteMonIntfList*/)runs on ImsTestCoordinator{
             
@@ -42,6 +54,9 @@ module LibIot_VxLTE_Functions     {
             if (PX_SIP_GMB_MONITORENABLED == true){
                 vc_MonIntfList.gmB := valueof(m_MonIntf_Sip_Gm_B);
             }
+            if (PX_SIP_MW_PSAP_MONITORENABLED == true){
+                vc_MonIntfList.mwPSAP := valueof(m_MonIntf_Sip_Mw_PSAP);
+            }
             if (PX_SIP_IC_MONITORENABLED == true){
                 vc_MonIntfList.ic := valueof(m_MonIntf_Sip_Ic);
             }
@@ -51,6 +66,9 @@ module LibIot_VxLTE_Functions     {
             if (PX_SIP_MW_PS_MONITORENABLED == true){
                 vc_MonIntfList.mwPS := valueof(m_MonIntf_Sip_Mw_PS);
             }
+            if (PX_SIP_MW_PE_MONITORENABLED == true){
+                vc_MonIntfList.mwPE := valueof(m_MonIntf_Sip_Mw_PE);
+            }
             if (PX_SIP_MW_IS_MONITORENABLED == true){
                 vc_MonIntfList.mwIS := valueof(m_MonIntf_Sip_Mw_IS);
             }
@@ -60,12 +78,14 @@ module LibIot_VxLTE_Functions     {
             if (PX_SIP_MW_IB_MONITORENABLED == true){
                 vc_MonIntfList.mwIB := valueof(m_MonIntf_Sip_Mw_IB);
             }
+            if (PX_SIP_MW_IE_MONITORENABLED == true){
+                vc_MonIntfList.mwIE := valueof(m_MonIntf_Sip_Mw_IE);
+            }
             if (PX_SIP_ISC_MONITORENABLED == true){
                 vc_MonIntfList.isc := valueof(m_MonIntf_Sip_ISC);
             }
     
     
-    
             if (PX_DIAMETER_CX_IH_MONITORENABLED == true){
                 vc_MonIntfList.cxIH := valueof(m_MonIntf_Diameter_Cx_IH);
             }
@@ -86,14 +106,14 @@ module LibIot_VxLTE_Functions     {
             }
             if (PX_DIAMETER_SH_MONITORENABLED == true){
                 vc_MonIntfList.sh := valueof(m_MonIntf_Diameter_Sh);
-            }	
+            }    
             
         }
         
         /**
-        * @desc 	Create monitor components based on vc_MonIntfList
-        * @param 	 
-        * @return 	the created monitor components in vc_vxlte_monitor_components
+        * @desc     Create monitor components based on vc_MonIntfList
+        * @param      
+        * @return     the created monitor components in vc_vxlte_monitor_components
         */
         function f_cf_createVxLteMonitor() runs on ImsTestCoordinator{
             
@@ -104,6 +124,9 @@ module LibIot_VxLTE_Functions     {
                 vc_vxlte_monitor_components.gmB := f_cf_create_monitor_sip ( vc_MonIntfList.gmB);
             }
             
+            if (isvalue(vc_MonIntfList.mwPSAP)){
+                vc_vxlte_monitor_components.mwPSAP := f_cf_create_monitor_sip ( vc_MonIntfList.mwPSAP);
+            }
             if (isvalue(vc_MonIntfList.ic)){
                 vc_vxlte_monitor_components.ic := f_cf_create_monitor_sip ( vc_MonIntfList.ic);
             }
@@ -114,6 +137,9 @@ module LibIot_VxLTE_Functions     {
             if (isvalue(vc_MonIntfList.mwPS)){
                 vc_vxlte_monitor_components.mwPS := f_cf_create_monitor_sip ( vc_MonIntfList.mwPS);
             }
+            if (isvalue(vc_MonIntfList.mwPE)){
+                vc_vxlte_monitor_components.mwPE := f_cf_create_monitor_sip ( vc_MonIntfList.mwPE);
+            }
             if (isvalue(vc_MonIntfList.mwIS)){
                 vc_vxlte_monitor_components.mwIS := f_cf_create_monitor_sip ( vc_MonIntfList.mwIS);
             }
@@ -123,6 +149,9 @@ module LibIot_VxLTE_Functions     {
             if (isvalue(vc_MonIntfList.mwIB)){
                 vc_vxlte_monitor_components.mwIB := f_cf_create_monitor_sip ( vc_MonIntfList.mwIB);
             }
+            if (isvalue(vc_MonIntfList.mwIE)){
+                vc_vxlte_monitor_components.mwIE := f_cf_create_monitor_sip ( vc_MonIntfList.mwIE);
+            }
             
             if (isvalue(vc_MonIntfList.isc)){
                 vc_vxlte_monitor_components.isc := f_cf_create_monitor_sip ( vc_MonIntfList.isc);
@@ -154,23 +183,23 @@ module LibIot_VxLTE_Functions     {
         }
         
         /**
-        * @desc 	Start monitor components based on vc_MonIntfList
-        * @param 	 
-        * @return 	Created monitor components in vc_vxlte_monitor_components are connected/mapped
+        * @desc     Start monitor components based on vc_MonIntfList
+        * @param      
+        * @return     Created monitor components in vc_vxlte_monitor_components are connected/mapped
         */
         function f_cf_VxLteMonitor_Up() runs on ImsTestCoordinator{
-	        //Initialize the Adapter (including the TrafficCapture process).
+            //Initialize the Adapter (including the TrafficCapture process).
             timer tc_noAct;
             f_cf_initCapture();
             
             if (isvalue(vc_MonIntfList.gmA)){
                 f_cf_monitor_up_sip(vc_vxlte_monitor_components.gmA);
                 vc_vxlte_monitor_components.gmA.start(f_cf_setFilter(
-                                                       	valueof (m_SetFilterReq(
+                                                           valueof (m_SetFilterReq(
                                                                        e_sip,
                                                                        {vc_MonIntfList.gmA.interfaceInfo}
-                                                       	)
-                                                   	 )));
+                                                           )
+                                                        )));
             }
             if (isvalue(vc_MonIntfList.gmB)){
                 f_cf_monitor_up_sip(vc_vxlte_monitor_components.gmB);
@@ -182,6 +211,16 @@ module LibIot_VxLTE_Functions     {
                                                      )));
             }
             
+            if (isvalue(vc_MonIntfList.mwPSAP)){
+                f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwPSAP);
+                vc_vxlte_monitor_components.mwPI.start(f_cf_setFilter(
+                                                        valueof (m_SetFilterReq(
+                                                                    e_sip,
+                                                                    {vc_MonIntfList.mwPSAP.interfaceInfo}
+                                                        )
+                                                     )));
+            }
+                        
             if (isvalue(vc_MonIntfList.ic)){
                 f_cf_monitor_up_sip(vc_vxlte_monitor_components.ic);
                 vc_vxlte_monitor_components.ic.start(f_cf_setFilter(
@@ -210,6 +249,15 @@ module LibIot_VxLTE_Functions     {
                                                         )
                                                      )));
             }
+            if (isvalue(vc_MonIntfList.mwPE)){
+                f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwPE);
+                vc_vxlte_monitor_components.mwPS.start(f_cf_setFilter(
+                                                        valueof (m_SetFilterReq(
+                                                                    e_sip,
+                                                                    {vc_MonIntfList.mwPE.interfaceInfo}
+                                                        )
+                                                     )));
+            }
             if (isvalue(vc_MonIntfList.mwIS)){
                 f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwIS);
                 vc_vxlte_monitor_components.mwIS.start(f_cf_setFilter(
@@ -237,6 +285,15 @@ module LibIot_VxLTE_Functions     {
                                                         )
                                                      )));
             }
+            if (isvalue(vc_MonIntfList.mwIE)){
+                f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwIE);
+                vc_vxlte_monitor_components.mwPS.start(f_cf_setFilter(
+                                                        valueof (m_SetFilterReq(
+                                                                    e_sip,
+                                                                    {vc_MonIntfList.mwIE.interfaceInfo}
+                                                        )
+                                                     )));
+            }
             
             if (isvalue(vc_MonIntfList.isc)){
                 f_cf_monitor_up_sip(vc_vxlte_monitor_components.isc);
@@ -323,9 +380,9 @@ module LibIot_VxLTE_Functions     {
         }
         
         /**
-        * @desc 	Stops monitor components based on vc_MonIntfList
-        * @param 	 
-        * @return 	Created monitor components in vc_vxlte_monitor_components are disconnected/unmapped
+        * @desc     Stops monitor components based on vc_MonIntfList
+        * @param      
+        * @return     Created monitor components in vc_vxlte_monitor_components are disconnected/unmapped
         */
         function f_cf_VxLteMonitor_Down() runs on ImsTestCoordinator{
             //Stop traffic capture processing.
@@ -337,7 +394,9 @@ module LibIot_VxLTE_Functions     {
             if (isvalue(vc_MonIntfList.gmB)){
                 f_cf_monitor_down_sip(vc_vxlte_monitor_components.gmB);
             }
-        
+            if (isvalue(vc_MonIntfList.mwPSAP)){
+                f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwPSAP);
+            }
             if (isvalue(vc_MonIntfList.ic)){
                 f_cf_monitor_down_sip(vc_vxlte_monitor_components.ic);
             }
@@ -348,6 +407,9 @@ module LibIot_VxLTE_Functions     {
             if (isvalue(vc_MonIntfList.mwPS)){
                 f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwPS);
             }
+            if (isvalue(vc_MonIntfList.mwPE)){
+                f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwPE);
+            }
             if (isvalue(vc_MonIntfList.mwIS)){
                 f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwIS);
             }
@@ -357,6 +419,9 @@ module LibIot_VxLTE_Functions     {
             if (isvalue(vc_MonIntfList.mwIB)){
                 f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwIB);
             }
+            if (isvalue(vc_MonIntfList.mwIE)){
+                f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwIE);
+            }
         
             if (isvalue(vc_MonIntfList.isc)){
                 f_cf_monitor_down_sip(vc_vxlte_monitor_components.isc);
@@ -413,23 +478,26 @@ module LibIot_VxLTE_Functions     {
         
         /**
         * @desc     Check monitor component based on interface name
-        * @param 	 
-        * @return 	true - Monitorinteface available/active
+        * @param      
+        * @return     true - Monitorinteface available/active
         *             false - Monitorinteface not exists or not available/active
         */
         function f_SipMonitorInterface_available(charstring p_interfaceName) runs on ImsTestCoordinator return boolean{
 
 //            if (vc_vxlte_monitor_components.gmA.vc_interfacename) {return true;}
             if ((isvalue(vc_MonIntfList.gmA))  and (vc_MonIntfList.gmA.interfaceName==p_interfaceName)){ return true;}
-            if ((isvalue(vc_MonIntfList.gmB))  and (vc_MonIntfList.gmB.interfaceName==p_interfaceName)){ return true;}
+            //if ((isvalue(vc_MonIntfList.gmB))  and (vc_MonIntfList.gmB.interfaceName==p_interfaceName)){ return true;}
 
+            if ((isvalue(vc_MonIntfList.mwPSAP)) and (vc_MonIntfList.mwPSAP.interfaceName==p_interfaceName)){ return true;}
             if ((isvalue(vc_MonIntfList.ic))   and (vc_MonIntfList.ic.interfaceName==p_interfaceName)){ return true;}
 
             if ((isvalue(vc_MonIntfList.mwPI)) and (vc_MonIntfList.mwPI.interfaceName==p_interfaceName)){ return true;}
             if ((isvalue(vc_MonIntfList.mwPS)) and (vc_MonIntfList.mwPS.interfaceName==p_interfaceName)){ return true;}
+            if ((isvalue(vc_MonIntfList.mwPE)) and (vc_MonIntfList.mwPE.interfaceName==p_interfaceName)){ return true;}
             if ((isvalue(vc_MonIntfList.mwIS)) and (vc_MonIntfList.mwIS.interfaceName==p_interfaceName)){ return true;}
             if ((isvalue(vc_MonIntfList.mwPB)) and (vc_MonIntfList.mwPB.interfaceName==p_interfaceName)){ return true;}
             if ((isvalue(vc_MonIntfList.mwIB)) and (vc_MonIntfList.mwIB.interfaceName==p_interfaceName)){ return true;}
+            if ((isvalue(vc_MonIntfList.mwIE)) and (vc_MonIntfList.mwIE.interfaceName==p_interfaceName)){ return true;}
 
             if ((isvalue(vc_MonIntfList.isc))  and (vc_MonIntfList.isc.interfaceName==p_interfaceName)){ return true;}
                     
@@ -437,9 +505,9 @@ module LibIot_VxLTE_Functions     {
         }
         
         /**
-        * @desc 	Check monitor component based on interface name
-        * @param 	 
-        * @return 	true - Monitorinteface available/active
+        * @desc     Check monitor component based on interface name
+        * @param      
+        * @return     true - Monitorinteface available/active
         *             false - Monitorinteface not exists or not available/active
         */
         function f_DiameterMonitorInterface_available(charstring p_interfaceName) runs on ImsTestCoordinator return boolean{
@@ -463,7 +531,7 @@ module LibIot_VxLTE_Functions     {
         
         var InterfaceAvailableList v_VxLTE_MonIntf_Available;
         var InterfaceAvailable v_InterfaceAvailable;
-        var SipInterfaceMonitor v_gmA, v_gmB, v_ic, v_mwPI, v_mwPS, v_mwSI, v_mwPB, v_mwIB, v_isc;
+        var SipInterfaceMonitor v_gmA, v_gmB, v_mwPSAP, v_ic, v_mwPI, v_mwPS, v_mwPE, v_mwSI, v_mwPB, v_mwIB, v_mwIE, v_isc;
         var DiameterInterfaceMonitor v_cxIH, v_cxSH, v_gx, v_rx, v_s6a, v_s9, v_sh;
         
         if (PX_SIP_GMA_MONITORENABLED == true){
@@ -477,9 +545,17 @@ module LibIot_VxLTE_Functions     {
             v_InterfaceAvailable.interfaceName := PX_SIP_GMB_INTERFACENAME; 
             v_InterfaceAvailable.available := PX_SIP_GMB_MONITORENABLED;
             v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable);
-            v_gmB := f_cf_create_monitor_sip (  valueof(m_MonIntf_Sip_Gm_B)/*PX_SIP_GMB_INTERFACENAME*/ );
+            v_gmB := f_cf_create_monitor_sip (  valueof(m_MonIntf_Sip_Gm_B)/*PX_SIP_GMB_INTERFACENAME*/);
             f_cf_monitor_up_sip(v_gmB);
         }
+        if (PX_SIP_MW_PSAP_MONITORENABLED == true){
+            
+            v_InterfaceAvailable.interfaceName := PX_SIP_MW_PSAP_INTERFACENAME; 
+            v_InterfaceAvailable.available := PX_SIP_MW_PSAP_MONITORENABLED;
+            v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable);
+            v_mwPSAP := f_cf_create_monitor_sip (  valueof(m_MonIntf_Sip_Mw_PSAP)/*PX_SIP_MW_PSAP_INTERFACENAME*/ );
+            f_cf_monitor_up_sip(v_mwPSAP);
+        }
         if (PX_SIP_IC_MONITORENABLED == true){
             v_InterfaceAvailable.interfaceName := PX_SIP_IC_INTERFACENAME; 
             v_InterfaceAvailable.available := PX_SIP_IC_MONITORENABLED;
@@ -502,6 +578,13 @@ module LibIot_VxLTE_Functions     {
             v_mwPS := f_cf_create_monitor_sip ( valueof(m_MonIntf_Sip_Mw_PS)/*PX_SIP_MW_PS_INTERFACENAME*/ );
             f_cf_monitor_up_sip(v_mwPS);
         }
+        if (PX_SIP_MW_PE_MONITORENABLED == true){
+            v_InterfaceAvailable.interfaceName := PX_SIP_MW_PE_INTERFACENAME; 
+            v_InterfaceAvailable.available := PX_SIP_MW_PE_MONITORENABLED;
+            v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable);
+            v_mwPE := f_cf_create_monitor_sip ( valueof(m_MonIntf_Sip_Mw_PE)/*PX_SIP_MW_PE_INTERFACENAME*/ );
+            f_cf_monitor_up_sip(v_mwPE);
+        }
         if (PX_SIP_MW_IS_MONITORENABLED == true){
             v_InterfaceAvailable.interfaceName := PX_SIP_MW_IS_INTERFACENAME; 
             v_InterfaceAvailable.available := PX_SIP_MW_IS_MONITORENABLED;
@@ -530,8 +613,13 @@ module LibIot_VxLTE_Functions     {
             v_isc := f_cf_create_monitor_sip ( valueof(m_MonIntf_Sip_ISC)/*PX_SIP_ISC_INTERFACENAME*/ );
             f_cf_monitor_up_sip(v_isc);
         }
-        
-        
+        if (PX_SIP_MW_IE_MONITORENABLED == true){
+            v_InterfaceAvailable.interfaceName := PX_SIP_MW_IE_INTERFACENAME; 
+            v_InterfaceAvailable.available := PX_SIP_MW_IE_MONITORENABLED;
+            v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable);
+            v_mwIE := f_cf_create_monitor_sip ( valueof(m_MonIntf_Sip_Mw_IE)/*PX_SIP_MW_IE_INTERFACENAME*/ );
+            f_cf_monitor_up_sip(v_mwIE);
+        }
         
         if (PX_DIAMETER_CX_IH_MONITORENABLED == true){
             v_InterfaceAvailable.interfaceName := PX_DIAMETER_CX_IH_INTERFACENAME; 
@@ -581,7 +669,7 @@ module LibIot_VxLTE_Functions     {
             v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable);
             v_sh := f_cf_create_monitor_diameter (  valueof(m_MonIntf_Diameter_Sh)/*PX_DIAMETER_SH_INTERFACENAME*/ );
             f_cf_monitor_up_diameter(v_sh);
-        }	
+        }    
     }
     
     function f_update_MonitorInterfaceList(
-- 
GitLab