ItsSpatem_TpFunctions.ttcn 55 KB
Newer Older
Yann Garcia's avatar
Yann Garcia committed
 *    @version  $Url: https://oldforge.etsi.org/svn/ITS/tags/20170222_STF527_Final/ttcn/AtsMapemSpatem/ItsSpatem_TpFunctions.ttcn $
 *              $Id: ItsSpatem_TpFunctions.ttcn,v 1.4 2018/12/06 17:59:36 dte Exp $
garciay's avatar
garciay committed
 *    @copyright   ETSI Copyright Notification
 *                 No part may be reproduced except as authorized by written permission.
 *                 The copyright and the foregoing restriction extend to reproduction in all media.
 *                 All rights reserved.
 *
 */

module ItsSpatem_TpFunctions {
    
    // LibCommon
    import from LibCommon_BasicTypesAndValues all;
    import from LibCommon_Sync all;
    import from LibCommon_VerdictControl all;
    import from LibCommon_Time all;
    
    // LibItsCommon
    import from LibItsCommon_Functions all;
    import from LibItsCommon_TypesAndValues all;
    
    // LibIts
    import from ITS_Container language "ASN.1:1997" all;
    import from MAPEM_PDU_Descriptions language "ASN.1:1997" all;
    import from SPATEM_PDU_Descriptions language "ASN.1:1997" all;
    import from DSRC language "ASN.1:1997" all;
    
    // LibItsMapemSpatem
    import from LibItsMapemSpatem_TestSystem all;
    import from LibItsMapemSpatem_Functions all;
    import from LibItsMapemSpatem_Templates all;
    import from LibItsMapemSpatem_TypesAndValues all;
    import from LibItsMapemSpatem_Pics all;
    
