LibItsFsap_Functions.ttcn3 9.41 KB
Newer Older
garciay's avatar
garciay committed
/**
 *  @author     ETSI / STF422_EETS
 *  @version    $URL:$
 *              $Id:$
 *  @desc       Fast service advertisement protocol (ISO 24102-5) functions
 */
module LibItsFsap_Functions {
    
    // Libcommon
    import from LibCommon_Sync all;
    import from LibCommon_Time {
        function f_sleepIgnoreDef
    };
    
    // LibIts
    import from CALMmanagement language "ASN.1:1997" {
        type
            ITS_scuId//, ApplicationID, 
    };
    import from CALMfsap language "ASN.1:1997" {
        type
            GCschedule, ServiceDataReg
    };
    import from CALMmsap language "ASN.1:1997" {
        type CommandRef
    };
    import from LibItsFntp_TypesAndValues {
        const c_portNon
    };
    import from LibItsMgt_Templates all;
    import from LibItsMgt_Functions all;
    import from LibItsFsap_TypesAndValues all;
    import from LibItsFsap_Templates all;
    import from LibItsFsap_Pixits all;
    import from LibItsFsap_Pics all;
    import from LibItsCommon_Functions {
        function
            f_utInitializeIut, f_utCommandRequest
    };
    import from LibItsFntp_Templates all;
    import from LibIts_Interface {
        type 
            ItsMgt, ItsAdapterComponent 
    }; 
    
    group fsapConfigurationFunctions {
        
        /**
         * @desc This configuration features:
         * <li>Host and Router are separated (see ISO/WD 24102-3 - Figure 1 - Implementation architecture II & III)</li>
         * <li>MGT1 IISC Port (IISC/LAN) is used if specified</li>
         * @param p_iicpMGM Set to true if IISC port shall be used
         */
        function f_cf01Up(in boolean p_iicpMGM) runs on ItsMgt {
            
            // Sanity check
            // FIXME Check control to be done here
//            if (not(PICS_ITS_S_INW)) {
//                log("*** f_cf01Up: ERROR: PICS_ITS_S_INW required for executing the TC ***");
//                stop;
//            }
            
            // Map
            map(self:acPort, system:acPort);
            map(self:utPort, system:utPort);
            map(self:mgtMNSapPort, system:mgtMNSapPort);
            if (p_iicpMGM == true) {
                map(self:iiscPort, system:iiscPort);
            }
            
            // Connect
            f_connect4SelfOrClientSync();
            
            // Set processing on shutdown
            activate(a_cf01Down(p_iicpMGM));
            
            // Initialize the component
            f_initialiseComponent("cf01Up");

            // Initialze the IUT
            f_initialState();
            
        } // End of function f_cf01Up
        
        function f_cf01Down(in boolean p_iicpMGM) runs on ItsMgt {
            
            deactivate;
            
            // Unmap
            unmap(self:acPort, system:acPort);
            unmap(self:utPort, system:utPort);
            unmap(self:mgtMNSapPort, system:mgtMNSapPort);
            if (p_iicpMGM == true) {
                unmap(self:iiscPort, system:iiscPort); // FIXME To be removed
            }
            
            // Disconnect
            f_disconnect4SelfOrClientSync();
            
        } // end f_cf01Down
        
        /**
         * @desc    Behavior function for initializing component's variables and tables
         * @param   p_componentName Name of the component
         */
        function f_initialiseComponent(in charstring p_componentName) runs on ItsMgt {
            
            // Initialize variables
//            vc_componentName := p_componentName;
//            vc_portNumber := { portLong := c_portNon };
//            vc_scuId := 255;
            
            // Set defaults
            //activate(a_fsapDefault()); // FIXME Default for Fsap module
            activate(a_mgtMFSapPortDefault()); // Default for MGT module / MF-SAP port
            if (PICS_ITS_S_INW == true) { // FIXME Use a function
                activate(a_iiscDefault()); // Default for Iisc module
            }
            
        } // end f_initialiseComponent
        
    } // End of group fsapConfigurationFunctions
    
    group preambles {
        
        /**
         * @desc Brings the IUT into an initial state.
         */
        function f_initialState() {
            f_utInitializeIut(m_fsapInitialize);
            f_sleepIgnoreDef(2.0); // Wait until the IUT is in a stable situation (beaconing...)
        } // End of function f_initialState
        
    } // End of group preambles
    
    group postambles {
        
        /**
         * @desc The default postamble.
         */
        function f_poDefault() runs on ItsMgt {
            //empty
        }
        
    } // End of group postambles
    
