ItsSpatem_TpFunctions.ttcn 127 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();
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(spatProfile0));
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
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
            } // 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();
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(spatProfile0));
                // 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
Yann Garcia's avatar
Yann Garcia committed
                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();
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(spatProfile0));
                // 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
Yann Garcia's avatar
Yann Garcia committed
                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();
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(spatProfile0));
                // 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(
Yann Garcia's avatar
Yann Garcia committed
                                                        {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
Yann Garcia's avatar
Yann Garcia committed
                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
             */
Yann Garcia's avatar
Yann Garcia committed
            function f_IS_TLM_GEN_MSGF_BV_05 () 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;
                }
Yann Garcia's avatar
Yann Garcia committed
                // Test component configuration
                f_cfUp();
                    
                // Preamble
                f_prInitialState();
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(spatProfile0));
                // Wait for SPATEM sent
                tc_ac.start(2.0);
Yann Garcia's avatar
Yann Garcia committed
                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
Yann Garcia's avatar
Yann Garcia committed
                                        {*, mw_movementState, *}  //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
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
                f_poDefault();
Yann Garcia's avatar
Yann Garcia committed
                f_cfDown();
Yann Garcia's avatar
Yann Garcia committed
            } // End of function f_IS_TLM_GEN_MSGF_BV_05
Yann Garcia's avatar
Yann Garcia committed
            function f_IS_TLM_GEN_MSGF_BV_06 () runs on ItsMapemSpatem {
                
                // Local variables
Yann Garcia's avatar
Yann Garcia committed
                var MapemInd v_mapem;
                var SpatemInd v_spatem;
                
                // Test control
                if (not PICS_SPATEM_GENERATION) {
                    log("*** " & testcasename() & ": PICS_SPATEM_GENERATION required for executing the TC ***");
                    setverdict(inconc);
                    stop;
                }
Yann Garcia's avatar
Yann Garcia committed
                // Test component configuration
                f_cfUp();
                    
                // Preamble
                f_prInitialState();
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(spatProfile0));
Yann Garcia's avatar
Yann Garcia committed
                // Wait for MAPEM sent
                f_awaitMapeMessage(
                                   mw_mapemInd(
                                               mw_mapemPdu(
                                                           mw_mapem(
                                                                    {
                                                                      mw_intersectionGeometry(
                                                                                              -, -, -,
                                                                                              ?
                                                                                              )
                                                                      }
                                                                    ))),
                                   v_mapem
                                   );
                // Wait for SPATEM sent
Yann Garcia's avatar
Yann Garcia committed
                f_awaitSpateMessage(
                    mw_spatemInd(
                        mw_spatemPdu(
                            mw_defaultSpatem
                    )),
                    v_spatem
                );