    group spateMessageDissemination { 
        
        group spateMessageFormat { 
            
            /**
             * @desc    TP Function for TC_IS_TLM_GEN_MSGF_BV_01
            function f_IS_TLM_GEN_MSGF_BV_01 () runs on ItsMapemSpatem {
garciay's avatar
garciay committed
                if (not PICS_SPATEM_GENERATION) {
                    log("*** " & testcasename() & ": PICS_SPATEM_GENERATION required for executing the TC ***");
                    setverdict(inconc);
                    stop;
                }
                
                // Test component configuration
                f_cfUp();
                    
                // Preamble
garciay's avatar
garciay committed
                f_prInitialState();
                f_utTriggerEvent(m_utTriggerEvent(startTLMService));
garciay's avatar
garciay committed
                // Wait for SPATEM sent
                tc_ac.start(2.0);
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                    
                // Test Body
                tc_ac.start;
                alt {
                    [] mapemSpatemPort.receive(
                        mw_spatemInd(
                            mw_spatemPdu
                    )) { 
                        tc_ac.stop;
                        log("*** " & testcasename() & ": PASS: Successfully received SAPTEM PDU header. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                    }
                    [] tc_ac.timeout {
                        log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                    }
                }
                
                // Postamble
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
                f_poDefault();
                f_cfDown();
                
            } // End of function f_IS_TLM_GEN_MSGF_BV_01
            
            /**
             * @desc    TP Function for TC_IS_TLM_GEN_MSGF_BV_02
             */
            function f_IS_TLM_GEN_MSGF_BV_02 () runs on ItsMapemSpatem {
                
                // Local variables
                
                // Test control
                if (not PICS_SPATEM_GENERATION) {
                    log("*** " & testcasename() & ": PICS_SPATEM_GENERATION required for executing the TC ***");
                    setverdict(inconc);
                    stop;
                }
                
                // Test component configuration
                f_cfUp();
                    
                // Preamble
                f_prInitialState();
                f_utTriggerEvent(m_utTriggerEvent(startTLMService));
                // Wait for SPATEM sent
                tc_ac.start(2.0);
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                    
                // Test Body
                tc_ac.start;
                alt {
                    [] mapemSpatemPort.receive(
                        mw_spatemInd(
                            mw_spatemPdu(
                                mw_spatem_intersections(
                                    {mw_IntersectionState(
                                        ?, //IntersectionReferenceID p_id
                                        -, //MsgCount p_revision
                                        -, //IntersectionStatusObject p_status
                                        -  //MovementList p_states
                                    )}
                                )
                            )
                    )) { 
                        tc_ac.stop;
                        log("*** " & testcasename() & ": PASS: Successfully received SAPTEM PDU header. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                    }
                    [] tc_ac.timeout {
                        log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                    }
                }
                
                // Postamble
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
                f_poDefault();
                f_cfDown();
                
            } // End of function f_IS_TLM_GEN_MSGF_BV_02
            
            /**
             * @desc    TP Function for TC_IS_TLM_GEN_MSGF_BV_03
             */
            function f_IS_TLM_GEN_MSGF_BV_03 () runs on ItsMapemSpatem {
                
                // Local variables
                
                // Test control
                if (not PICS_SPATEM_GENERATION) {
                    log("*** " & testcasename() & ": PICS_SPATEM_GENERATION required for executing the TC ***");
                    setverdict(inconc);
                    stop;
                }
                
                // Test component configuration
                f_cfUp();
                    
                // Preamble
                f_prInitialState();
                f_utTriggerEvent(m_utTriggerEvent(startTLMService));
                // Wait for SPATEM sent
                tc_ac.start(2.0);
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                    
                // Test Body
                tc_ac.start;
                alt {
                    [] mapemSpatemPort.receive(
                        mw_spatemInd(
                            mw_spatemPdu(
                                mw_spatem_intersections(
                                    {mw_IntersectionState(
                                        -, //IntersectionReferenceID p_id
                                        ?, //MsgCount p_revision
                                        -, //IntersectionStatusObject p_status
                                        -  //MovementList p_states
                                    )}
                                )
                            )
                    )) { 
                        tc_ac.stop;
                        log("*** " & testcasename() & ": PASS: Successfully received SAPTEM PDU header. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                    }
                    [] tc_ac.timeout {
                        log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                    }
                }
                
                // Postamble
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
                f_poDefault();
                f_cfDown();
                
            } // End of function f_IS_TLM_GEN_MSGF_BV_03
            
            /**
             * @desc    TP Function for TC_IS_TLM_GEN_MSGF_BV_04
             */
            function f_IS_TLM_GEN_MSGF_BV_04 () runs on ItsMapemSpatem {
                
                // Local variables
                
                // Test control
                if (not PICS_SPATEM_GENERATION) {
                    log("*** " & testcasename() & ": PICS_SPATEM_GENERATION required for executing the TC ***");
                    setverdict(inconc);
                    stop;
                }
                
                // Test component configuration
                f_cfUp();
                    
                // Preamble
                f_prInitialState();
                f_utTriggerEvent(m_utTriggerEvent(startTLMService));
                // Wait for SPATEM sent
                tc_ac.start(2.0);
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                    
                // Test Body
                tc_ac.start;
                alt {
                    [] mapemSpatemPort.receive(
                        mw_spatemInd(
                            mw_spatemPdu(
                                mw_spatem_intersections(
                                    {mw_IntersectionState_moyAndTimeStamp}
                                )
                            )
                    )) { 
                        tc_ac.stop;
                        log("*** " & testcasename() & ": PASS: Successfully received SAPTEM PDU header. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                    }
                    [] tc_ac.timeout {
                        log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                    }
                }
                
                // Postamble
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
                f_poDefault();
                f_cfDown();
                
            } // End of function f_IS_TLM_GEN_MSGF_BV_04
            
            /**
             * @desc    TP Function for TC_IS_TLM_GEN_MSGF_BV_05
             */
            function f_IS_TLM_GEN_MSGF_BV_05 () runs on ItsMtc {
                // Local variables
                var ItsMapemSpatem v_mapem;
                var ItsMapemSpatem v_spatem;
                
                // Test control
                if (not PICS_SPATEM_GENERATION) {
                    log("*** " & testcasename() & ": PICS_SPATEM_GENERATION required for executing the TC ***");
                    setverdict(inconc);
                    stop;
                }
                    
                // Test component configuration
                f_cf02Up();
                
                // Preamble
                
                // Start components
                v_mapem := f_getComponent(c_compMap);
                v_spatem := f_getComponent(c_compSpat);
                v_mapem.start(f_IS_TLM_GEN_MSGF_BV_05_MAPEM());
                v_spatem.start(f_IS_TLM_GEN_MSGF_BV_05_SPATEM());
                
                // Synchronization
                f_serverSync2ClientsAndStop({c_prDone, c_tbDone});
                
                // Cleanup
                f_cf02Down();
                
            } // End of function f_IS_TLM_GEN_MSGF_BV_05
            
            /**
             * @desc    TP Function for TC_IS_TLM_GEN_MSGF_BV_05_SPATEM
             */
            function f_IS_TLM_GEN_MSGF_BV_05_MAPEM () runs on ItsMapemSpatem {
                // Local variables
                var MapemInd v_mapem;
                
                f_prInitialState();
                f_awaitMapeMessage(
                    mw_mapemInd(
                        mw_mapemPdu(
                            mw_mapem(
                                {mw_intersectionGeometry(
                                    -, 
                                    -, 
                                    -, 
                                    {mw_roadLane(
                                        -,//laneID
                                        -,//laneAttributes
                                        -,//p_ingressApproach
                                        -,//egressApproach
                                        ? //connectsTo
                                    )} 
                                 )}
                            )
                    )),
                    v_mapem
                );
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                
            } // End of function f_IS_TLM_GEN_MSGF_BV_05_MAPEM
            
            /**
             * @desc    TP Function for TC_IS_TLM_GEN_MSGF_BV_05_SPATEM
             */
            function f_IS_TLM_GEN_MSGF_BV_05_SPATEM () runs on ItsMapemSpatem {
                
                // Local variables
                
                // Preamble
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                
                f_prInitialState();
                f_utTriggerEvent(m_utTriggerEvent(startTLMService));
                // Wait for SPATEM sent
                tc_ac.start(2.0);
                    
                // Test Body
                tc_ac.start;
                alt {
                    [] mapemSpatemPort.receive(
                        mw_spatemInd(
                            mw_spatemPdu(
                                mw_spatem_intersections(
                                    {mw_IntersectionState(
                                        -, //IntersectionReferenceID p_id
                                        -, //MsgCount p_revision
                                        -, //IntersectionStatusObject p_status
                                        {mw_movementState(?)}  //MovementList p_states with signalGroup
                                    )}
                                )
                            )
                    )) { 
                        tc_ac.stop;
                        log("*** " & testcasename() & ": PASS: Successfully received SAPTEM PDU header. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                    }
                    [] tc_ac.timeout {
                        log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                    }
                }
                
                // Postamble
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
                f_poDefault();
            } // End of function f_IS_TLM_GEN_MSGF_BV_05_SPATEM
            function f_IS_TLM_GEN_MSGF_BV_06 () runs on ItsMtc {
                // Local variables
                var ItsMapemSpatem v_mapem;
                var ItsMapemSpatem v_spatem;
                
                // Test control
                if (not PICS_SPATEM_GENERATION) {
                    log("*** " & testcasename() & ": PICS_SPATEM_GENERATION required for executing the TC ***");
                    setverdict(inconc);
                    stop;
                }
                    
                // Test component configuration
                f_cf02Up();
                
                // Preamble
                
                // Start components
                v_mapem := f_getComponent(c_compMap);
                v_spatem := f_getComponent(c_compSpat);
                v_mapem.start(f_IS_TLM_GEN_MSGF_BV_06_MAPEM());
                v_spatem.start(f_IS_TLM_GEN_MSGF_BV_06_SPATEM());
                
                // Synchronization
                f_serverSync2ClientsAndStop({c_prDone, c_tbDone});
                
                // Cleanup
                f_cf02Down();
                
            } // End of function f_IS_TLM_GEN_MSGF_BV_06
            
            /**
             * @desc    TP Function for TC_IS_TLM_GEN_MSGF_BV_06_SPATEM
             */
            function f_IS_TLM_GEN_MSGF_BV_06_MAPEM () runs on ItsMapemSpatem {
                // Local variables
                var MapemInd v_mapem;
                
                // Preamble
                f_prInitialState();
                f_awaitMapeMessage(
                    mw_mapemInd(
                        mw_mapemPdu(
                            mw_mapem(
                                {mw_intersectionGeometry(
                                    -, 
                                    -, 
                                    -, 
                                    {mw_roadLane(
                                        -,//laneID
                                        ?,//laneAttributes
                                        -,//p_ingressApproach
                                        -,//egressApproach
                                        ? //connectsTo
                                    )} 
                                 )}
                            )
                    )),
                    v_mapem
                );
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                
            } // End of function f_IS_TLM_GEN_MSGF_BV_06_MAPEM
            
            /**
             * @desc    TP Function for TC_IS_TLM_GEN_MSGF_BV_06
             */
            function f_IS_TLM_GEN_MSGF_BV_06_SPATEM () runs on ItsMapemSpatem {
                
                // Local variables
                
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                
                f_prInitialState();
                f_utTriggerEvent(m_utTriggerEvent(startTLMService));
                // Wait for SPATEM sent
                tc_ac.start(2.0);
                    
                // Test Body
                tc_ac.start;
                alt {
                    [] mapemSpatemPort.receive(
                        mw_spatemInd(
                            mw_spatemPdu(
                                mw_spatem_intersections(
                                    {mw_IntersectionState(
                                        ?, //IntersectionReferenceID p_id
                                        -, //MsgCount p_revision
                                        -, //IntersectionStatusObject p_status
                                        {mw_movementState(
                                            ?,//SignalGroupID,    
                                            ? //MovementEventList,
                                        )} //MovementList p_states
                                    )}
                                )
                            )
                    )) { 
                        tc_ac.stop;
                        log("*** " & testcasename() & ": PASS: Successfully received SAPTEM PDU header. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                    }
                    [] tc_ac.timeout {
                        log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                    }
                }
                
                // Postamble
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
                f_poDefault();
            } // End of function f_IS_TLM_GEN_MSGF_BV_06_SPATEM
            function f_IS_TLM_GEN_MSGF_BV_07 () runs on ItsMtc {
                // Local variables
                var ItsMapemSpatem v_mapem;
                var ItsMapemSpatem v_spatem;
                // Test control
                if (not (PICS_SPATEM_GENERATION and PICS_SPATEM_PEDESTRIAN_MANOEUVRES)) {
                    log("*** " & testcasename() & ": PICS_SPATEM_GENERATION AND PICS_SPATEM_PEDESTRIAN_MANOEUVRES required for executing the TC ***");
                    setverdict(inconc);
                    stop;
                }
                    
                // Test component configuration
                f_cf02Up();
                
                // Preamble
                
                // Start components
                v_mapem := f_getComponent(c_compMap);
                v_spatem := f_getComponent(c_compSpat);
                v_mapem.start(f_IS_TLM_GEN_MSGF_BV_07_MAPEM());
                v_spatem.start(f_IS_TLM_GEN_MSGF_BV_07_SPATEM());
                
                // Synchronization
                f_serverSync2ClientsAndStop({c_prDone, c_tbDone});
                
                // Cleanup
                f_cf02Down();
            /**
             * @desc    TP Function for TC_IS_TLM_GEN_MSGF_BV_07_SPATEM
             */
            function f_IS_TLM_GEN_MSGF_BV_07_MAPEM () runs on ItsMapemSpatem {
                // Local variables
                var MapemInd v_mapem;
                
                // Preamble
                f_prInitialState();
                f_awaitMapeMessage(
                    mw_mapemInd(
                        mw_mapemPdu(
                            mw_mapem(
                                {mw_intersectionGeometry(
                                    -, 
                                    -, 
                                    -, 
                                    {mw_roadLane(
                                        -,//laneID
                                        ?,//laneAttributes
                                        -,//p_ingressApproach
                                        -,//egressApproach
                                        ? //connectsTo
                                    )} 
                                 )}
                            )
                    )),
                    v_mapem
                );
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                
            } // End of function f_IS_TLM_GEN_MSGF_BV_07_MAPEM
            
            /**
             * @desc    TP Function for TC_IS_TLM_GEN_MSGF_BV_07_SPATEM
             */
            function f_IS_TLM_GEN_MSGF_BV_07_SPATEM () runs on ItsMapemSpatem {
                
                // Local variables
                
                // Preamble
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                
                f_prInitialState();
                f_utTriggerEvent(m_utTriggerEvent(startTLMService));
                // Wait for SPATEM sent
                tc_ac.start(2.0);
                    
                // Test Body
                tc_ac.start;
                alt {
                    [] mapemSpatemPort.receive(
                        mw_spatemInd(
                            mw_spatemPdu(
                                mw_spatem_intersections(
                                    {mw_IntersectionState(
                                        ?, //IntersectionReferenceID p_id
                                        -, //MsgCount p_revision
                                        -, //IntersectionStatusObject p_status
                                        {mw_movementState(
                                            ?,//SignalGroupID,    
                                            ? //MovementEventList,
                                        )} //MovementList p_states
                                    )}
                                )
                            )
                    )) { 
                        tc_ac.stop;
                        log("*** " & testcasename() & ": PASS: Successfully received SAPTEM PDU header. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                    }
                    [] tc_ac.timeout {
                        log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                    }
                }
                
                // Postamble
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
                f_poDefault();
                
            } // End of function f_IS_TLM_GEN_MSGF_BV_07_SPATEM
            
            /**
             * @desc    TP Function for TC_IS_TLM_GEN_MSGF_BV_08
             */
            function f_IS_TLM_GEN_MSGF_BV_08 () runs on ItsMapemSpatem {
                
                // TODO
                
            } // End of function f_IS_TLM_GEN_MSGF_BV_08
            
            /**
             * @desc    TP Function for TC_IS_TLM_GEN_MSGF_BV_09
             */
            function f_IS_TLM_GEN_MSGF_BV_09 () runs on ItsMapemSpatem {
                
                // TODO
                
            } // End of function f_IS_TLM_GEN_MSGF_BV_09
            
            /**
             * @desc    TP Function for TC_IS_TLM_GEN_MSGF_BV_10
             */
            function f_IS_TLM_GEN_MSGF_BV_10 () runs on ItsMapemSpatem {
                
                // TODO
                
            } // End of function f_IS_TLM_GEN_MSGF_BV_10
            
            /**
             * @desc    TP Function for TC_IS_TLM_GEN_MSGF_BV_11
             */
            function f_IS_TLM_GEN_MSGF_BV_11 () runs on ItsMapemSpatem {
                
                // TODO
                
            } // End of function f_IS_TLM_GEN_MSGF_BV_11
            
            /**
             * @desc    TP Function for TC_IS_TLM_GEN_MSGF_BV_12
             */
            function f_IS_TLM_GEN_MSGF_BV_12 () runs on ItsMapemSpatem {
                
                // TODO
                
            } // End of function f_IS_TLM_GEN_MSGF_BV_12
            
            /**
             * @desc    TP Function for TC_IS_TLM_GEN_MSGF_BV_13
             */
            function f_IS_TLM_GEN_MSGF_BV_13 () runs on ItsMapemSpatem {
                
                // TODO
                
            } // End of function f_IS_TLM_GEN_MSGF_BV_13
            
            /**
             * @desc    TP Function for TC_IS_TLM_GEN_MSGF_BV_14
             */
            function f_IS_TLM_GEN_MSGF_BV_14 () runs on ItsMapemSpatem {
                
                // TODO
                
            } // End of function f_IS_TLM_GEN_MSGF_BV_14
            
garciay's avatar
garciay committed
        group spateEventGeneration { 
             * @desc    TP Function for f_IS_TLM_GEN_EVGN_BV_01
            function f_IS_TLM_GEN_EVGN_BV_01() runs on ItsMapemSpatem {
garciay's avatar
garciay committed
                if (not PICS_SPATEM_GENERATION) {
                    log("*** " & testcasename() & ": PICS_SPATEM_GENERATION required for executing the TC ***");
                    setverdict(inconc);
                    stop;
                }
                
                // Test component configuration
                f_cfUp();
                
                // Preamble
garciay's avatar
garciay committed
                f_prInitialState();
                f_utTriggerEvent(m_utTriggerEvent(startTLMService));
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                    
                // Test Body
                tc_ac.start;
                alt {
                    [] mapemSpatemPort.receive(
                        mw_spatemInd(
                            mw_spatemPdu(
                                mw_spatemWellFormatted
                    ))) { 
                        tc_ac.stop;
                        log("*** " & testcasename() & ": PASS: Successfully received well-formed SPATEM. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                    }
                    [] mapemSpatemPort.receive(
                        mw_spatemInd(
                            mw_spatemPdu(
                                mw_defaultSpatem
                    ))) { 
                        tc_ac.stop;
                        log("*** " & testcasename() & ": FAIL: Received a SPATEM with incorrect information. ***");
Yann Garcia's avatar
Yann Garcia committed
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                    }
                    [] tc_ac.timeout {
                        log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                    }
                }
                
                // Postamble
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
                f_poDefault();
                f_cfDown();
                
            } // End of function f_IS_TLM_GEN_EVGN_BV_01
             * @desc    TP Function for f_IS_TLM_GEN_EVGN_BV_02
            function f_IS_TLM_GEN_EVGN_BV_02() runs on ItsMapemSpatem {
                
                // Local variables
                var SpatemInd v_spatem;
                
                // Test control
garciay's avatar
garciay committed
                if (not PICS_SPATEM_GENERATION) {
                    log("*** " & testcasename() & ": PICS_SPATEM_GENERATION required for executing the TC ***");
                    setverdict(inconc);
                    stop;
                }
                
                // Test component configuration
                f_cfUp();
                    
                // Preamble
garciay's avatar
garciay committed
                f_prInitialState();
                f_utTriggerEvent(m_utTriggerEvent(startTLMService));
                f_awaitSpateMessage(
                    mw_spatemInd(
                        mw_spatemPdu(
                            mw_spatemWellFormatted
                        )
                    ), 
                    v_spatem
                );
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                
                // Test Body
                f_utTriggerEvent(m_utTriggerEvent(spatemNewContent));
                tc_ac.start;
                alt {
                    [] mapemSpatemPort.receive(v_spatem) { 
                        tc_ac.stop;
                        log("*** " & testcasename() & ": FAIL: The same SPATEM was received. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                    }
                    [] mapemSpatemPort.receive(
                        mw_spatemInd(
                            mw_spatemPdu(
                                mw_spatemWellFormatted
                    ))) { 
                        tc_ac.stop;
                        log("*** " & testcasename() & ": PASS: Successfully received a new well-formed SPATE message. ***");
Yann Garcia's avatar
Yann Garcia committed
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                    }
                    [] mapemSpatemPort.receive(
                        mw_spatemInd(
                            mw_spatemPdu(
                                mw_defaultSpatem
                    ))) { 
                        tc_ac.stop;
                        log("*** " & testcasename() & ": FAIL: Received a SPATEM with incorrect information. ***");
Yann Garcia's avatar
Yann Garcia committed
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                    }
                    [] tc_ac.timeout {
                        log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                    }
                }
                
                // Postamble
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
                f_poDefault();
                f_cfDown();
                
            } // End of function f_IS_TLM_GEN_EVGN_BV_02
             * @desc    TP Function for f_IS_TLM_GEN_EVGN_BV_03
            function f_IS_TLM_GEN_EVGN_BV_03() runs on ItsMapemSpatem { 
garciay's avatar
garciay committed
                if (not PICS_SPATEM_GENERATION) {
                    log("*** " & testcasename() & ": PICS_SPATEM_GENERATION required for executing the TC ***");
                    setverdict(inconc);
                    stop;
                }
                
                // Test component configuration
                f_cfUp();
                
                // Preamble
garciay's avatar
garciay committed
                f_prInitialState();
                f_utTriggerEvent(m_utTriggerEvent(startTLMService));
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                    
                // Test Body
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
                mapemSpatemPort.clear;
                tc_noac.start;
                alt {
                    [] mapemSpatemPort.receive(
                        mw_spatemInd(
                            mw_spatemPdu(
                                mw_defaultSpatem
                    ))) { 
                        tc_noac.stop;
                        log("*** " & testcasename() & ": FAIL: No more SPATEM messages were expected. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                    }
                    [] tc_noac.timeout {
                        log("*** " & testcasename() & ": PASS: TLM Service terminated. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                    }
                }
                    
                // Postamble
                f_poDefault();
                f_cfDown();
                
            } // End of function f_IS_TLM_GEN_EVGN_BV_03
             * @desc    TP Function for f_IS_TLM_GEN_EVGN_BV_04
            function f_IS_TLM_GEN_EVGN_BV_04() runs on ItsMapemSpatem {
                
                // Local variables
                var SpatemInd v_spatem;
                
                // Test control
garciay's avatar
garciay committed
                if (not PICS_SPATEM_GENERATION) {
                    log("*** " & testcasename() & ": PICS_SPATEM_GENERATION required for executing the TC ***");
                    setverdict(inconc);
                    stop;
                }
                
                // Test component configuration
                f_cfUp();
                    
                // Preamble
garciay's avatar
garciay committed
                f_prInitialState();
                f_utTriggerEvent(m_utTriggerEvent(startTLMService));
                f_awaitSpateMessage(
                    mw_spatemInd(
                        mw_spatemPdu(
                            mw_defaultSpatem
                        )
                    ), 
                    v_spatem
                );
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                
                // Test Body
                f_utTriggerEvent(m_utTriggerEvent(spatemNewContent));
                tc_ac.start;
                alt {
                    [] mapemSpatemPort.receive(v_spatem) { 
                        tc_ac.stop;
                        log("*** " & testcasename() & ": FAIL: A different SPATE message was expected. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                    }
                    [] mapemSpatemPort.receive(
                        mw_spatemInd(
                            mw_spatemPdu(
                                mw_spatemWellFormatted
                    ))) { 
                        tc_ac.stop;
                        log("*** " & testcasename() & ": PASS: Successfully received a new well-formed SPATE message. ***");
Yann Garcia's avatar
Yann Garcia committed
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                    }
                    [] mapemSpatemPort.receive(
                        mw_spatemInd(
                            mw_spatemPdu(
                                mw_defaultSpatem
                    ))) { 
                        tc_ac.stop;
                        log("*** " & testcasename() & ": FAIL: Received a SPATEM with incorrect information. ***");
Yann Garcia's avatar
Yann Garcia committed
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                    }
                    [] tc_ac.timeout {
                        log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                    }
                }
                
                // Postamble
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
                f_poDefault();
                f_cfDown();
                
            } // End of function f_IS_TLM_GEN_EVGN_BV_04
garciay's avatar
garciay committed
        } // End of group spateEventGeneration
             * @desc    TP Function for f_IS_TLM_GEN_COM_BV_01
            function f_IS_TLM_GEN_COM_BV_01 () runs on ItsMapemSpatem {
garciay's avatar
garciay committed
                // Test control
garciay's avatar
garciay committed
                if (not PICS_SPATEM_GENERATION) {
                    log("*** " & testcasename() & ": PICS_SPATEM_GENERATION required for executing the TC ***");
garciay's avatar
garciay committed
                    setverdict(inconc);
                    stop;
                }
                
                // Test component configuration
                f_cfUp();
                
                // Preamble
garciay's avatar
garciay committed
                f_prInitialState();
                f_utTriggerEvent(m_utTriggerEvent(startTLMService));
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                
                // Test Body
                tc_ac.start;
                alt {
                    [] mapemSpatemPort.receive(
                        mw_spatemInd(
                           mw_spatemPdu(
                               mw_spatem_with_region_id
                    ))) { 
                        tc_ac.stop;
                        log("*** " & testcasename() & ": PASS: Successfully received MAPEM using GBC. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                    }
                    [] tc_ac.timeout {
                        log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                    }
                }
                
                // Postamble
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
                f_poDefault();
                f_cfDown();
                
            } // End of function f_IS_TLM_GEN_COM_BV_01
             * @desc    TP Function for f_IS_TLM_GEN_COM_BV_02_01
            function f_IS_TLM_GEN_COM_BV_02_01 () runs on ItsMapemSpatem {
garciay's avatar
garciay committed
                // Test control
garciay's avatar
garciay committed
                if (not PICS_SPATEM_GENERATION) {
                    log("*** " & testcasename() & ": PICS_SPATEM_GENERATION required for executing the TC ***");
garciay's avatar
garciay committed
                    setverdict(inconc);
                    stop;
                }
                
                // Test component configuration
                f_cfUp();
                
                // Preamble
garciay's avatar
garciay committed
                f_prInitialState();
                f_utTriggerEvent(m_utTriggerEvent(startTLMService));
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                
                // Test Body
                tc_ac.start;
                alt {
                    [] mapemSpatemPort.receive(
                        mw_spatemIndWithGnParameters(
                           mw_spatemPdu, 
                           c_gnNhBtpB