ItsSpatem_TpFunctions.ttcn 125 KB
Newer Older
Bostjan Pintar's avatar
Bostjan Pintar committed
            /**
             * @desc    TP Function for TC_IS_TLM_GEN_MSGF_BV_11
             */
            function f_IS_TLM_GEN_MSGF_BV_11 () 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_11_MAPEM());
                v_spatem.start(f_IS_TLM_GEN_MSGF_BV_11_SPATEM());
                
                // Synchronization
                f_serverSync2ClientsAndStop({c_prDone, c_tbDone});
                
                // Cleanup
                f_cf02Down();
                
            } // End of function f_IS_TLM_GEN_MSGF_BV_11
            
            /**
             * @desc    TP Function for TC_IS_TLM_GEN_MSGF_BV_11_MAPEM
             */
            function f_IS_TLM_GEN_MSGF_BV_11_MAPEM () runs on ItsMapemSpatem {
                // Local variables
                var MapemInd v_mapem;
                var IntersectionReferenceID v_id;
                
                // Preamble
                f_prInitialState();
                f_awaitMapeMessage(
                    mw_mapemInd(
                        mw_mapemPdu(
                            mw_mapem(
                                {mw_intersectionGeometry(
                                    ?,//IntersectionReferenceId  
                                    -, 
                                    -, 
                                    {mw_roadLane(
                                        -,//laneID
                                        ?,//laneAttributes
                                        -,//p_ingressApproach
                                        -,//egressApproach
                                        ? //connectsTo
                                    )} 
                                 )}
                            )
                    )),
                    v_mapem
                );
                v_id := v_mapem.msgIn.map_.intersections[0].id;
                log("IntersectionReferenceID = ", v_id);
                
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                
            } // End of function f_IS_TLM_GEN_MSGF_BV_11_MAPEM
            
            /**
             * @desc    TP Function for TC_IS_TLM_GEN_MSGF_BV_11_SPATEM
             */
            function f_IS_TLM_GEN_MSGF_BV_11_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_maneuverAssistList(
                                        ?, //IntersectionReferenceID p_id
                                        -, //MsgCount p_revision
                                        -, //IntersectionStatusObject p_status
                                        -,
                                        {mw_connectionManeuverAssist(
                                            ?, // connectionID
                                            ?  // pedBicycleDetect
                                        
                                        )}
                                    )}
                                )
                            )
                    )) { 
                        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_11_SPATEM
            
            /**
             * @desc    TP Function for TC_IS_TLM_GEN_MSGF_BV_12
             */
            function f_IS_TLM_GEN_MSGF_BV_12 () runs on ItsMtc {
                // Local variables
                var ItsMapemSpatem v_mapem;
                var ItsMapemSpatem v_spatem;
                
                // Test control
                if (not (PICS_SPATEM_GENERATION and PICS_SPATEM_HAS_OPTIMAL_SPEED)) {
                    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_12_MAPEM());
                v_spatem.start(f_IS_TLM_GEN_MSGF_BV_12_SPATEM());
                
                // Synchronization
                f_serverSync2ClientsAndStop({c_prDone, c_tbDone});
                
                // Cleanup
                f_cf02Down();
                
            } // End of function f_IS_TLM_GEN_MSGF_BV_12
            
            /**
             * @desc    TP Function for TC_IS_TLM_GEN_MSGF_BV_12_MAPEM
             */
            function f_IS_TLM_GEN_MSGF_BV_12_MAPEM () runs on ItsMapemSpatem {
                // Local variables
                var MapemInd v_mapem;
                var IntersectionReferenceID v_id;
                
                // Preamble
                f_prInitialState();
                f_awaitMapeMessage(
                    mw_mapemInd(
                        mw_mapemPdu(
                            mw_mapem(
                                {mw_intersectionGeometry(
                                    ?,//IntersectionReferenceId  
                                    -, 
                                    -, 
                                    {mw_roadLane(
                                        -,//laneID
                                        ?,//laneAttributes
                                        -,//p_ingressApproach
                                        -,//egressApproach
                                        ? //connectsTo
                                    )} 
                                 )}
                            )
                    )),
                    v_mapem
                );
                v_id := v_mapem.msgIn.map_.intersections[0].id;
                log("IntersectionReferenceID = ", v_id);
                
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                
            } // End of function f_IS_TLM_GEN_MSGF_BV_12_MAPEM
            
            /**
             * @desc    TP Function for TC_IS_TLM_GEN_MSGF_BV_12_SPATEM
             */
            function f_IS_TLM_GEN_MSGF_BV_12_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
Bostjan Pintar's avatar
Bostjan Pintar committed
                                        {mw_movementState( //MovementList p_states
                                            ?,//SignalGroupID,    
                                            {mw_movementEvent( //MovementEventList,
                                                -,
                                                -,//timing
                                                {mw_advisorySpeed(  //speeds
                                                  (ecoDrive, transit),//type   (ecoDrive   (2) or transit    (3))
                                                  ? //speed
                                                )} 
                                            )} 
                                        )}
                                    )}
                                )
                            )
                    )) { 
                        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();
Bostjan Pintar's avatar
Bostjan Pintar committed
            } // End of function f_IS_TLM_GEN_MSGF_BV_12_SPATEM