    group adapterControl {
        
        /**
         * @desc    Triggers event in the test system adaptation via NF-SAP interface.
         * @param   p_event The event to trigger
         */
        function f_acTriggerEvent(template (value) AcFsapPrimitive p_event) runs on ItsAdapterComponent {
            acPort.send(p_event);
        }
        
    } // End of group adapterControl
    
    group testerFunctions {
        
    } // End of group testerFunctions
    
//    group mfSapFunctions {
//        
//        /**
//         * @desc    Generate a correctly formatted GCctxTxCmd message via IN-SAP interface
//         * @param   p_commandRef  Unique cyclic reference number of command. Same value as in related MN-REQUEST.request
//          * @verdict Unchanged
//         */
//        function f_mfSapGenerateGCregServer(in CommandRef p_commandRef) runs on ItsMgt {
//            f_mgtGenerateGCregServer(
//                p_commandRef, 
//                m_gCregServer(
//                    f_getIutApplicationID(), 
//                    f_getIutGCschedule(),
//                    PX_USER_PRIORITY,
//                    f_getIutServiceDataReg()
//                )
//            );
//        }
//        
//    } // End of group mfSapFunctions
//    
    group iutFunctions {
        
        /**
         * @desc Gets the Local/source ITS scuID 
         * @return  The Local/source ITS scuID 
         * @see PX_LOCAL_ITS_SCU_ID 
         * @verdict Unchanged 
         * @see ISO/WD 24102-4 - Table 2 — ITS-SCU-ID value assignment
         */
        function f_getIutLocalITSscuId() return ITS_scuId {
            return PX_LOCAL_ITS_SCU_ID;
        }
        
        
        
//        /**
//         * @desc Gets the SAM retransmit timer.
//         * @return  SAM retransmit timer 
//         */
//        function f_getSAMRetransmitTimer() return float {
//            var float v_samRetransmitTimer;
//            
//            v_samRetransmitTimer := int2float(
//                (PICS_SAM_RETRANSMIT_TIMER/1000));
//            
//            return v_samRetransmitTimer;
//        }
//        
//        /**
//         * @desc    Gets the maximum SAM jitter.
//         * @return  Maximum SAM jitter
//         */
//        function f_getSAMMaxJitter() return float {
//            var float v_samRetransmitTimerMaxJitter := int2float(PICS_SAM_RETRANSMIT_TIMER)/1000.0;
//            
//            return v_samRetransmitTimerMaxJitter;
//        }
//        
//        /**
//         * @desc    TODO
//         * @return  TODO
//         * @verdict TODO
//         */
//        function f_getIutApplicationID() return ApplicationID {
//            return PX_APPLICATION_ID_1;
//        }
//        
//        /**
//         * @desc    TODO
//         * @return  TODO
//         * @verdict TODO
//         */
//        function f_getIutGCschedule() return GCschedule {
//            return { PX_GSCHED_1_0, PX_GSCHED_1_1 };
//        }
//        
//        /**
//         * @desc    TODO
//         * @return  TODO
//         * @verdict TODO
//         */
//        function f_getIutServiceDataReg() return ServiceDataReg {
//            return PX_SERVICE_DATA_REG_1;
//        }
//        
    } // End of group iutFunctions
    
    group fsapAltsteps {
        
        /**
         * @desc The base default.
         */
        altstep a_fsapDefault() runs on ItsMgt {
            [] tc_wait.timeout {
                log("*** a_fsapDefault: ERROR: Timeout while awaiting reaction of the IUT prior to Upper Tester action ***");
                f_selfOrClientSyncAndVerdict("error", e_timeout);
            }
            [] tc_ac.timeout {
                log("*** a_fsapDefault: ERROR: Timeout while awaiting the reception of a message ***");
                f_selfOrClientSyncAndVerdict("error", e_timeout);
            }
            [] any timer.timeout {
                log("*** a_fsapDefault: INCONC: An unknown timer has expired in default ***"); 
                f_selfOrClientSyncAndVerdict("error", e_timeout);
            }
            [] a_shutdown() {
                f_poDefault();
                log("*** a_fsapDefault: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***");
                if(self == mtc) {
                    f_cf01Down(PICS_IICP_MGM);
                }
                stop;
            }
        } // End of altstep a_fsapDefault()
        
        /**
         * @desc Default handling cf01 de-initialisation.
         * @param   TODO
         */
        altstep a_cf01Down(in boolean p_iicpMGM) runs on ItsMgt {
            [] a_shutdown() {
                f_poDefault();
                f_cf01Down(p_iicpMGM);
                log("*** a_cf01Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***");
                stop;
            }
        } // End of altstep a_cf01Down()
        
    } // End of group fsapAltsteps
    
} // End of module LibItsFsap_Functions