ItsSpatem_TpFunctions.ttcn 25.9 KB
Newer Older
1 2 3 4 5
/**
 *    @author   ETSI STF517
 *    @version  $URL$
 *              $Id$
 *    @desc     SPATEM TP functions
garciay's avatar
garciay committed
6 7 8 9
 *    @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.
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
 *
 */

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_RLT_MSGF_BV_01
             */
            function f_IS_TLM_MSGF_BV_01 () runs on ItsMapemSpatem {
                
                // Local variables
                
                // Test control
garciay's avatar
garciay committed
50 51
                if (not PICS_RSU_ROLE or not PICS_SPATEM_GENERATION) {
                    log("*** " & testcasename() & ": PICS_RSU_ROLE and PICS_SPATEM_GENERATION required for executing the TC ***");
52 53 54 55 56 57 58 59
                    setverdict(inconc);
                    stop;
                }
                
                // Test component configuration
                f_cfUp();
                    
                // Preamble
garciay's avatar
garciay committed
60
                f_prInitialState();
61
                f_utTriggerEvent(m_utTriggerEvent(startTLMService));
garciay's avatar
garciay committed
62 63
                // Wait for SPATEM sent
                tc_ac.start(2.0);
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                    
                // Test Body
                tc_ac.start;
                alt {
                    [] mapemSpatemPort.receive(
                        mw_spatemInd(
                            mw_spatemPdu
                    )) { 
                        tc_ac.stop;
                        log("*** " & testcasename() & ": PASS: Successfully received SAPTEM PDU header. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                    }
                    [] tc_ac.timeout {
                        log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                    }
                }
                
                // Postamble
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
                f_poDefault();
                f_cfDown();
                
            } // End of function f_IS_TLM_MSGF_BV_01
            
        } // End of group spateMessageFormat
        
garciay's avatar
garciay committed
92
        group spateEventGeneration { 
93 94
            
            /**
garciay's avatar
garciay committed
95
             * @desc    TP Function for f_IS_TLM_EVGN_BV_01
96
             */
garciay's avatar
garciay committed
97
            function f_IS_TLM_EVGN_BV_01() runs on ItsMapemSpatem {
98 99 100 101
                
                // Local variables
                
                // Test control
garciay's avatar
garciay committed
102 103
                if (not PICS_RSU_ROLE or not PICS_SPATEM_GENERATION) {
                    log("*** " & testcasename() & ": PICS_RSU_ROLE and PICS_SPATEM_GENERATION required for executing the TC ***");
104 105 106 107 108 109 110 111
                    setverdict(inconc);
                    stop;
                }
                
                // Test component configuration
                f_cfUp();
                
                // Preamble
garciay's avatar
garciay committed
112
                f_prInitialState();
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
                f_utTriggerEvent(m_utTriggerEvent(startTLMService));
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                    
                // Test Body
                tc_ac.start;
                alt {
                    [] mapemSpatemPort.receive(
                        mw_spatemInd(
                            mw_spatemPdu(
                                mw_spatemWellFormatted
                    ))) { 
                        tc_ac.stop;
                        log("*** " & testcasename() & ": PASS: Successfully received well-formed SPATEM. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                    }
                    [] mapemSpatemPort.receive(
                        mw_spatemInd(
                            mw_spatemPdu(
                                mw_defaultSpatem
                    ))) { 
                        tc_ac.stop;
                        log("*** " & testcasename() & ": FAIL: Received a SPATEM with incorrect information. ***");
                        f_selfOrClientSyncAndVerdictPreamble(c_tbDone, e_success);
                    }
                    [] tc_ac.timeout {
                        log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                    }
                }
                
                // Postamble
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
                f_poDefault();
                f_cfDown();
                
            } // End of function f_IS_TLM_EVGN_BV_01
            
            /**
garciay's avatar
garciay committed
151
             * @desc    TP Function for f_IS_TLM_EVGN_BV_02
152
             */
garciay's avatar
garciay committed
153
            function f_IS_TLM_EVGN_BV_02() runs on ItsMapemSpatem {
154 155 156 157 158
                
                // Local variables
                var SpatemInd v_spatem;
                
                // Test control
garciay's avatar
garciay committed
159 160
                if (not PICS_RSU_ROLE or not PICS_SPATEM_GENERATION) {
                    log("*** " & testcasename() & ": PICS_RSU_ROLE and PICS_SPATEM_GENERATION required for executing the TC ***");
161 162 163 164 165 166 167 168
                    setverdict(inconc);
                    stop;
                }
                
                // Test component configuration
                f_cfUp();
                    
                // Preamble
garciay's avatar
garciay committed
169
                f_prInitialState();
170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220
                f_utTriggerEvent(m_utTriggerEvent(startTLMService));
                f_awaitSpateMessage(
                    mw_spatemInd(
                        mw_spatemPdu(
                            mw_spatemWellFormatted
                        )
                    ), 
                    v_spatem
                );
                
                // Test Body
                f_utTriggerEvent(m_utTriggerEvent(spatemNewContent));
                tc_ac.start;
                alt {
                    [] mapemSpatemPort.receive(v_spatem) { 
                        tc_ac.stop;
                        log("*** " & testcasename() & ": FAIL: The same SPATEM was received. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                    }
                    [] mapemSpatemPort.receive(
                        mw_spatemInd(
                            mw_spatemPdu(
                                mw_spatemWellFormatted
                    ))) { 
                        tc_ac.stop;
                        log("*** " & testcasename() & ": PASS: Successfully received a new well-formed SPATE message. ***");
                        f_selfOrClientSyncAndVerdictPreamble(c_tbDone, e_success);
                    }
                    [] mapemSpatemPort.receive(
                        mw_spatemInd(
                            mw_spatemPdu(
                                mw_defaultSpatem
                    ))) { 
                        tc_ac.stop;
                        log("*** " & testcasename() & ": FAIL: Received a SPATEM with incorrect information. ***");
                        f_selfOrClientSyncAndVerdictPreamble(c_tbDone, e_success);
                    }
                    [] tc_ac.timeout {
                        log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                    }
                }
                
                // Postamble
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
                f_poDefault();
                f_cfDown();
                
            } // End of function f_IS_TLM_EVGN_BV_02
            
            /**
garciay's avatar
garciay committed
221
             * @desc    TP Function for f_IS_TLM_EVGN_BV_03
222
             */
garciay's avatar
garciay committed
223
            function f_IS_TLM_EVGN_BV_03() runs on ItsMapemSpatem { // TODO Move ito spateEventTermination goup
224 225 226 227
                
                // Local variables
                
                // Test control
garciay's avatar
garciay committed
228 229
                if (not PICS_RSU_ROLE or not PICS_SPATEM_GENERATION) {
                    log("*** " & testcasename() & ": PICS_RSU_ROLE and PICS_SPATEM_GENERATION required for executing the TC ***");
230 231 232 233 234 235 236 237
                    setverdict(inconc);
                    stop;
                }
                
                // Test component configuration
                f_cfUp();
                
                // Preamble
garciay's avatar
garciay committed
238
                f_prInitialState();
239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268
                f_utTriggerEvent(m_utTriggerEvent(startTLMService));
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                    
                // Test Body
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
                mapemSpatemPort.clear;
                tc_noac.start;
                alt {
                    [] mapemSpatemPort.receive(
                        mw_spatemInd(
                            mw_spatemPdu(
                                mw_defaultSpatem
                    ))) { 
                        tc_noac.stop;
                        log("*** " & testcasename() & ": FAIL: No more SPATEM messages were expected. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                    }
                    [] tc_noac.timeout {
                        log("*** " & testcasename() & ": PASS: TLM Service terminated. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                    }
                }
                    
                // Postamble
                f_poDefault();
                f_cfDown();
                
            } // End of function f_IS_TLM_EVGN_BV_03
            
            /**
garciay's avatar
garciay committed
269
             * @desc    TP Function for f_IS_TLM_EVGN_BV_04
270
             */
garciay's avatar
garciay committed
271
            function f_IS_TLM_EVGN_BV_04() runs on ItsMapemSpatem {
272 273 274 275 276
                
                // Local variables
                var SpatemInd v_spatem;
                
                // Test control
garciay's avatar
garciay committed
277 278
                if (not PICS_RSU_ROLE or not PICS_SPATEM_GENERATION) {
                    log("*** " & testcasename() & ": PICS_RSU_ROLE and PICS_SPATEM_GENERATION required for executing the TC ***");
279 280 281 282 283 284 285 286
                    setverdict(inconc);
                    stop;
                }
                
                // Test component configuration
                f_cfUp();
                    
                // Preamble
garciay's avatar
garciay committed
287
                f_prInitialState();
288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337
                f_utTriggerEvent(m_utTriggerEvent(startTLMService));
                f_awaitSpateMessage(
                    mw_spatemInd(
                        mw_spatemPdu(
                            mw_defaultSpatem
                        )
                    ), 
                    v_spatem
                );
                
                // Test Body
                f_utTriggerEvent(m_utTriggerEvent(spatemNewContent));
                tc_ac.start;
                alt {
                    [] mapemSpatemPort.receive(v_spatem) { 
                        tc_ac.stop;
                        log("*** " & testcasename() & ": FAIL: A different SPATE message was expected. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                    }
                    [] mapemSpatemPort.receive(
                        mw_spatemInd(
                            mw_spatemPdu(
                                mw_spatemWellFormatted
                    ))) { 
                        tc_ac.stop;
                        log("*** " & testcasename() & ": PASS: Successfully received a new well-formed SPATE message. ***");
                        f_selfOrClientSyncAndVerdictPreamble(c_tbDone, e_success);
                    }
                    [] mapemSpatemPort.receive(
                        mw_spatemInd(
                            mw_spatemPdu(
                                mw_defaultSpatem
                    ))) { 
                        tc_ac.stop;
                        log("*** " & testcasename() & ": FAIL: Received a SPATEM with incorrect information. ***");
                        f_selfOrClientSyncAndVerdictPreamble(c_tbDone, e_success);
                    }
                    [] tc_ac.timeout {
                        log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                    }
                }
                
                // Postamble
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
                f_poDefault();
                f_cfDown();
                
            } // End of function f_IS_TLM_EVGN_BV_04
            
garciay's avatar
garciay committed
338
        } // End of group spateEventGeneration
339 340 341 342
        
        group spateCommunication {
            
            /**
garciay's avatar
garciay committed
343
             * @desc    TP Function for f_IS_TLM_COMM_BV_01
344
             */
garciay's avatar
garciay committed
345
            function f_IS_TLM_COMM_BV_01 () runs on ItsMapemSpatem {
346 347 348
                
                // Local variables
                
garciay's avatar
garciay committed
349 350 351 352 353 354 355
                // Test control
                if (not PICS_RSU_ROLE or not PICS_SPATEM_GENERATION) {
                    log("*** " & testcasename() & ": PICS_RSU_ROLE and PICS_SPATEM_GENERATION required for executing the TC ***");
                    setverdict(inconc);
                    stop;
                }
                
356 357 358 359
                // Test component configuration
                f_cfUp();
                
                // Preamble
garciay's avatar
garciay committed
360
                f_prInitialState();
361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389
                f_utTriggerEvent(m_utTriggerEvent(startTLMService));
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                
                // Test Body
                tc_ac.start;
                alt {
                    [] mapemSpatemPort.receive(
                        mw_spatemInd(
                           mw_spatemPdu(
                               mw_spatem_with_region_id
                    ))) { 
                        tc_ac.stop;
                        log("*** " & testcasename() & ": PASS: Successfully received MAPEM using GBC. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                    }
                    [] tc_ac.timeout {
                        log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                    }
                }
                
                // Postamble
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
                f_poDefault();
                f_cfDown();
                
            } // End of function f_IS_TLM_COMM_BV_01
            
            /**
garciay's avatar
garciay committed
390
             * @desc    TP Function for f_IS_TLM_COMM_BV_02_01
391
             */
garciay's avatar
garciay committed
392
            function f_IS_TLM_COMM_BV_02_01 () runs on ItsMapemSpatem {
393 394 395 396
                
                // Local variables
                const UInt8 c_gnNhBtpB := 2;
                
garciay's avatar
garciay committed
397 398 399 400 401 402 403
                // Test control
                if (not PICS_RSU_ROLE or not PICS_SPATEM_GENERATION) {
                    log("*** " & testcasename() & ": PICS_RSU_ROLE and PICS_SPATEM_GENERATION required for executing the TC ***");
                    setverdict(inconc);
                    stop;
                }
                
404 405 406 407
                // Test component configuration
                f_cfUp();
                
                // Preamble
garciay's avatar
garciay committed
408
                f_prInitialState();
409 410 411 412 413 414 415 416 417 418 419 420
                f_utTriggerEvent(m_utTriggerEvent(startTLMService));
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                
                // Test Body
                tc_ac.start;
                alt {
                    [] mapemSpatemPort.receive(
                        mw_spatemIndWithGnParameters(
                           mw_spatemPdu, 
                           c_gnNhBtpB
                    )) { 
                        tc_ac.stop;
garciay's avatar
garciay committed
421
                        log("*** " & testcasename() & ": PASS: Expected SPATEM encapsultated in BTP-B packet received. ***");
422 423 424 425 426 427 428 429 430
                        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
431
                        log("*** " & testcasename() & ": FAIL: Expected SPATEM received, but not encapsulated in BTP-B packet ***");
432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_error);  
                    }                    
                    [] tc_ac.timeout {
                        log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                    }
                }
                
                // Postamble
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
                f_poDefault();
                f_cfDown();
                
            } // End of function f_IS_TLM_COMM_BV_02_01
            
            /**
garciay's avatar
garciay committed
448
             * @desc    TP Function for f_IS_TLM_COMM_BV_02_02
449
             */
garciay's avatar
garciay committed
450
            function f_IS_TLM_COMM_BV_02_02 () runs on ItsMapemSpatem {
451 452 453 454
                
                // Local variables
                const UInt16 c_gnNhBtpBPort := 2004;
                
garciay's avatar
garciay committed
455 456 457 458 459 460 461
                // Test control
                if (not PICS_RSU_ROLE or not PICS_SPATEM_GENERATION) {
                    log("*** " & testcasename() & ": PICS_RSU_ROLE and PICS_SPATEM_GENERATION required for executing the TC ***");
                    setverdict(inconc);
                    stop;
                }
                
462 463 464 465
                // Test component configuration
                f_cfUp();
                
                // Preamble
garciay's avatar
garciay committed
466
                f_prInitialState();
467 468 469 470 471 472 473 474 475 476 477 478 479
                f_utTriggerEvent(m_utTriggerEvent(startTLMService));
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                
                // Test Body
                tc_ac.start;
                alt {
                    [] mapemSpatemPort.receive(
                        mw_spatemIndWithBtpParameters(
                           mw_spatemPdu, 
                           c_gnNhBtpBPort,
                           0
                    )) { 
                        tc_ac.stop;
garciay's avatar
garciay committed
480
                        log("*** " & testcasename() & ": PASS: Expected SPATEM encapsultated in BTP packet with port value 2004 received. ***");
481 482 483 484
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                    }
                    [] mapemSpatemPort.receive(mw_spatemInd(mw_spatemPdu(mw_defaultSpatem))) { 
                        tc_ac.stop;
garciay's avatar
garciay committed
485
                        log("*** " & testcasename() & ": FAIL: Expected SPATEM received, but not addressed to the correct destination port. ***");
486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_error);  
                    }                    
                    [] tc_ac.timeout {
                        log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                    }
                }
                
                // Postamble
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
                f_poDefault();
                f_cfDown();
                
            } // End of function f_IS_TLM_COMM_BV_02_02
            
            /**
garciay's avatar
garciay committed
502
             * @desc    TP Function for f_IS_TLM_COMM_BV_03
503
             */
garciay's avatar
garciay committed
504
            function f_IS_TLM_COMM_BV_03 () runs on ItsMapemSpatem {
505 506 507 508
                
                // Local variables
                const UInt8 c_gnHtGbc := 4;
                
garciay's avatar
garciay committed
509 510 511 512 513 514 515
                // Test control
                if (not PICS_RSU_ROLE or not PICS_SPATEM_GENERATION) {
                    log("*** " & testcasename() & ": PICS_RSU_ROLE and PICS_SPATEM_GENERATION required for executing the TC ***");
                    setverdict(inconc);
                    stop;
                }
                
516 517 518 519
                // Test component configuration
                f_cfUp();
                
                // Preamble
garciay's avatar
garciay committed
520
                f_prInitialState();
521 522 523 524 525 526 527 528 529 530 531 532 533 534 535
                f_utTriggerEvent(m_utTriggerEvent(startTLMService));
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                
                // Test Body
                tc_ac.start;
                alt {
                    [] mapemSpatemPort.receive(
                        mw_spatemIndWithGnParameters(
                           mw_spatemPdu(
                               mw_spatemWellFormatted
                           ),
                           -,
                           c_gnHtGbc
                    )) { 
                        tc_ac.stop;
garciay's avatar
garciay committed
536
                        log("*** " & testcasename() & ": PASS: Expected SPATEM encapsulated in GBC packet received. ***");
537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                    }
                    [] mapemSpatemPort.receive(
                        mw_spatemIndWithGnParameters(
                           mw_spatemPdu(
                               mw_spatemWellFormatted
                           ),
                           -,
                           omit
                    )) { 
                        tc_ac.stop;
                        log("*** " & testcasename() & ": FAIL: Eno GN HT information in SpatemInd. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                    }
                    [] mapemSpatemPort.receive(
                        mw_spatemInd(
                           mw_spatemPdu(
                               mw_spatemWellFormatted
                    ))) { 
                        tc_ac.stop;
                        log("*** " & testcasename() & ": FAIL: Expected SPATEM received, but not encapsulated in GBC packet. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                    }
                    [] tc_ac.timeout {
                        log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                    }
                }
                
                // Postamble
                f_utTriggerEvent(m_utTriggerEvent(stopTLMService));
                f_poDefault();
                f_cfDown();
                
            } // End of function f_IS_TLM_COMM_BV_03
            
        } // End of group spateCommunication 
        
    } // End of group spateMessageDissemination
    
    group spateMessageProcessing {
            
            /**
garciay's avatar
garciay committed
580
             * @desc    TP Function for f_IS_TLM_MSGF_BV_02
581
             */
garciay's avatar
garciay committed
582
            function f_IS_TLM_MSGF_BV_02 () runs on ItsMapemSpatem {
583 584 585 586 587
                    
                // Local variables
                var SpatemReq   v_spatemReq;
                var integer     i;
                
garciay's avatar
garciay committed
588 589
                if (PICS_RSU_ROLE and not PICS_SPATEM_RECEPTION) {
                    log("*** " & testcasename() & ": not PICS_RSU_ROLE and PICS_SPATEM_RECEPTION required for executing the TC ***");
590 591 592 593 594 595 596 597
                    setverdict(inconc);
                    stop;
                }
                
                // Test component configuration
                f_cfUp();
                
                // Preamble
garciay's avatar
garciay committed
598
                f_prInitialState();
599 600 601
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                
                // Test Body
602
                v_spatemReq := valueof(m_spatemReq(m_spatemPdu(m_defaultSpatem)));
603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625
                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_MSGF_BV_02
            
    } // End of group spateMessageProcessing
    
} // End of module ItsSpatem_TpFunctions