Bostjan Pintar's avatar
Bostjan Pintar committed
             * @desc    TP Function for TC_IS_TLM_GEN_MSGF_BV_13
Bostjan Pintar's avatar
Bostjan Pintar committed
            function f_IS_TLM_GEN_MSGF_BV_13 () runs on ItsMtc {
                // Local variables
                var ItsMapemSpatem v_mapem;
                var ItsMapemSpatem v_spatem;
Bostjan Pintar's avatar
Bostjan Pintar committed
                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 ***");
                // Test component configuration
                f_cf02Up();
                
                // Preamble
                
                // Start components
                v_mapem := f_getComponent(c_compMap);
                v_spatem := f_getComponent(c_compSpat);
Bostjan Pintar's avatar
Bostjan Pintar committed
                v_mapem.start(f_IS_TLM_GEN_MSGF_BV_13_MAPEM());
                v_spatem.start(f_IS_TLM_GEN_MSGF_BV_13_SPATEM());
                
                // Synchronization
                f_serverSync2ClientsAndStop({c_prDone, c_tbDone});
                
                // Cleanup
                f_cf02Down();
                
Bostjan Pintar's avatar
Bostjan Pintar committed
            } // End of function f_IS_TLM_GEN_MSGF_BV_13
Bostjan Pintar's avatar
Bostjan Pintar committed
             * @desc    TP Function for TC_IS_TLM_GEN_MSGF_BV_13_MAPEM
Bostjan Pintar's avatar
Bostjan Pintar committed
            function f_IS_TLM_GEN_MSGF_BV_13_MAPEM () runs on ItsMapemSpatem {
                // Local variables
                var MapemInd v_mapem;
Bostjan Pintar's avatar
Bostjan Pintar committed
                var IntersectionReferenceID v_id;
                
                // Preamble
                f_prInitialState();
                f_awaitMapeMessage(
                    mw_mapemInd(
                        mw_mapemPdu(
                            mw_mapem(
                                {mw_intersectionGeometry(
Bostjan Pintar's avatar
Bostjan Pintar committed
                                    ?,//IntersectionReferenceId  
                                    -, 
                                    -, 
                                    {mw_roadLane(
                                        -,//laneID
                                        ?,//laneAttributes
                                        -,//p_ingressApproach
                                        -,//egressApproach
                                        ? //connectsTo
                                    )} 
                                 )}
                            )
                    )),
                    v_mapem
                );
Bostjan Pintar's avatar
Bostjan Pintar committed
                v_id := v_mapem.msgIn.map_.intersections[0].id;
                log("IntersectionReferenceID = ", v_id);
                
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                
Bostjan Pintar's avatar
Bostjan Pintar committed
            } // End of function f_IS_TLM_GEN_MSGF_BV_13_MAPEM
Bostjan Pintar's avatar
Bostjan Pintar committed
             * @desc    TP Function for TC_IS_TLM_GEN_MSGF_BV_13_SPATEM