Yann Garcia's avatar
Yann Garcia committed
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                    
                // Test Body
                tc_ac.start;
                alt {
                    [] mapemSpatemPort.receive(
Yann Garcia's avatar
Yann Garcia committed
                                               mw_spatemInd(
                                                            mw_spatemPdu(
                                                                         mw_spatem_intersections(
                                                                                                 {mw_IntersectionState(
                                                                                                                       v_mapem.msgIn.map_.intersections[0].id, //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
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
                f_poDefault();
Yann Garcia's avatar
Yann Garcia committed
                f_cfDown();
Yann Garcia's avatar
Yann Garcia committed
            } // End of function f_IS_TLM_GEN_MSGF_BV_06
Yann Garcia's avatar
Yann Garcia committed
            function f_IS_TLM_GEN_MSGF_BV_07 () runs on ItsMapemSpatem {
Yann Garcia's avatar
Yann Garcia committed
                // Local variables
                var MapemInd v_mapem;
                var SpatemInd 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_cfUp();
                    
                // Preamble
                f_prInitialState();
                f_utTriggerEvent(m_utTriggerEvent(spatProfile0));
                // Wait for MAPEM sent
                f_awaitMapeMessage(
                                   mw_mapemInd(
                                               mw_mapemPdu(
                                                           mw_mapem(
                                                                    {
                                                                      mw_intersectionGeometry(
                                                                                              -, -, -,
                                                                                              { *, mw_roadLane(-, mw_laneAttributes_crosswak), * }
                                                                                              )
                                                                      }
                                                                    ))),
                                   v_mapem
                                   );
                // Wait for SPATEM sent
                f_awaitSpateMessage(
                    mw_spatemInd(
                        mw_spatemPdu(
                            mw_defaultSpatem
                    )),
                    v_spatem
                );
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                    
                // Test Body
                tc_ac.start;
                alt {
                    [] mapemSpatemPort.receive(
                                               mw_spatemInd(
                                                            mw_spatemPdu(
                                                                         mw_spatem_intersections(
                                                                                                 {mw_IntersectionState(
                                                                                                                       v_mapem.msgIn.map_.intersections[0].id, //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
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
Yann Garcia's avatar
Yann Garcia committed
                f_poDefault();
                f_cfDown();
                
            } // End of function f_IS_TLM_GEN_MSGF_BV_07
            
            /**
             * @desc    TP Function for TC_IS_TLM_GEN_MSGF_BV_08
             */
Bostjan Pintar's avatar
Bostjan Pintar committed
            function f_IS_TLM_GEN_MSGF_BV_08 () runs on ItsMtc {
Yann Garcia's avatar
Yann Garcia committed
                
Bostjan Pintar's avatar
Bostjan Pintar committed
                // Local variables
Yann Garcia's avatar
Yann Garcia committed
                var MapemInd v_mapem;
                var SpatemInd v_spatem;
Bostjan Pintar's avatar
Bostjan Pintar committed
                // Test control
Yann Garcia's avatar
Yann Garcia committed
                if (not PICS_SPATEM_GENERATION) {
Bostjan Pintar's avatar
Bostjan Pintar committed
                    log("*** " & testcasename() & ": PICS_SPATEM_GENERATION required for executing the TC ***");
                    setverdict(inconc);
                    stop;
                }
Yann Garcia's avatar
Yann Garcia committed
                // Test component configuration
                f_cfUp();
                    
Bostjan Pintar's avatar
Bostjan Pintar committed
                // Preamble
                f_prInitialState();
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(spatProfile0));
                // Wait for MAPEM sent
Bostjan Pintar's avatar
Bostjan Pintar committed
                f_awaitMapeMessage(
Yann Garcia's avatar
Yann Garcia committed
                                   mw_mapemInd(
                                               mw_mapemPdu(
                                                           mw_mapem(
                                                                    {
                                                                      mw_intersectionGeometry(
                                                                                              -, -, -,
                                                                                              { *, mw_roadLane(-, mw_laneAttributes_crosswak), * }
                                                                                              )
                                                                      }
                                                                    ))),
                                   v_mapem
                                   );
                // Wait for SPATEM sent
                f_awaitSpateMessage(
                    mw_spatemInd(
                        mw_spatemPdu(
                            mw_defaultSpatem
Bostjan Pintar's avatar
Bostjan Pintar committed
                    )),
Yann Garcia's avatar
Yann Garcia committed
                    v_spatem
Bostjan Pintar's avatar
Bostjan Pintar committed
                );
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                    
                // Test Body
                tc_ac.start;
                alt {
                    [] mapemSpatemPort.receive(
Yann Garcia's avatar
Yann Garcia committed
                                               mw_spatemInd(
                                                            mw_spatemPdu(
                                                                         mw_spatem_intersections(
                                                                                                 {mw_IntersectionState(
                                                                                                                       v_mapem.msgIn.map_.intersections[0].id, //IntersectionReferenceID p_id
                                                                                                                       -, //MsgCount p_revision
                                                                                                                       -, //IntersectionStatusObject p_status
                                                                                                                       {
                                                                                                                         *,
                                                                                                                         mw_movementState(
                                                                                                                                          ?,//SignalGroupID,

                                                                                                                                          {
                                                                                                                                            mw_movementEvent( //MovementEventList,
                                                                                                                                                             -,
                                                                                                                                                             mw_timeChangeDetails( //timing
                                                                                                                                                                                  ? //minEndTime
                                                                                                                                                                                   )
                                                                                                                                                              )
                                                                                                                                            }
                                                                                                                                          ),
                                                                                                                         *
                                                                                                                         } //MovementList p_states
                                                                                                                       )}
Bostjan Pintar's avatar
Bostjan Pintar committed
                                )
                            )
                    )) { 
Bostjan Pintar's avatar
Bostjan Pintar committed
                        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
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
Yann Garcia's avatar
Yann Garcia committed
                f_cfDown();
Yann Garcia's avatar
Yann Garcia committed
            } // End of function f_IS_TLM_GEN_MSGF_BV_08
Bostjan Pintar's avatar
Bostjan Pintar committed
             * @desc    TP Function for TC_IS_TLM_GEN_MSGF_BV_09
Bostjan Pintar's avatar
Bostjan Pintar committed
            function f_IS_TLM_GEN_MSGF_BV_09 () runs on ItsMtc {
Yann Garcia's avatar
Yann Garcia committed
                
Yann Garcia's avatar
Yann Garcia committed
                var MapemInd v_mapem;
                var SpatemInd v_spatem;
Yann Garcia's avatar
Yann Garcia committed
                if (not PICS_SPATEM_GENERATION) {
                    log("*** " & testcasename() & ": PICS_SPATEM_GENERATION required for executing the TC ***");
Bostjan Pintar's avatar
Bostjan Pintar committed
                
Yann Garcia's avatar
Yann Garcia committed
                // Test component configuration
                f_cfUp();
                    
garciay's avatar
garciay committed
                f_prInitialState();
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(spatProfile0));
                // Wait for MAPEM sent
Bostjan Pintar's avatar
Bostjan Pintar committed
                f_awaitMapeMessage(
Yann Garcia's avatar
Yann Garcia committed
                                   mw_mapemInd(
                                               mw_mapemPdu(
                                                           mw_mapem(
                                                                    {
                                                                      mw_intersectionGeometry(
                                                                                              -, -, -,
                                                                                              { *, mw_roadLane(-, mw_laneAttributes_crosswak), * }
                                                                                              )
                                                                      }
                                                                    ))),
                                   v_mapem
                                   );
                // Wait for SPATEM sent
                f_awaitSpateMessage(
                    mw_spatemInd(
                        mw_spatemPdu(
                            mw_defaultSpatem
Bostjan Pintar's avatar
Bostjan Pintar committed
                    )),
Yann Garcia's avatar
Yann Garcia committed
                    v_spatem
Bostjan Pintar's avatar
Bostjan Pintar committed
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                    
                // Test Body
                tc_ac.start;
                alt {
                    [] mapemSpatemPort.receive(
Yann Garcia's avatar
Yann Garcia committed
                                               mw_spatemInd(
                                                            mw_spatemPdu(
                                                                         mw_spatem_intersections(
                                                                                                 {mw_IntersectionState(
                                                                                                                       v_mapem.msgIn.map_.intersections[0].id, //IntersectionReferenceID p_id
                                                                                                                       -, //MsgCount p_revision
                                                                                                                       -, //IntersectionStatusObject p_status
                                                                                                                       {
                                                                                                                         *,
                                                                                                                         mw_movementState(
                                                                                                                                          ?,//SignalGroupID,

                                                                                                                                          {
                                                                                                                                            mw_movementEvent( //MovementEventList,
                                                                                                                                                             -,
                                                                                                                                                             mw_timeChangeDetails( //timing
                                                                                                                                                                                  ?, //minEndTime
                                                                                                                                                                                  *, //startTime
                                                                                                                                                                                  ?  //nextTime
                                                                                                                                                                                   )
                                                                                                                                                              )
                                                                                                                                            }
                                                                                                                                          ),
                                                                                                                         *
                                                                                                                         } //MovementList p_states
                                                                                                                       )}
Bostjan Pintar's avatar
Bostjan Pintar committed
                                )
                            )
                    )) { 
Bostjan Pintar's avatar
Bostjan Pintar committed
                        log("*** " & testcasename() & ": PASS: Successfully received SAPTEM PDU header. ***");
Yann Garcia's avatar
Yann Garcia committed
                        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
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
Yann Garcia's avatar
Yann Garcia committed
                f_cfDown();
Yann Garcia's avatar
Yann Garcia committed
            } // End of function f_IS_TLM_GEN_MSGF_BV_09
Bostjan Pintar's avatar
Bostjan Pintar committed
             * @desc    TP Function for TC_IS_TLM_GEN_MSGF_BV_10
Bostjan Pintar's avatar
Bostjan Pintar committed
            function f_IS_TLM_GEN_MSGF_BV_10 () runs on ItsMtc {
Bostjan Pintar's avatar
Bostjan Pintar committed
                var ItsMapemSpatem v_mapem;
                var ItsMapemSpatem v_spatem;
Bostjan Pintar's avatar
Bostjan Pintar committed
                if (not (PICS_SPATEM_GENERATION and PICS_SPATEM_PRIORITIZATION)) {
                    log("*** " & testcasename() & ": PICS_SPATEM_GENERATION AND PICS_SPATEM_PRIORITIZATION required for executing the TC ***");
Bostjan Pintar's avatar
Bostjan Pintar committed
                    
Bostjan Pintar's avatar
Bostjan Pintar committed
                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_10_MAPEM());
                v_spatem.start(f_IS_TLM_GEN_MSGF_BV_10_SPATEM());
                
                // Synchronization
                f_serverSync2ClientsAndStop({c_prDone, c_tbDone});
                
                // Cleanup
                f_cf02Down();
                
            } // End of function f_IS_TLM_GEN_MSGF_BV_10
            
            /**
             * @desc    TP Function for TC_IS_TLM_GEN_MSGF_BV_10_CAM
             */
            function f_IS_TLM_GEN_MSGF_BV_10_MAPEM () runs on ItsMapemSpatem {
                // Local variables
                var MapemInd v_mapem;
                var IntersectionReferenceID v_id;
garciay's avatar
garciay committed
                f_prInitialState();
Bostjan Pintar's avatar
Bostjan Pintar committed
                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);
Bostjan Pintar's avatar
Bostjan Pintar committed
                f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                
            } // End of function f_IS_TLM_GEN_MSGF_BV_10_MAPEM
            
            /**
             * @desc    TP Function for TC_IS_TLM_GEN_MSGF_BV_10_SPATEM
             */
            function f_IS_TLM_GEN_MSGF_BV_10_SPATEM () runs on ItsMapemSpatem {
                
                // Local variables
                
                // Preamble
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                
                f_prInitialState();
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(spatProfile0));
Bostjan Pintar's avatar
Bostjan Pintar committed
                // Wait for SPATEM sent
                tc_ac.start(2.0);
Bostjan Pintar's avatar
Bostjan Pintar committed
                tc_ac.start;
                
                alt {
                    [] mapemSpatemPort.receive(
                        mw_spatemInd(
                            mw_spatemPdu(
Bostjan Pintar's avatar
Bostjan Pintar committed
                                mw_spatem_intersections(
                                    {mw_IntersectionState_regional(
                                        ?, //IntersectionReferenceID p_id
                                        -, //MsgCount p_revision
                                        -, //IntersectionStatusObject p_status
                                        -,
                                        ? //regional
                                    )}
                                )
                            )
                    )) { 
                        tc_ac.stop;
                        log("*** " & testcasename() & ": PASS: Successfully received SAPTEM PDU header. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                    }
Bostjan Pintar's avatar
Bostjan Pintar committed
                    [] tc_ac.timeout {
                        log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                    }
Bostjan Pintar's avatar
Bostjan Pintar committed
                
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
Bostjan Pintar's avatar
Bostjan Pintar committed
            } // End of function f_IS_TLM_GEN_MSGF_BV_10_SPATEM
Bostjan Pintar's avatar
Bostjan Pintar committed
             * @desc    TP Function for TC_IS_TLM_GEN_MSGF_BV_11
Bostjan Pintar's avatar
Bostjan Pintar committed
            function f_IS_TLM_GEN_MSGF_BV_11 () runs on ItsMtc {
Yann Garcia's avatar
Yann Garcia committed
                
Yann Garcia's avatar
Yann Garcia committed
                var MapemInd v_mapem;
                var SpatemInd v_spatem;
Yann Garcia's avatar
Yann Garcia committed
                if (not PICS_SPATEM_GENERATION or not PICS_SPATEM_PEDESTRIAN_MANOEUVRES) {
                    log("*** " & testcasename() & ": PICS_SPATEM_GENERATION and PICS_SPATEM_PEDESTRIAN_MANOEUVRES required for executing the TC ***");
Bostjan Pintar's avatar
Bostjan Pintar committed
                
Yann Garcia's avatar
Yann Garcia committed
                // Test component configuration
                f_cfUp();
                    
garciay's avatar
garciay committed
                f_prInitialState();
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(spatProfile0));
                // Wait for MAPEM sent
Bostjan Pintar's avatar
Bostjan Pintar committed
                f_awaitMapeMessage(
Yann Garcia's avatar
Yann Garcia committed
                                   mw_mapemInd(
                                               mw_mapemPdu(
                                                           mw_mapem(
                                                                    {
                                                                      mw_intersectionGeometry(
                                                                                              -, -, -,
                                                                                              { *, mw_roadLane(-, mw_laneAttributes_crosswak), * }
                                                                                              )
                                                                      }
                                                                    ))),
                                   v_mapem
                                   );
                // Wait for SPATEM sent
                f_awaitSpateMessage(
                    mw_spatemInd(
                        mw_spatemPdu(
                            mw_defaultSpatem
Bostjan Pintar's avatar
Bostjan Pintar committed
                    )),
Yann Garcia's avatar
Yann Garcia committed
                    v_spatem
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(tlmPedestrianDetected));
Bostjan Pintar's avatar
Bostjan Pintar committed
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
Yann Garcia's avatar
Yann Garcia committed

                // Test Body
                tc_ac.start;
                alt {
                    [] mapemSpatemPort.receive(
Yann Garcia's avatar
Yann Garcia committed
                                               mw_spatemInd(
                                                            mw_spatemPdu(
                                                                         mw_spatem_intersections(
                                                                                                 {mw_IntersectionState_maneuverAssistList(
                                                                                                                                          v_mapem.msgIn.map_.intersections[0].id, //IntersectionReferenceID p_id
                                                                                                                                          -, //MsgCount p_revision
                                                                                                                                          -, //IntersectionStatusObject,
                                                                                                                                          -,
                                                                                                                                          {
                                                                                                                                            *,
                                                                                                                                            mw_connectionManeuverAssist(
                                                                                                                                                                        ?, // connectionID
                                                                                                                                                                        ?  // pedBicycleDetect
                                                                                                                                                                        ),
                                                                                                                                            *
                                                                                                                                            }
                                                                                                                                          )
                                                                                                   }
                                                                                                 )
Bostjan Pintar's avatar
Bostjan Pintar committed
                            )
Yann Garcia's avatar
Yann Garcia committed
                    )) {
Bostjan Pintar's avatar
Bostjan Pintar committed
                        log("*** " & testcasename() & ": PASS: Successfully received SAPTEM PDU header. ***");
Yann Garcia's avatar
Yann Garcia committed
                        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
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
Yann Garcia's avatar
Yann Garcia committed
                f_cfDown();
Yann Garcia's avatar
Yann Garcia committed
            } // End of function f_IS_TLM_GEN_MSGF_BV_11
Bostjan Pintar's avatar
Bostjan Pintar committed
             * @desc    TP Function for TC_IS_TLM_GEN_MSGF_BV_12
Bostjan Pintar's avatar
Bostjan Pintar committed
            function f_IS_TLM_GEN_MSGF_BV_12 () runs on ItsMtc {
Yann Garcia's avatar
Yann Garcia committed
                
Yann Garcia's avatar
Yann Garcia committed
                var MapemInd v_mapem;
                var SpatemInd v_spatem;
garciay's avatar
garciay committed
                // Test control
Bostjan Pintar's avatar
Bostjan Pintar committed
                if (not (PICS_SPATEM_GENERATION and PICS_SPATEM_HAS_OPTIMAL_SPEED)) {
Yann Garcia's avatar
Yann Garcia committed
                    log("*** " & testcasename() & ": PICS_SPATEM_GENERATION AND PICS_SPATEM_HAS_OPTIMAL_SPEED required for executing the TC ***");
garciay's avatar
garciay committed
                    setverdict(inconc);
                    stop;
                }
Yann Garcia's avatar
Yann Garcia committed
                // Test component configuration
                f_cfUp();
                    
Bostjan Pintar's avatar
Bostjan Pintar committed
                // Preamble
                f_prInitialState();
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(spatProfile1));
                // Wait for MAPEM sent
Bostjan Pintar's avatar
Bostjan Pintar committed
                f_awaitMapeMessage(
Yann Garcia's avatar
Yann Garcia committed
                                   mw_mapemInd(
                                               mw_mapemPdu(
                                                           mw_mapem(
                                                                    {
                                                                      mw_intersectionGeometry(
                                                                                              -, -, -,
                                                                                              { *, mw_roadLane(-, mw_laneAttributes_crosswak), * }
                                                                                              )
                                                                      }
                                                                    ))),
                                   v_mapem
                                   );
                // Wait for SPATEM sent
                f_awaitSpateMessage(
                    mw_spatemInd(
                        mw_spatemPdu(
                            mw_defaultSpatem
Bostjan Pintar's avatar
Bostjan Pintar committed
                    )),
Yann Garcia's avatar
Yann Garcia committed
                    v_spatem
Bostjan Pintar's avatar
Bostjan Pintar committed
                );
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
Bostjan Pintar's avatar
Bostjan Pintar committed
                    
                // Test Body
                tc_ac.start;
                alt {
                    [] mapemSpatemPort.receive(
Yann Garcia's avatar
Yann Garcia committed
                                               mw_spatemInd(
                                                            mw_spatemPdu(
                                                                         mw_spatem_intersections(
                                                                                                 {mw_IntersectionState(
                                                                                                                       v_mapem.msgIn.map_.intersections[0].id, //IntersectionReferenceID p_id
                                                                                                                       -, //MsgCount p_revision
                                                                                                                       -, //IntersectionStatusObject p_status
                                                                                                                       {
                                                                                                                         *,
                                                                                                                         mw_movementState(
                                                                                                                                          ?,//SignalGroupID,

                                                                                                                                          {
                                                                                                                                            mw_movementEvent( //MovementEventList,
                                                                                                                                                             -,
                                                                                                                                                             -,
                                                                                                                                                             {
                                                                                                                                                               mw_advisorySpeed( //speeds
                                                                                                                                                                                (ecoDrive, transit), //type
                                                                                                                                                                                ? //speed
                                                                                                                                                                                )
                                                                                                                                                              }
                                                                                                                                                              )
                                                                                                                                           }
                                                                                                                                          ),
                                                                                                                         *
                                                                                                                         } //MovementList p_states
                                                                                                                       )}
                        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);
                    }
                }
                
Yann Garcia's avatar
Yann Garcia committed
                // Postamble
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
                f_poDefault();
                f_cfDown();
Yann Garcia's avatar
Yann Garcia committed
            } // End of function f_IS_TLM_GEN_MSGF_BV_12
Yann Garcia's avatar
Yann Garcia committed
             * @desc    TP Function for TC_IS_TLM_GEN_MSGF_BV_13
Yann Garcia's avatar
Yann Garcia committed
            function f_IS_TLM_GEN_MSGF_BV_13 () runs on ItsMtc {
                
                // Local variables
                var MapemInd v_mapem;
Yann Garcia's avatar
Yann Garcia committed
                var SpatemInd v_spatem;
                
                // Test control
                if (not (PICS_SPATEM_GENERATION and PICS_SPATEM_HAS_SIGNAL_PROGRESSION_SPEED)) {
                    log("*** " & testcasename() & ": PICS_SPATEM_GENERATION AND PICS_SPATEM_HAS_SIGNAL_PROGRESSION_SPEED required for executing the TC ***");
                    setverdict(inconc);
                    stop;
                }
Yann Garcia's avatar
Yann Garcia committed
                // Test component configuration
                f_cfUp();
                    
garciay's avatar
garciay committed
                f_prInitialState();
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(spatProfile2));
                // Wait for MAPEM sent
                f_awaitMapeMessage(
Yann Garcia's avatar
Yann Garcia committed
                                   mw_mapemInd(
                                               mw_mapemPdu(
                                                           mw_mapem(
                                                                    {
                                                                      mw_intersectionGeometry(
                                                                                              -, -, -,
                                                                                              { *, mw_roadLane(-, mw_laneAttributes_crosswak), * }
                                                                                              )
                                                                      }
                                                                    ))),
                                   v_mapem
                                   );
                // Wait for SPATEM sent
                f_awaitSpateMessage(
                    mw_spatemInd(
                        mw_spatemPdu(
                            mw_defaultSpatem
Yann Garcia's avatar
Yann Garcia committed
                    v_spatem
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                // Test Body
                tc_ac.start;
                alt {
                    [] mapemSpatemPort.receive(
Yann Garcia's avatar
Yann Garcia committed
                                               mw_spatemInd(
                                                            mw_spatemPdu(
                                                                         mw_spatem_intersections(
                                                                                                 {mw_IntersectionState(
                                                                                                                       v_mapem.msgIn.map_.intersections[0].id, //IntersectionReferenceID p_id
                                                                                                                       -, //MsgCount p_revision
                                                                                                                       -, //IntersectionStatusObject p_status
                                                                                                                       {
                                                                                                                         *,
                                                                                                                         mw_movementState(
                                                                                                                                          ?,//SignalGroupID,

                                                                                                                                          {
                                                                                                                                            mw_movementEvent( //MovementEventList,
                                                                                                                                                             -,
                                                                                                                                                             -,
                                                                                                                                                             {
                                                                                                                                                               mw_advisorySpeed( //speeds
                                                                                                                                                                                greenwave, //type
                                                                                                                                                                                ? //speed
                                                                                                                                                                                )
                                                                                                                                                              }
                                                                                                                                                              )
                                                                                                                                           }
                                                                                                                                          ),
                                                                                                                         *
                                                                                                                         } //MovementList p_states
                                                                                                                       )}
                        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
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
Yann Garcia's avatar
Yann Garcia committed
                f_cfDown();
Yann Garcia's avatar
Yann Garcia 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_14
Bostjan Pintar's avatar
Bostjan Pintar committed
            function f_IS_TLM_GEN_MSGF_BV_14 () runs on ItsMtc {
Yann Garcia's avatar
Yann Garcia committed
                
Yann Garcia's avatar
Yann Garcia committed
                var MapemInd v_mapem;
                var SpatemInd v_spatem;
garciay's avatar
garciay committed
                // Test control
Bostjan Pintar's avatar
Bostjan Pintar committed
                if (not (PICS_SPATEM_GENERATION and PICS_SPATEM_HAS_EGRESS_QUEUE)) {
Yann Garcia's avatar
Yann Garcia committed
                    log("*** " & testcasename() & ": PICS_SPATEM_GENERATION AND PICS_SPATEM_HAS_EGRESS_QUEUE required for executing the TC ***");
garciay's avatar
garciay committed
                    setverdict(inconc);
                    stop;
                }
Yann Garcia's avatar
Yann Garcia committed
                // Test component configuration
                f_cfUp();
                    
                // Preamble
                f_prInitialState();
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(spatProfile3));
                // Wait for MAPEM sent
                f_awaitMapeMessage(
Yann Garcia's avatar
Yann Garcia committed
                                   mw_mapemInd(
                                               mw_mapemPdu(
                                                           mw_mapem(
                                                                    {
                                                                      mw_intersectionGeometry(
                                                                                              -, -, -,
                                                                                              { *, mw_roadLane(-, mw_laneAttributes_crosswak), * }
                                                                                              )
                                                                      }
                                                                    ))),
                                   v_mapem
                                   );
                // Wait for SPATEM sent
                f_awaitSpateMessage(
                    mw_spatemInd(
                        mw_spatemPdu(
                            mw_defaultSpatem
Yann Garcia's avatar
Yann Garcia committed
                    v_spatem
                );
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                    
                // Test Body
                tc_ac.start;
                alt {
                    [] mapemSpatemPort.receive(
Yann Garcia's avatar
Yann Garcia committed
                                               mw_spatemInd(
                                                            mw_spatemPdu(
                                                                         mw_spatem_intersections(
                                                                                                 {mw_IntersectionState_maneuverAssistList(
                                                                                                                                          v_mapem.msgIn.map_.intersections[0].id, //IntersectionReferenceID p_id
                                                                                                                                          -, //MsgCount p_revision
                                                                                                                                          -, //IntersectionStatusObject p_status
                                                                                                                                          -, //MovementList p_states
                                                                                                                                          { *, 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
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
                f_poDefault();
Yann Garcia's avatar
Yann Garcia committed
                f_cfDown();
Yann Garcia's avatar
Yann Garcia committed
            } // 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 ***");
                // Test component configuration
                f_cfUp();
garciay's avatar
garciay committed
                f_prInitialState();
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(spatProfile0));
                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);
                    }
                }
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
                
            } // 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();
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(spatProfile0));
                f_awaitSpateMessage(
                    mw_spatemInd(
                        mw_spatemPdu(
                            mw_spatemWellFormatted
                        )
                    ), 
                    v_spatem
                );
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                
                // Test Body
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(spatProfile0)); // FIXME Add parameters to update default profile or create a MamSpatUpdate message
                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);
                    }
                    [] tc_ac.timeout {
                        log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                    }
                }
                
                // Postamble
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
            } // 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 { 
                
Yann Garcia's avatar
Yann Garcia committed
                var SpatemInd v_spatem;
garciay's avatar
garciay committed
                if (not PICS_SPATEM_GENERATION) {
                    log("*** " & testcasename() & ": PICS_SPATEM_GENERATION required for executing the TC ***");
                // Test component configuration
                f_cfUp();
garciay's avatar
garciay committed
                f_prInitialState();
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(spatProfile0));
Yann Garcia's avatar
Yann Garcia committed
                f_awaitSpateMessage(
                    mw_spatemInd(
                        mw_spatemPdu(
                            mw_spatemWellFormatted
                        )
                    ), 
                    v_spatem
                );
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
Yann Garcia's avatar
Yann Garcia committed
                
Yann Garcia's avatar
Yann Garcia committed
                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;
garciay's avatar
garciay committed
                if (not PICS_SPATEM_GENERATION) {
                    log("*** " & testcasename() & ": PICS_SPATEM_GENERATION required for executing the TC ***");
                // Test component configuration
                f_cfUp();
                    
                // Preamble
garciay's avatar
garciay committed
                f_prInitialState();
Yann Garcia's avatar
Yann Garcia committed
                tc_noac.start;
                alt {
                    [] mapemSpatemPort.receive(
                        mw_spatemInd(
                            mw_spatemPdu(
                                mw_defaultSpatem
                    ))) { 
                        tc_noac.stop;
                        log("*** " & testcasename() & ": FAIL: Initial conditions do not expect SPATEM messages. ***");
                        f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
                    }
                    [] tc_noac.timeout {
                        log("*** " & testcasename() & ": PASS: No SPATEM messages received. ***");
                    }
                }
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(spatProfile0));
                tc_ac.start;
                alt {
                    [] 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);
                    }
                    [] tc_ac.timeout {
                        log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                    }
                }
                
                // Postamble
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
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();
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(spatProfile0));
                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
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
                
            } // 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 {
                
                // Local variables
                const UInt8 c_gnNhBtpB := 2;
                
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();
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(spatProfile0));
                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
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
                
            } // 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();
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(spatProfile0));
                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
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
                
            } // 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 {
                
                // Local variables
                const UInt8 c_gnHtGbc := 4;
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();
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(spatProfile0));
                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
Yann Garcia's avatar
Yann Garcia committed
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
            } // 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
         */
        function f_IS_TLM_GEN_SEC_BV_01 () runs on ItsMapemSpatem {
       
            // Local variables
            var SpatemInd v_spatem;
        
            // Test control
            if (not PICS_SPATEM_GENERATION or not PICS_IS_IUT_SECURED) {
                log("*** " & testcasename() & ": PICS_SPATEM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***");
                setverdict(inconc);
                stop;
            }
        
            // Test component configuration
            f_cfUp();
            
            // Preamble
            f_prInitialState();
            f_awaitSpateMessage(
                mw_spatemInd(
                    mw_spatemPdu(
                        mw_defaultSpatem
                    )
                ), 
                v_spatem
            );
            
            f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                
            // Test Body
            tc_ac.start;
            alt {
                [] mapemSpatemPort.receive(
                                           mw_spatemIndWithSecurityParameters(
                                                                             mw_spatemPdu,
                                                                             -, 
                                                                             c_its_aid_SPAT
                )) { 
                    tc_ac.stop;
                    log("*** " & testcasename() & ": PASS: Expected secured SPATEM received. ***");
                    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);
Bostjan Pintar's avatar
Bostjan Pintar committed
                }
            }
        
            // Postamble
            f_poDefault();
            f_cfDown();
Bostjan Pintar's avatar
Bostjan Pintar committed
            
        } // End of function f_IS_TLM_GEN_SEC_BV_01
        
        /**
         * @desc    TP Function for TC_IS_TLM_GEN_SEC_BV_02
         */
        function f_IS_TLM_GEN_SEC_BV_02 () runs on ItsMapemSpatem {
       
            // Local variables
            var SpatemInd v_spatem;
        
            // Test control
            if (not PICS_SPATEM_GENERATION or not PICS_IS_IUT_SECURED) {
                log("*** " & testcasename() & ": PICS_SPATEM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***");
                setverdict(inconc);
                stop;
            }
        
            // Test component configuration
            f_cfUp();
            
            // Preamble
            f_prInitialState();
            f_awaitSpateMessage(
                mw_spatemInd(
                    mw_spatemPdu(
                        mw_defaultSpatem
                    )
                ), 
                v_spatem
            );
            
            f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                
            // Test Body
            tc_ac.start;
            alt {
                [] mapemSpatemPort.receive(
                                           mw_spatemIndWithSecurityParameters(
                                                                             mw_spatemPdu,
                                                                             -, 
                                                                             c_its_aid_SPAT
                )) { 
                    tc_ac.stop;
                    log("*** " & testcasename() & ": PASS: Expected secured SPATEM received. ***");
                    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);
Bostjan Pintar's avatar
Bostjan Pintar committed
                }
            }
        
            // Postamble
            f_poDefault();
            f_cfDown();
Bostjan Pintar's avatar
Bostjan Pintar committed
            
        } // End of function f_IS_TLM_GEN_SEC_BV_02
        
        /**
         * @desc    TP Function for TC_IS_TLM_GEN_SSP_BV_01
         */
        function f_IS_TLM_GEN_SSP_BV_01 () runs on ItsMapemSpatem {
       
            // Local variables
            var SpatemInd v_spatem;
        
            // Test control
            if (not PICS_SPATEM_GENERATION or not PICS_IS_IUT_SECURED) {
                log("*** " & testcasename() & ": PICS_SPATEM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***");
                setverdict(inconc);
                stop;
            }
        
            // Test component configuration
            f_cfUp();
            // Preamble
            f_prInitialState("CERT_SPAT_SSP_NONE");
            f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
Bostjan Pintar's avatar
Bostjan Pintar committed
            
            // Test Body
Yann Garcia's avatar
Yann Garcia committed
            f_utTriggerEvent(m_utTriggerEvent(spatProfile0));
        
            tc_ac.start;
            alt {
                [] mapemSpatemPort.receive(
                                           mw_spatemIndWithSecurityParameters(
                                                                             mw_spatemPdu,
                                                                             oct2bit('010000'O), 
                                                                             c_its_aid_SPAT
                )) { 
                    tc_ac.stop;
                    log("*** " & testcasename() & ": PASS: Expected secured SPATEM received. ***");
                    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);
Bostjan Pintar's avatar
Bostjan Pintar committed
                }
            }
        
            // Postamble
            f_poDefault();
            f_cfDown();
Bostjan Pintar's avatar
Bostjan Pintar committed
            
        } // End of function f_IS_TLM_GEN_SSP_BV_01
        
        /**
         * @desc    TP Function for TC_IS_TLM_GEN_SSP_BV_02
         */
        function f_IS_TLM_GEN_SSP_BV_02 () runs on ItsMapemSpatem {
       
            // Local variables
            var SpatemInd v_spatem;
        
            // Test control
            if (not PICS_SPATEM_GENERATION or not PICS_IS_IUT_SECURED) {
                log("*** " & testcasename() & ": PICS_SPATEM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***");
                setverdict(inconc);
                stop;
            }
        
            // Test component configuration
            f_cfUp();
            
            // Preamble
            f_prInitialState("CERT_SPAT_SSP_ALL");
            f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
            
            // Test Body
Yann Garcia's avatar
Yann Garcia committed
            f_utTriggerEvent(m_utTriggerEvent(spatProfile0));
        
            tc_ac.start;
            alt {
                [] mapemSpatemPort.receive(
                                           mw_spatemIndWithSecurityParameters(
                                                                             mw_spatemPdu,
                                                                             oct2bit('018000'O), 
                                                                             c_its_aid_SPAT
                )) { 
                    tc_ac.stop;
                    log("*** " & testcasename() & ": PASS: Expected secured SPATEM received. ***");
                    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);
Bostjan Pintar's avatar
Bostjan Pintar committed
                }
            }
        
            // Postamble
            f_poDefault();
            f_cfDown();
Bostjan Pintar's avatar
Bostjan Pintar committed
            
        } // End of function f_IS_TLM_GEN_SSP_BV_02
        
        /**
         * @desc    TP Function for TC_IS_TLM_GEN_SSP_BO_03
         */
        function f_IS_TLM_GEN_SSP_BO_03 () runs on ItsMapemSpatem {
       
            // Local variables
            var SpatemInd v_spatem;
        
            // Test control
            if (not PICS_SPATEM_GENERATION or not PICS_IS_IUT_SECURED) {
                log("*** " & testcasename() & ": PICS_SPATEM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***");
                setverdict(inconc);
                stop;
            }
        
            // Test component configuration
            f_cfUp();
            // Preamble
            f_prInitialState("CERT_SPAT_SSP_NONE");
            f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
Bostjan Pintar's avatar
Bostjan Pintar committed
            
            // Test Body
Yann Garcia's avatar
Yann Garcia committed
            f_utTriggerEvent(m_utTriggerEvent(spatProfile0));
        
            tc_ac.start;
            alt {
                [] mapemSpatemPort.receive(
                                           mw_spatemIndWithSecurityParameters(
                                                                             mw_spatemPdu,
                                                                             oct2bit('010000'O), 
                                                                             c_its_aid_SPAT
                )) { 
                tc_noac.stop;
                log("*** " & testcasename() & ": FAIL: Unexpected secured SPATEM received. ***");
                f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
            }
                [] tc_noac.timeout {
                    log("*** " & testcasename() & ": PASS: No SPAT message received. ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
Bostjan Pintar's avatar
Bostjan Pintar committed
                }
            }
        
            // Postamble
            f_poDefault();
            f_cfDown();
Bostjan Pintar's avatar
Bostjan Pintar committed
            
        } // End of function f_IS_TLM_GEN_SSP_BO_03
        
        /**
         * @desc    TP Function for TC_IS_TLM_GEN_SSP_BV_04
         */
        function f_IS_TLM_GEN_SSP_BV_04 () runs on ItsMapemSpatem {
       
            // Local variables
            var SpatemInd v_spatem;
        
            // Test control
            if (not PICS_SPATEM_GENERATION or not PICS_IS_IUT_SECURED) {
                log("*** " & testcasename() & ": PICS_SPATEM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***");
                setverdict(inconc);
                stop;
            }
        
            // Test component configuration
            f_cfUp();
Bostjan Pintar's avatar
Bostjan Pintar committed
            
            // Preamble
            f_prInitialState("CERT_SPAT_SSP_ALL");
            f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
            
            // Test Body
Yann Garcia's avatar
Yann Garcia committed
            f_utTriggerEvent(m_utTriggerEvent(spatProfile0));
        
            tc_ac.start;
            alt {
                [] mapemSpatemPort.receive(
                                           mw_spatemIndWithSecurityParameters(
                                                                             mw_spatemPdu,
                                                                             oct2bit('014000'O), 
                                                                             c_its_aid_SPAT
                )) { 
                    tc_ac.stop;
                    log("*** " & testcasename() & ": PASS: Expected secured SPATEM received. ***");
                    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);
Bostjan Pintar's avatar
Bostjan Pintar committed
                }
            }
        
            // Postamble
            f_poDefault();
            f_cfDown();
Bostjan Pintar's avatar
Bostjan Pintar committed
            
        } // End of function f_IS_TLM_GEN_SSP_BV_04
        
        /**
         * @desc    TP Function for TC_IS_TLM_GEN_SSP_BO_05
         */
        function f_IS_TLM_GEN_SSP_BO_05 () runs on ItsMapemSpatem {
       
            // Local variables
            var SpatemInd v_spatem;
        
            // Test control
            if (not PICS_SPATEM_GENERATION or not PICS_IS_IUT_SECURED) {
                log("*** " & testcasename() & ": PICS_SPATEM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***");
                setverdict(inconc);
                stop;
            }
        
            // Test component configuration
            f_cfUp();
            // Preamble
            f_prInitialState("CERT_SPAT_SSP_NONE");
            f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
Bostjan Pintar's avatar
Bostjan Pintar committed
            
            // Test Body
Yann Garcia's avatar
Yann Garcia committed
            f_utTriggerEvent(m_utTriggerEvent(spatProfile0));
        
            tc_ac.start;
            alt {
                [] mapemSpatemPort.receive(
                                           mw_spatemIndWithSecurityParameters(
                                                                             mw_spatemPdu,
                                                                             oct2bit('010000'O), 
                                                                             c_its_aid_SPAT
                )) { 
                tc_noac.stop;
                log("*** " & testcasename() & ": FAIL: Unexpected secured SPATEM received. ***");
                f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
            }
                [] tc_noac.timeout {
                    log("*** " & testcasename() & ": PASS: No SPAT message received. ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
Bostjan Pintar's avatar
Bostjan Pintar committed
                }
            }
        
            // Postamble
            f_poDefault();
            f_cfDown();
Bostjan Pintar's avatar
Bostjan Pintar committed
            
        } // End of function f_IS_TLM_GEN_SSP_BO_05
        
        /**
         * @desc    TP Function for TC_IS_TLM_GEN_SSP_BV_06
         */
        function f_IS_TLM_GEN_SSP_BV_06 () runs on ItsMapemSpatem {
       
            // Local variables
            var SpatemInd v_spatem;
        
            // Test control
            if (not PICS_SPATEM_GENERATION or not PICS_IS_IUT_SECURED) {
                log("*** " & testcasename() & ": PICS_SPATEM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***");
                setverdict(inconc);
                stop;
            }
        
            // Test component configuration
            f_cfUp();
Bostjan Pintar's avatar
Bostjan Pintar committed
            
            // Preamble
            f_prInitialState("CERT_SPAT_SSP_ALL");
            f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
            
            // Test Body
Yann Garcia's avatar
Yann Garcia committed
            f_utTriggerEvent(m_utTriggerEvent(spatProfile0));
        
            tc_ac.start;
            alt {
                [] mapemSpatemPort.receive(
                                           mw_spatemIndWithSecurityParameters(
                                                                             mw_spatemPdu,
                                                                             oct2bit('012000'O), 
                                                                             c_its_aid_SPAT
                )) { 
                    tc_ac.stop;
                    log("*** " & testcasename() & ": PASS: Expected secured SPATEM received. ***");
                    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);
Bostjan Pintar's avatar
Bostjan Pintar committed
                }
            }
        
            // Postamble
            f_poDefault();
            f_cfDown();
Bostjan Pintar's avatar
Bostjan Pintar committed
            
        } // End of function f_IS_TLM_GEN_SSP_BV_06
        
        /**
         * @desc    TP Function for TC_IS_TLM_GEN_SSP_BV_07
         */
        function f_IS_TLM_GEN_SSP_BV_07 () runs on ItsMapemSpatem {
       
            // Local variables
            var SpatemInd v_spatem;
        
            // Test control
            if (not PICS_SPATEM_GENERATION or not PICS_IS_IUT_SECURED) {
                log("*** " & testcasename() & ": PICS_SPATEM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***");
                setverdict(inconc);
                stop;
            }
        
            // Test component configuration
            f_cfUp();
            // Preamble
            f_prInitialState("CERT_SPAT_SSP_ALL");
            f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
            // Test Body
Yann Garcia's avatar
Yann Garcia committed
            f_utTriggerEvent(m_utTriggerEvent(spatProfile0));
        
            tc_ac.start;
            alt {
                [] mapemSpatemPort.receive(
                                           mw_spatemIndWithSecurityParameters(
                                                                             mw_spatemPdu,
                                                                             oct2bit('012000'O), 
                                                                             c_its_aid_SPAT
                )) { 
                    tc_ac.stop;
                    log("*** " & testcasename() & ": PASS: Expected secured SPATEM received. ***");
                    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_poDefault();
            f_cfDown();
        } // End of function f_IS_TLM_GEN_SSP_BV_07
        
        /**
         * @desc    TP Function for TC_IS_TLM_GEN_SSP_BO_08
         */
        function f_IS_TLM_GEN_SSP_BO_08 () runs on ItsMapemSpatem {
       
            // Local variables
            var SpatemInd v_spatem;
        
            // Test control
            if (not PICS_SPATEM_GENERATION or not PICS_IS_IUT_SECURED) {
                log("*** " & testcasename() & ": PICS_SPATEM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***");
                setverdict(inconc);
                stop;
            }
        
            // Test component configuration
            f_cfUp();
            // Preamble
            f_prInitialState("CERT_SPAT_SSP_NONE");
            f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
            // Test Body
Yann Garcia's avatar
Yann Garcia committed
            f_utTriggerEvent(m_utTriggerEvent(spatProfile0));
        
            tc_ac.start;
            alt {
                [] mapemSpatemPort.receive(
                                           mw_spatemIndWithSecurityParameters(
                                                                             mw_spatemPdu,
                                                                             oct2bit('010000'O), 
                                                                             c_its_aid_SPAT
                )) { 
                tc_noac.stop;
                log("*** " & testcasename() & ": FAIL: Unexpected secured SPATEM received. ***");
                f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
            }
                [] tc_noac.timeout {
                    log("*** " & testcasename() & ": PASS: No SPAT message received. ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                }
            }
        
            // Postamble
            f_poDefault();
            f_cfDown();
        } // End of function f_IS_TLM_GEN_SSP_BO_08
        
        /**
         * @desc    TP Function for TC_IS_TLM_GEN_SSP_BO_09
         */
        function f_IS_TLM_GEN_SSP_BO_09 () runs on ItsMapemSpatem {
       
            // Local variables
            var SpatemInd v_spatem;
        
            // Test control
            if (not PICS_SPATEM_GENERATION or not PICS_IS_IUT_SECURED) {
                log("*** " & testcasename() & ": PICS_SPATEM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***");
                setverdict(inconc);
                stop;
            }
        
            // Test component configuration
            f_cfUp();
            // Preamble
            f_prInitialState("CERT_SPAT_SSP_NONE");
            f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
            // Test Body
Yann Garcia's avatar
Yann Garcia committed
            f_utTriggerEvent(m_utTriggerEvent(spatProfile0));
        
            tc_ac.start;
            alt {
                [] mapemSpatemPort.receive(
                                           mw_spatemIndWithSecurityParameters(
                                                                             mw_spatemPdu,
                                                                             oct2bit('010000'O), 
                                                                             c_its_aid_SPAT
                )) { 
                tc_noac.stop;
                log("*** " & testcasename() & ": FAIL: Unexpected secured SPATEM received. ***");
                f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
            }
                [] tc_noac.timeout {
                    log("*** " & testcasename() & ": PASS: No SPAT message received. ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                }
            }
        
            // Postamble
            f_poDefault();
            f_cfDown();
        } // End of function f_IS_TLM_GEN_SSP_BO_09
        
        /**
         * @desc    TP Function for TC_IS_TLM_GEN_RATE_BV_01
         */
        function f_IS_TLM_GEN_RATE_BV_01() runs on ItsMapemSpatem {
       
            // Local variables
            var SpatemInd v_spatem;
            timer t_minTransInterval := PICS_T_GEN_SPATEM_MIN * 0.90;
            timer t_maxTransInterval := PICS_T_GEN_SPATEM_MAX * 1.10;
        
            // Test control
            if (not PICS_SPATEM_GENERATION or not PICS_SPATEM_TRANSMISSION_RATE) {
                log("*** " & testcasename() & ": PICS_SPATEM_GENERATION and PICS_SPATEM_TRANSMISSION_RATE required for executing the TC ***");
                setverdict(inconc);
                stop;
            }
        
            // Test component configuration
            f_cfUp();
            
            // Preamble
            f_prInitialState();
            f_awaitSpateMessage(
                mw_spatemInd(
                    mw_spatemPdu(
                        mw_defaultSpatem
                    )
                ), 
                v_spatem
            );
            
            t_minTransInterval.start;
            t_maxTransInterval.start;
            f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
            
            // Test Body
            tc_ac.start;
            alt {
                [] mapemSpatemPort.receive(
                    mw_spatemInd(
                        mw_spatemPdu
                )) { 
                    tc_ac.stop;
                    if (t_minTransInterval.running) {
                        log("*** " & testcasename() & ": PASS: Successfully received SPATEM PDU header. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                    } else {
                        log("*** " & testcasename() & ": FAIL: SPAT message was received before t_minTransInterval expiry. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                    }
                [] t_minTransInterval.timeout {
                    repeat;
                [] t_maxTransInterval.timeout {
                    log("*** " & testcasename() & ": FAIL: SPAT message was not received within the t_minTransInterval/t_maxTransInterval expiration ***");
                    f_selfOrClientSyncAndVerdictPreamble(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_poDefault();
            f_cfDown();
        } // End of function f_IS_TLM_GEN_RATE_BV_01
    }// end group spateSecurityParameters
    
    group spateMessageProcessing {
        /**
         * @desc    TP Function for f_IS_TLM_RCV_MSGF_BV_01
         */
        function f_IS_TLM_RCV_MSGF_BV_01 () runs on ItsMapemSpatem {
                
            // Local variables
            var SpatemReq   v_spatemReq;
            var integer     i;
            
            if (not PICS_SPATEM_RECEPTION) {
                log("*** " & testcasename() & ": PICS_SPATEM_RECEPTION required for executing the TC ***");
                setverdict(inconc);
                stop;
            }
            
            // Test component configuration
            f_cfUp();
            
            // Preamble
            f_prInitialState();
            f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
            
            // Test Body
            v_spatemReq := valueof(m_spatemReq(m_spatemPdu(m_defaultSpatem)));
            mapemSpatemPort.send(v_spatemReq) ;
            
            f_sleep(PX_TAC);
            for (i := 0; i < lengthof(vc_utSpatemEvents) and not match (valueof(v_spatemReq.msgOut) , vc_utSpatemEvents[i].spateMsg); i := i + 1) {
                // empty on purpose 
            }
            if (i < lengthof(vc_utSpatemEvents) ) {
                log("*** " & testcasename() & ": PASS: SPATEM was transmitted to upper layer***");
                f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
            } else {
                log("*** " & testcasename() & ": FAIL: SPATEM was not transmitted to upper layer***");
                f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
            }
            // Postamble
            f_poDefault();
            f_cfDown();
            
        } // End of function f_IS_TLM_RCV_MSGF_BV_01
        
        /**
         * @desc    TP Function for TC_IS_TLM_RCV_SEC_BV_01
         */
        function f_IS_TLM_RCV_SEC_BV_01 () runs on ItsMapemSpatem {
            
            // Local variables
            var SpatemReq   v_spatemReq;
            var integer    i;
                
            if (not PICS_SPATEM_RECEPTION or not PICS_IS_IUT_SECURED) {
                log("*** " & testcasename() & ": PICS_SPATEM_RECEPTION and PICS_IS_IUT_SECURED required for executing the TC ***");
                setverdict(inconc);
                stop;
            }
                
            // Test component configuration
            f_cfUp();
                
            // Preamble
            f_prInitialState();
            f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                
            // Test Body
            v_spatemReq := valueof(m_spatemReq(m_spatemPdu(m_defaultSpatem)));
            
            mapemSpatemPort.send(v_spatemReq) ;
            
            f_sleep(PX_TAC);
            for (i := 0; i < lengthof(vc_utSpatemEvents) and not match (v_spatemReq.msgOut , vc_utSpatemEvents[i].spateMsg); i := i + 1) {
                // empty on purpose 
            }
            if (i < lengthof(vc_utSpatemEvents) ) {
                log("*** " & testcasename() & ": PASS: SPATEM was transmitted to upper layer***");
                f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
            } else {
                log("*** " & testcasename() & ": FAIL: SPATEM was not transmitted to upper layer***");
                f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
            }
            // Postamble
            f_poDefault();
            f_cfDown();
        } // End of function f_IS_TLM_RCV_SEC_BV_01
        
        /**
         * @desc    TP Function for TC_IS_TLM_RCV_SEC_BO_01
         */
        function f_IS_TLM_RCV_SEC_BO_01 () runs on ItsMapemSpatem {
            
            // Local variables
            var SpatemReq   v_spatemReq;
            
            if (not PICS_SPATEM_RECEPTION or not PICS_IS_IUT_SECURED) {
                log("*** " & testcasename() & ": PICS_SPATEM_RECEPTION and PICS_IS_IUT_SECURED required for executing the TC ***");
                setverdict(inconc);
                stop;
            }
            // Test component configuration
            f_cfUp("TLM_RCV_SEC_BO_01");
            // Preamble
            f_prInitialState();
            f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
            // Test Body
            v_spatemReq := valueof(m_spatemReq(m_spatemPdu(m_defaultSpatem)));
            
            mapemSpatemPort.send(v_spatemReq) ;
            f_sleep(PX_TAC);
            if (0 == lengthof(vc_utSpatemEvents) ) {
                log("*** " & testcasename() & ": PASS: SPATEM was not transmitted to upper layer***");
                f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
            } else {
                log("*** " & testcasename() & ": FAIL: SPATEM was transmitted to upper layer***");
                f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
            }
            // Postamble
            f_poDefault();
            f_cfDown();
            
        } // End of function f_IS_TLM_RCV_SEC_BO_01
        
        /**
         * @desc    TP Function for TC_IS_TLM_RCV_SSP_BV_01
         */
        function f_IS_TLM_RCV_SSP_BV_01 () runs on ItsMapemSpatem {
            
            // Local variables
            var SpatemReq   v_spatemReq;
            var integer    i;
                
            if (not PICS_SPATEM_RECEPTION or not PICS_IS_IUT_SECURED) {
                log("*** " & testcasename() & ": PICS_SPATEM_RECEPTION and PICS_IS_IUT_SECURED required for executing the TC ***");
                setverdict(inconc);
                stop;
            }
                
            // Test component configuration
            f_cfUp();
                
            // Preamble
            f_prInitialState();
            f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                
            // Test Body
            v_spatemReq := valueof(m_spatemReq(
                                       m_spatemPdu(
                                           m_spatem(
                                               {m_intersection}
                                           )
                                       )
                                   ));
            
            mapemSpatemPort.send(v_spatemReq) ;
            
            f_sleep(PX_TAC);
            for (i := 0; i < lengthof(vc_utSpatemEvents) and not match (v_spatemReq.msgOut , vc_utSpatemEvents[i].spateMsg); i := i + 1) {
                // empty on purpose 
            }
            if (i < lengthof(vc_utSpatemEvents) ) {
                log("*** " & testcasename() & ": PASS: SPATEM was transmitted to upper layer***");
                f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
            } else {
                log("*** " & testcasename() & ": FAIL: SPATEM was not transmitted to upper layer***");
                f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
            }
            // Postamble
            f_poDefault();
            f_cfDown();
            
        } // End of function f_IS_TLM_RCV_SSP_BV_01
        
        /**
         * @desc    TP Function for TC_IS_TLM_RCV_SSP_BO_02
         */
        function f_IS_TLM_RCV_SSP_BO_02 () runs on ItsMapemSpatem {
            
            // Local variables
            var SpatemReq   v_spatemReq;
            var integer    i;
                
            if (not PICS_SPATEM_RECEPTION or not PICS_IS_IUT_SECURED) {
                log("*** " & testcasename() & ": PICS_SPATEM_RECEPTION and PICS_IS_IUT_SECURED required for executing the TC ***");
                setverdict(inconc);
                stop;
            }
                
            // Test component configuration
            f_cfUp();
                
            // Preamble
            f_prInitialState();
            f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                
            // Test Body
            v_spatemReq := valueof(m_spatemReq(
                                       m_spatemPdu(
                                           m_spatem(
                                               {m_intersection}
                                           )
                                       )
                                   ));
            
            mapemSpatemPort.send(v_spatemReq) ;
            
            f_sleep(PX_TAC);
            for (i := 0; i < lengthof(vc_utSpatemEvents) and not match (v_spatemReq.msgOut , vc_utSpatemEvents[i].spateMsg); i := i + 1) {
                // empty on purpose 
            }
            if(lengthof(vc_utSpatemEvents)==0) {
                log("*** " & testcasename() & ": PASS: SPATEM was NOT transmitted to upper layer***");
                f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
            }
            else {
                log("*** " & testcasename() & ": FAIL: SPATEM was transmitted to upper layer***");
                f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
            }
            // Postamble
            f_poDefault();
            f_cfDown();
        } // End of function f_IS_TLM_RCV_SSP_BO_02
        
        /**
         * @desc    TP Function for TC_IS_TLM_RCV_SSP_BV_03
         */
        function f_IS_TLM_RCV_SSP_BV_03 () runs on ItsMapemSpatem {
            
            // Local variables
            var SpatemReq   v_spatemReq;
            var integer    i;
                
            if (not PICS_SPATEM_RECEPTION or not PICS_IS_IUT_SECURED) {
                log("*** " & testcasename() & ": PICS_SPATEM_RECEPTION and PICS_IS_IUT_SECURED required for executing the TC ***");
                setverdict(inconc);
                stop;
            }
                
            // Test component configuration
            f_cfUp();
                
            // Preamble
            f_prInitialState();
            f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                
            // Test Body
            v_spatemReq := valueof(m_spatemReq(
                                       m_spatemPdu(
                                           m_spatem(
                                               {m_intersection_regional}
                                           )
                                       )
                                   ));
            
            mapemSpatemPort.send(v_spatemReq) ;
            
            f_sleep(PX_TAC);
            for (i := 0; i < lengthof(vc_utSpatemEvents) and not match (v_spatemReq.msgOut , vc_utSpatemEvents[i].spateMsg); i := i + 1) {
                // empty on purpose 
            }
            if (i < lengthof(vc_utSpatemEvents) ) {
                log("*** " & testcasename() & ": PASS: SPATEM was transmitted to upper layer***");
                f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
            } else {
                log("*** " & testcasename() & ": FAIL: SPATEM was not transmitted to upper layer***");
                f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
            }
            // Postamble
            f_poDefault();
            f_cfDown();
            
        } // End of function f_IS_TLM_RCV_SSP_BV_03
        
        /**
         * @desc    TP Function for TC_IS_TLM_RCV_SSP_BO_04
         */
        function f_IS_TLM_RCV_SSP_BO_04 () runs on ItsMapemSpatem {
            
            // Local variables
            var SpatemReq   v_spatemReq;
            var integer    i;
                
            if (not PICS_SPATEM_RECEPTION or not PICS_IS_IUT_SECURED) {
                log("*** " & testcasename() & ": PICS_SPATEM_RECEPTION and PICS_IS_IUT_SECURED required for executing the TC ***");
                setverdict(inconc);
                stop;
            }
                
            // Test component configuration
            f_cfUp();
                
            // Preamble
            f_prInitialState();
            f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                
            // Test Body
            v_spatemReq := valueof(m_spatemReq(
                                       m_spatemPdu(
                                           m_spatem(
                                               {m_intersection_regional}
                                           )
                                       )
                                   ));
            
            mapemSpatemPort.send(v_spatemReq) ;
            
            f_sleep(PX_TAC);
            for (i := 0; i < lengthof(vc_utSpatemEvents) and not match (v_spatemReq.msgOut , vc_utSpatemEvents[i].spateMsg); i := i + 1) {
                // empty on purpose 
            }
            if(lengthof(vc_utSpatemEvents)==0) {
                log("*** " & testcasename() & ": PASS: SPATEM was NOT transmitted to upper layer***");
                f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
            }
            else {
                log("*** " & testcasename() & ": FAIL: SPATEM was transmitted to upper layer***");
                f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
            }
            // Postamble
            f_poDefault();
            f_cfDown();
        } // End of function f_IS_TLM_RCV_SSP_BO_04
        
        /**
         * @desc    TP Function for TC_IS_TLM_RCV_SSP_BV_05
         */
        function f_IS_TLM_RCV_SSP_BV_05 () runs on ItsMapemSpatem {
            
            // Local variables
            var SpatemReq   v_spatemReq;
            var integer    i;
                
            if (not PICS_SPATEM_RECEPTION or not PICS_IS_IUT_SECURED) {
                log("*** " & testcasename() & ": PICS_SPATEM_RECEPTION and PICS_IS_IUT_SECURED required for executing the TC ***");
                setverdict(inconc);
                stop;
            }
                
            // Test component configuration
            f_cfUp();
                
            // Preamble
            f_prInitialState();
            f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                
            // Test Body
            v_spatemReq := valueof(m_spatemReq(
                                       m_spatemPdu(
                                           m_spatem(
                                               {m_intersection_maneuverAssistList(
                                                   { m_connectionManeuverAssist(2) }
                                               )}
                                           )
                                       )
                                   ));
            
            mapemSpatemPort.send(v_spatemReq) ;
            
            f_sleep(PX_TAC);
            for (i := 0; i < lengthof(vc_utSpatemEvents) and not match (v_spatemReq.msgOut , vc_utSpatemEvents[i].spateMsg); i := i + 1) {
                // empty on purpose 
            }
            if (i < lengthof(vc_utSpatemEvents) ) {
                log("*** " & testcasename() & ": PASS: SPATEM was transmitted to upper layer***");
                f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
            } else {
                log("*** " & testcasename() & ": FAIL: SPATEM was not transmitted to upper layer***");
                f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
            }
            // Postamble
            f_poDefault();
            f_cfDown();
            
        } // End of function f_IS_TLM_RCV_SSP_BV_05
        
        /**
         * @desc    TP Function for TC_IS_TLM_RCV_SSP_BO_06
         */
        function f_IS_TLM_RCV_SSP_BO_06 () runs on ItsMapemSpatem {
            
            // Local variables
            var SpatemReq   v_spatemReq;
            var integer    i;
                
            if (not PICS_SPATEM_RECEPTION or not PICS_IS_IUT_SECURED) {
                log("*** " & testcasename() & ": PICS_SPATEM_RECEPTION and PICS_IS_IUT_SECURED required for executing the TC ***");
                setverdict(inconc);
                stop;
            }
                
            // Test component configuration
            f_cfUp();
                
            // Preamble
            f_prInitialState();
            f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                
            // Test Body
            v_spatemReq := valueof(m_spatemReq(
                                       m_spatemPdu(
                                           m_spatem(
                                               {m_intersection_maneuverAssistList(
                                                   { m_connectionManeuverAssist(2) }
                                               )}
                                           )
                                       )
                                   ));
            
            mapemSpatemPort.send(v_spatemReq) ;
            
            f_sleep(PX_TAC);
            for (i := 0; i < lengthof(vc_utSpatemEvents) and not match (v_spatemReq.msgOut , vc_utSpatemEvents[i].spateMsg); i := i + 1) {
                // empty on purpose 
            }
            if(lengthof(vc_utSpatemEvents)==0) {
                log("*** " & testcasename() & ": PASS: SPATEM was NOT transmitted to upper layer***");
                f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
            }
            else {
                log("*** " & testcasename() & ": FAIL: SPATEM was transmitted to upper layer***");
                f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
            }
            // Postamble
            f_poDefault();
            f_cfDown();
            
        } // End of function f_IS_TLM_RCV_SSP_BO_06
} // End of module ItsSpatem_TpFunctions