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();