Bostjan Pintar's avatar
Bostjan Pintar committed
            function f_IS_TLM_GEN_MSGF_BV_13_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;
Bostjan Pintar's avatar
Bostjan Pintar committed
                
                alt {
                    [] mapemSpatemPort.receive(
                        mw_spatemInd(
                            mw_spatemPdu(
                                mw_spatem_intersections(
                                    {mw_IntersectionState(
                                        ?, //IntersectionReferenceID p_id
                                        -, //MsgCount p_revision
                                        -, //IntersectionStatusObject p_status
Bostjan Pintar's avatar
Bostjan Pintar committed
                                        {mw_movementState( //MovementList p_states
                                            ?,//SignalGroupID,    
Bostjan Pintar's avatar
Bostjan Pintar committed
                                            {mw_movementEvent( //MovementEventList,
                                                -,
                                                -,//timing
                                                {mw_advisorySpeed(  //speeds
                                                  greenwave,//type   (greenwave   (1))
                                                  ? //speed
                                                )} 
                                            )} 
                                        )}
                                    )}
                                )
                            )
                    )) { 
                        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();
Bostjan Pintar's avatar
Bostjan Pintar committed
            } // End of function f_IS_TLM_GEN_MSGF_BV_13_SPATEM
Bostjan Pintar's avatar
Bostjan Pintar committed
             * @desc    TP Function for TC_IS_TLM_GEN_MSGF_BV_14
Bostjan Pintar's avatar
Bostjan Pintar committed
            function f_IS_TLM_GEN_MSGF_BV_14 () runs on ItsMtc {
                // Local variables
                var ItsMapemSpatem v_mapem;
                var ItsMapemSpatem v_spatem;
                // Test control
Bostjan Pintar's avatar
Bostjan Pintar committed
                if (not (PICS_SPATEM_GENERATION and PICS_SPATEM_HAS_EGRESS_QUEUE)) {
                    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);
Bostjan Pintar's avatar
Bostjan Pintar committed
                v_mapem.start(f_IS_TLM_GEN_MSGF_BV_14_MAPEM());
                v_spatem.start(f_IS_TLM_GEN_MSGF_BV_14_SPATEM());
                
                // Synchronization
                f_serverSync2ClientsAndStop({c_prDone, c_tbDone});
                
                // Cleanup
                f_cf02Down();
Bostjan Pintar's avatar
Bostjan Pintar committed
            } // End of function f_IS_TLM_GEN_MSGF_BV_14
Bostjan Pintar's avatar
Bostjan Pintar committed
             * @desc    TP Function for TC_IS_TLM_GEN_MSGF_BV_14_MAPEM
Bostjan Pintar's avatar
Bostjan Pintar committed
            function f_IS_TLM_GEN_MSGF_BV_14_MAPEM () runs on ItsMapemSpatem {
                // Local variables
                var MapemInd v_mapem;
Bostjan Pintar's avatar
Bostjan Pintar committed
                var IntersectionReferenceID v_id;
                
                // Preamble
                f_prInitialState();
                f_awaitMapeMessage(
                    mw_mapemInd(
                        mw_mapemPdu(
                            mw_mapem(
                                {mw_intersectionGeometry(
Bostjan Pintar's avatar
Bostjan Pintar committed
                                    ?,//IntersectionReferenceId  
                                    -, 
                                    -, 
                                    {mw_roadLane(
                                        -,//laneID
                                        ?,//laneAttributes
                                        -,//p_ingressApproach
                                        -,//egressApproach
                                        ? //connectsTo
                                    )} 
                                 )}
                            )
                    )),
                    v_mapem
                );
Bostjan Pintar's avatar
Bostjan Pintar committed
                v_id := v_mapem.msgIn.map_.intersections[0].id;
                log("IntersectionReferenceID = ", v_id);
                
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                
Bostjan Pintar's avatar
Bostjan Pintar committed
            } // End of function f_IS_TLM_GEN_MSGF_BV_14_MAPEM
Bostjan Pintar's avatar
Bostjan Pintar committed
             * @desc    TP Function for TC_IS_TLM_GEN_MSGF_BV_14_SPATEM
Bostjan Pintar's avatar
Bostjan Pintar committed
            function f_IS_TLM_GEN_MSGF_BV_14_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;
Bostjan Pintar's avatar
Bostjan Pintar committed
                
                alt {
                    [] mapemSpatemPort.receive(
                        mw_spatemInd(
                            mw_spatemPdu(
                                mw_spatem_intersections(
Bostjan Pintar's avatar
Bostjan Pintar committed
                                    {mw_IntersectionState_maneuverAssistList(
                                        ?, //IntersectionReferenceID p_id
                                        -, //MsgCount p_revision
                                        -, //IntersectionStatusObject p_status
Bostjan Pintar's avatar
Bostjan Pintar committed
                                        -,
                                        {mw_connectionManeuverAssist_queueAndAvailableStorageLength}
                                    )}
                                )
                            )
                    )) { 
                        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();
                
Bostjan Pintar's avatar
Bostjan Pintar committed
            } // End of function f_IS_TLM_GEN_MSGF_BV_14_SPATEM
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
                    )) { 
                        tc_ac.stop;
garciay's avatar
garciay committed
                        log("*** " & testcasename() & ": PASS: Expected SPATEM encapsultated in BTP-B packet received. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                    }
                    [] mapemSpatemPort.receive(mw_spatemIndWithGnParameters(mw_spatemPdu(mw_defaultSpatem), omit)) { 
                        tc_ac.stop;
                        log("*** " & testcasename() & ": FAIL: no GN NH information in SpatemInd ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);  
                    }                    
                    [] mapemSpatemPort.receive(mw_spatemInd(mw_spatemPdu(mw_defaultSpatem))) { 
                        tc_ac.stop;
garciay's avatar
garciay committed
                        log("*** " & testcasename() & ": FAIL: Expected SPATEM received, but not encapsulated in BTP-B packet ***");
                        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_COM_BV_02_01
             * @desc    TP Function for f_IS_TLM_GEN_COM_BV_02
            function f_IS_TLM_GEN_COM_BV_02 () runs on ItsMapemSpatem {
                
                // Local variables
                const UInt16 c_gnNhBtpBPort := 2004;
                
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_spatemIndWithBtpParameters(
                           mw_spatemPdu, 
                           c_gnNhBtpBPort,
                           0
                    )) { 
                        tc_ac.stop;
garciay's avatar
garciay committed
                        log("*** " & testcasename() & ": PASS: Expected SPATEM encapsultated in BTP packet with port value 2004 received. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                    }
                    [] mapemSpatemPort.receive(mw_spatemInd(mw_spatemPdu(mw_defaultSpatem))) { 
                        tc_ac.stop;
garciay's avatar
garciay committed
                        log("*** " & testcasename() & ": FAIL: Expected SPATEM received, but not addressed to the correct destination port. ***");
                        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_COM_BV_02
             * @desc    TP Function for f_IS_TLM_GEN_COM_BV_03
            function f_IS_TLM_GEN_COM_BV_03 () 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(
                               mw_spatemWellFormatted
                           ),
                           -,
                           c_gnHtGbc
                    )) { 
                        tc_ac.stop;
garciay's avatar
garciay committed
                        log("*** " & testcasename() & ": PASS: Expected SPATEM encapsulated in GBC packet received. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                    }
                    [] mapemSpatemPort.receive(
                        mw_spatemIndWithGnParameters(
                           mw_spatemPdu(
                               mw_spatemWellFormatted
                           ),
                           -,
                           omit
                    )) { 
                        tc_ac.stop;
                        log("*** " & testcasename() & ": FAIL: Eno GN HT information in SpatemInd. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                    }
                    [] mapemSpatemPort.receive(
                        mw_spatemInd(
                           mw_spatemPdu(
                               mw_spatemWellFormatted
                    ))) { 
                        tc_ac.stop;
                        log("*** " & testcasename() & ": FAIL: Expected SPATEM received, but not encapsulated in GBC packet. ***");
                        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_COM_BV_03
            
        } // End of group spateCommunication 
        
    } // End of group spateMessageDissemination
    
        
        /**
         * @desc    TP Function for TC_IS_TLM_GEN_SEC_BV_01
         */