ItsRSUsSimulator_TestCases.ttcn 20.1 KB
Newer Older
garciay's avatar
garciay committed
1 2 3 4 5 6
module ItsRSUsSimulator_TestCases {
    
    // Libcommon
    import from LibCommon_VerdictControl all;
    import from LibCommon_Sync all;
    
garciay's avatar
garciay committed
7 8 9
    // LibIts
    import from ITS_Container language "ASN.1:1997" all;
    import from CAM_PDU_Descriptions language "ASN.1:1997" all;
10 11 12
    import from IEEE1609dot2BaseTypes language "ASN.1:1997" all;
    import from IEEE1609dot2 language "ASN.1:1997" all;
    import from EtsiTs103097Module language "ASN.1:1997" all;
garciay's avatar
garciay committed
13
    
garciay's avatar
garciay committed
14 15 16 17 18 19 20 21
    // LibItsCommon
    import from LibItsCommon_Functions all;
    
    // LibItsGeoNetworking
    import from LibItsGeoNetworking_TestSystem all;
    import from LibItsGeoNetworking_TypesAndValues all;
    import from LibItsGeoNetworking_Templates all;
    
22
    // LibItsCam
23
    import from LibItsCam_TypesAndValues all;
24 25
    import from LibItsCam_EncdecDeclarations all;
    
garciay's avatar
garciay committed
26 27 28
    // LibItsDenm
    import from LibItsDenm_Templates all;
    
garciay's avatar
garciay committed
29 30 31 32
    // LibItsSecurity
    import from LibItsSecurity_TypesAndValues all;
    import from LibItsSecurity_Functions all;
    
garciay's avatar
garciay committed
33 34 35 36 37
    // AtsRSUsSimulator
    import from ItsRSUsSimulator_TypesAndValues all;
    import from ItsRSUsSimulator_Templates all;
    import from ItsRSUsSimulator_TestSystem all;
    import from ItsRSUsSimulator_Functions all;
garciay's avatar
garciay committed
38
    import from ItsRSUsSimulator_Pics all;
garciay's avatar
garciay committed
39 40
    import from ItsRSUsSimulator_Pixits all;
    
41
    testcase TC_RSUSIMU_BV_01() runs on ItsRSUsSimulator system ItsRSUsSimulatorSystem {
garciay's avatar
garciay committed
42
        // Local variables
43
        var template (value) GnRawPayload v_payload;
garciay's avatar
garciay committed
44
        var GeoNetworkingInd v_gnInd;
45
        var CfEvent v_cfEvent;
garciay's avatar
garciay committed
46 47 48 49
        
        // Test control
        
        // Test component configuration
50
        ItsRSUsSimulator_Functions.f_cf01Up();
garciay's avatar
garciay committed
51 52 53 54
            
        // Test adapter configuration
        
        // Preamble
55
        activate(a_process_cf_ut_command());
garciay's avatar
garciay committed
56 57 58
        f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
        
        // Test Body
YannGarcia's avatar
YannGarcia committed
59 60
        if (PICS_ITS_S_ROLE == false) {
          if (ispresent(vc_rsuMessagesValueList[vc_rsu_id].beacon)) {
61
            tc_beacon.start;
YannGarcia's avatar
YannGarcia committed
62 63
          }
          if (ispresent(vc_rsuMessagesValueList[vc_rsu_id].cam)) {
64
            tc_cam.start(vc_cam_timer_value);
YannGarcia's avatar
YannGarcia committed
65 66
          }
          if (ispresent(vc_rsuMessagesValueList[vc_rsu_id].denms)) {
67
            tc_denm.start;
YannGarcia's avatar
YannGarcia committed
68 69
          }
          if (ispresent(vc_rsuMessagesValueList[vc_rsu_id].mapem)) {
garciay's avatar
garciay committed
70
            tc_mapem.start;
YannGarcia's avatar
YannGarcia committed
71 72
          }
          if (ispresent(vc_rsuMessagesValueList[vc_rsu_id].spatems)) {
garciay's avatar
garciay committed
73
            tc_spatem.start;
YannGarcia's avatar
YannGarcia committed
74 75
          }
          if (ispresent(vc_rsuMessagesValueList[vc_rsu_id].ivim)) {
garciay's avatar
garciay committed
76
            tc_ivim.start;
YannGarcia's avatar
YannGarcia committed
77 78 79 80 81
          }
          /* if (ispresent(vc_rsuMessagesValueList[vc_rsu_id].evcsn)) { */
          /*     tc_evcsn.start; */
          /* } */
        } // else, nothing to do, waiting for PKI triggers
82

garciay's avatar
garciay committed
83
        geoNetworkingPort.clear;
garciay's avatar
garciay committed
84
        alt {
YannGarcia's avatar
YannGarcia committed
85
          [PICS_SEND_BEACON_INDICATION == true] geoNetworkingPort.receive(
garciay's avatar
garciay committed
86 87
                mw_geoNwInd(
                    mw_geoNwPdu(
YannGarcia's avatar
YannGarcia committed
88 89 90 91
                                mw_geoNwShbPacket
                                ))) -> value v_gnInd { // Receive a BEACON
                log("*** " & testcasename() & ": DEBUG: Processing Beacon ***");
                f_processBeacon(v_gnInd.msgIn);
garciay's avatar
garciay committed
92
                repeat;
YannGarcia's avatar
YannGarcia committed
93 94
          }
          [PICS_SEND_DENM_INDICATION == true] geoNetworkingPort.receive(
95 96
                mw_geoNwInd(
                    mw_geoNwPdu(
YannGarcia's avatar
YannGarcia committed
97
                        mw_geoNwBroadcastPacketWithNextHeader_denm( //mw_geoNwTsbPacketWithNextHeader_denm(
98
                            ?,
YannGarcia's avatar
YannGarcia committed
99
                            ?
100
            )))) -> value v_gnInd { // Receive a DENM message
YannGarcia's avatar
YannGarcia committed
101 102
                log("*** " & testcasename() & ": DEBUG: Processing DENM ***");
                f_processDenm(v_gnInd.msgIn);
103
                repeat;
YannGarcia's avatar
YannGarcia committed
104 105
          }
          [PICS_SEND_CAM_INDICATION == true] geoNetworkingPort.receive(
garciay's avatar
garciay committed
106 107 108 109 110 111
                mw_geoNwInd(
                    mw_geoNwPdu(
                        mw_geoNwShbPacketWithNextHeader_cam(
                            ?,
                            ?,
                            e_btpB
YannGarcia's avatar
YannGarcia committed
112
            )))) -> value v_gnInd { // Receive a CAM message
garciay's avatar
garciay committed
113 114 115
                log("*** " & testcasename() & ": DEBUG: Processing CAM ***");
                f_processCam(v_gnInd.msgIn);
                repeat;
YannGarcia's avatar
YannGarcia committed
116
            }
garciay's avatar
garciay committed
117
            [] geoNetworkingPort.receive(mw_geoNwInd(?)) -> value v_gnInd { // Receive a message
118
                log("*** " & testcasename() & ": DEBUG: Recieving unsollicited message ***");
garciay's avatar
garciay committed
119 120
                // Nothing to do, just for logging purposes
                repeat;
121
            }
122 123
            [] cfPort.receive(CfEvent:?) -> value v_cfEvent {
                log("*** " & testcasename() & ": DEBUG: Configuration port command:", v_cfEvent, " ***");
124 125 126
                if (f_process_cf_event(v_cfEvent) == true) {
                    repeat;
                }
127
            }
128
            [vc_beacon == true] tc_beacon.timeout {
YannGarcia's avatar
YannGarcia committed
129
                //log("*** " & testcasename() & ": DEBUG: Processing BEACON ***");
garciay's avatar
garciay committed
130
                f_send(v_payload, PICS_BEACON_ITS_AID);
131 132 133
                tc_beacon.start;
                repeat;
            }
134
            [vc_cam == true] tc_cam.timeout {
135
                //log("*** " & testcasename() & ": DEBUG: Processing CAM ***");
garciay's avatar
garciay committed
136
                f_prepare_cam(v_payload);
137
                f_send(v_payload, PICS_CAM_ITS_AID);
138
                tc_cam.start(vc_cam_timer_value);
garciay's avatar
garciay committed
139 140
                repeat;
            }
141
            [vc_denm == true] tc_denm.timeout {
142
                //log("*** " & testcasename() & ": DEBUG: Processing DENM ***");
143 144 145 146
                for (var integer v_i := 0; v_i < lengthof(vc_rsuMessagesValueList[vc_rsu_id].denms); v_i := v_i + 1) {
                    f_prepare_denm(v_payload);
                    f_send(v_payload, PICS_DENM_ITS_AID);
                } // End of 'for' 
147
                tc_denm.start;
garciay's avatar
garciay committed
148 149
                repeat;
            }
150
            [vc_mapem == true] tc_mapem.timeout {
151
                log("*** " & testcasename() & ": DEBUG: Processing MAPEM ***");
garciay's avatar
garciay committed
152
                f_prepare_mapem(v_payload);
153
                f_send(v_payload, PICS_MAPEM_ITS_AID);
garciay's avatar
garciay committed
154 155 156
                tc_mapem.start;
                repeat;
            }
157
            [vc_spatem == true] tc_spatem.timeout {
158
                log("*** " & testcasename() & ": DEBUG: Processing SPATEM ***");
159 160
                for (var integer v_counter := 0; v_counter < lengthof(vc_rsuMessagesValueList[PX_RSU_ID - 1].spatems); v_counter := v_counter + 1) {
                    f_prepare_spatem(vc_rsuMessagesValueList[PX_RSU_ID - 1].spatems[v_counter], v_payload);
161
                    f_send(v_payload, PICS_SPATEM_ITS_AID);
162
                }
garciay's avatar
garciay committed
163 164 165
                tc_spatem.start;
                repeat;
            }
166
            [vc_ivim == true] tc_ivim.timeout {
167
                //log("*** " & testcasename() & ": DEBUG: Processing IVIM ***");
garciay's avatar
garciay committed
168
                f_prepare_ivim(v_payload);
169
                f_send(v_payload, PICS_IVIM_ITS_AID);
garciay's avatar
garciay committed
170 171 172
                tc_ivim.start;
                repeat;
            }
173 174 175 176 177 178 179
            /* [vc_evcsn == true] tc_evcsn.timeout { */
            /*     //log("*** " & testcasename() & ": DEBUG: Processing EVCSN ***"); */
            /*     f_prepare_evcsn(v_payload); */
            /*     f_send(v_payload, PICS_EVCSN_ITS_AID); */
            /*     tc_evcsn.start; */
            /*     repeat; */
            /* } */
garciay's avatar
garciay committed
180 181 182 183
        } // End of 'alt' statement
        f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
        
        // Postamble
184 185 186 187 188 189
        if (ispresent(vc_rsuMessagesValueList[vc_rsu_id].denms)) {
            for (var integer v_i := 0; v_i < lengthof(vc_rsuMessagesValueList[vc_rsu_id].denms); v_i := v_i + 1) {
                f_prepare_denm(v_payload, true);
                f_send(v_payload, PICS_DENM_ITS_AID);
            } // End of 'for' statement
        }
190
        ItsRSUsSimulator_Functions.f_cf01Down();
garciay's avatar
garciay committed
191
        
garciay's avatar
garciay committed
192 193 194 195 196 197 198 199
    } // End of TC_RSUSIMU_BV_01
    
    /**
     * @remark: All PICS_GENERATE_xxx = false
     *          PICS_CAM_FREQUENCY = 0.1
     */
    testcase TC_RSUSIMU_BV_02() runs on ItsRSUsSimulator system ItsRSUsSimulatorSystem {
        // Local variables
200
        const SequenceOfRectangularRegion c_detectionArea := { valueof(PICS_UC6_CAM_DETECTION_AREA_Z2) }; // PICS_UC6_CAM_DETECTION_AREA_Z1
garciay's avatar
garciay committed
201
        var VehiclesSimulator v_vehicles := {};
garciay's avatar
garciay committed
202 203 204 205
        var integer v_stationID;
        var boolean v_isInDetectionZone;
        var boolean v_notProcessed;
        var integer v_idx;
garciay's avatar
garciay committed
206
        var ThreeDLocation v_location;
garciay's avatar
garciay committed
207
        var GeoNetworkingInd v_gnInd;
208
        //var CfEvent v_cfEvent;
garciay's avatar
garciay committed
209 210
        
        // Test control
garciay's avatar
garciay committed
211 212
        if (f_isLocationInsideRectangularRegion(c_detectionArea, PICS_UC6_COLLISION_POINT_Z2) == false) { //PICS_UC6_COLLISION_POINT_Z1
            log("Collision location is outside of the area");
garciay's avatar
garciay committed
213 214
            stop;
        }
garciay's avatar
garciay committed
215 216
        
        // Test component configuration
217
        ItsRSUsSimulator_Functions.f_cf01Up();
garciay's avatar
garciay committed
218 219 220 221
            
        // Test adapter configuration
        
        // Preamble
garciay's avatar
garciay committed
222
        for (v_idx := 0; v_idx < SIMULTANEOUS_VEHICLE_NUM; v_idx := v_idx + 1) { 
garciay's avatar
garciay committed
223 224 225 226
            v_vehicles[v_idx].detected := false;
            v_vehicles[v_idx].detectionCounter := 0;
            v_vehicles[v_idx].stationId := 0;
        } // End of 'for' statement
garciay's avatar
garciay committed
227 228 229 230
        f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
        
        // Test Body
        tc_ac.start;
231
        geoNetworkingPort.clear;
garciay's avatar
garciay committed
232 233 234 235 236
        alt {
            [] geoNetworkingPort.receive(
                mw_geoNwInd(
                    mw_geoNwPdu(
                        mw_geoNwShbPacketWithNextHeader_cam(
237 238 239 240
                            -,
                            -,
                            e_btpB
            )))) -> value v_gnInd { // Receive a CAM message
241 242 243 244
                var CAM v_camValue; // Assume BTP/CAM payload is well formed
                var bitstring v_payload;
                var integer v_result;
                
garciay's avatar
garciay committed
245
                tc_ac.stop;
garciay's avatar
garciay committed
246
                //log("v_gnInd = ", v_gnInd);
247 248 249 250 251 252 253 254 255
                v_payload := oct2bit(substr(v_gnInd.msgIn.gnPacket.packet.payload, 4, lengthof(v_gnInd.msgIn.gnPacket.packet.payload) - 4));
                v_result := decvalue(v_payload, v_camValue);
                if (isbound(v_camValue)) {
                    if (PICS_USE_LPV == true) {
                        v_location := {
                            v_gnInd.msgIn.gnPacket.packet.extendedHeader.shbHeader.srcPosVector.latitude,
                            v_gnInd.msgIn.gnPacket.packet.extendedHeader.shbHeader.srcPosVector.longitude,
                            0
                        };
garciay's avatar
garciay committed
256
                    } else {
257 258 259 260 261
                        v_location := {
                            v_camValue.cam.camParameters.basicContainer.referencePosition.latitude,
                            v_camValue.cam.camParameters.basicContainer.referencePosition.longitude,
                            v_camValue.cam.camParameters.basicContainer.referencePosition.altitude.altitudeValue
                        };
garciay's avatar
garciay committed
262
                    }
263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 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
                    v_stationID := v_camValue.header.stationID;
                    
                    // Check if it already processed
                    v_notProcessed := true;
                    for (v_idx := 0; v_idx < SIMULTANEOUS_VEHICLE_NUM and v_vehicles[v_idx].stationId != 0; v_idx := v_idx + 1) { 
                        if (v_vehicles[v_idx].stationId == v_stationID) {
                            v_notProcessed := not(v_vehicles[v_idx].detected);
                            break;
                        }
                    } // End of 'for' statement
                    if (v_idx < SIMULTANEOUS_VEHICLE_NUM) {
                        v_vehicles[v_idx].stationId := v_stationID;
                    } else if (v_idx == SIMULTANEOUS_VEHICLE_NUM) {
                        log("*** " & testcasename() & ": ERROR: Increase the size of the file ***");
                        stop;
                    }
                    //v_isInDetectionZone := f_isLocationInsideRectangularRegion(c_detectionArea, v_location);
                    v_isInDetectionZone := f_isInApproach(PX_UC6_APPROACH_POINT_Z2, v_location, 100.0);
                    log("v_idx:               ", v_idx);
                    log("v_vehicles[v_idx]:   ", v_vehicles[v_idx]);
                    log("v_notProcessed:      ", v_notProcessed);
                    log("v_isInDetectionZone: ", v_isInDetectionZone);
                    if (v_notProcessed == true) { // Vehicle not processed yet                    
                        if (v_isInDetectionZone == true) { // Check if it entered into the rectangular area
                            /*if (v_vehicles[v_idx].detectionCounter == 0) { // First detection, wait one CAM to confrm detection
                                // Prepare component
                                v_vehicles[v_idx].detectionCounter := v_vehicles[v_idx].detectionCounter + 1;*/
                                v_vehicles[v_idx].component_ := ItsRSUsSimulator.create("Node" & int2char(v_idx + 65)) alive;
                                // Wait next message in detection area
                            /*} else {*/
                                log("*** " & testcasename() & ": DEBUG: StationID: " & int2str(v_stationID) & " is entering in area ***");
                                v_vehicles[v_idx].detectionCounter := 1;/*0;*/
                                v_vehicles[v_idx].detected := true;
                                v_vehicles[v_idx].component_.start(f_startVehicleSimulator(v_vehicles[v_idx].component_, v_idx, v_camValue));
                            /*}*/
                        } else {
                            // Nothing to do
    //                        log("*** " & testcasename() & ": DEBUG: StationID: " & int2str(v_stationID) & " is outside of area ***");
                            v_vehicles[v_idx].detectionCounter := 0;
                            v_vehicles[v_idx].detected := false;
                            //v_vehicles[v_idx].stationId := 0;
                        }
                    } else if (v_isInDetectionZone == false) {
                        if (v_vehicles[v_idx].detected == true) { // Remove station if from v_stationIDs
                            log("*** " & testcasename() & ": DEBUG: Remove stationID: " & int2str(v_stationID) & " ***");
                            v_vehicles[v_idx].detectionCounter := 0;
                            v_vehicles[v_idx].detected := false;
                            //v_vehicles[v_idx].stationId := 0;
                            v_vehicles[v_idx].component_.kill;
                        } else {
                            v_vehicles[v_idx].detectionCounter := 0;
                            v_vehicles[v_idx].detected := false;
                            //v_vehicles[v_idx].stationId := 0;
                        }
garciay's avatar
garciay committed
317
                    } else {
318 319
                        // Nothing to do
                        log("*** " & testcasename() & ": DEBUG: StationID: " & int2str(v_stationID) & " already processed ***");
garciay's avatar
garciay committed
320
                    }
321 322
                    tc_ac.start;
                    repeat;
garciay's avatar
garciay committed
323 324
                }
            }
garciay's avatar
garciay committed
325 326 327 328 329 330 331 332 333 334
            [] geoNetworkingPort.receive(
                mw_geoNwInd(
                    mw_geoNwPdu(
                       ?
            ))) -> value v_gnInd { // Receive a CAM message
                tc_ac.stop;
//                log("v_gnInd = ", v_gnInd);
                tc_ac.start;
                repeat;
            }
garciay's avatar
garciay committed
335
            [] tc_ac.timeout {
336
                log("*** " & testcasename() & ": DEBUG: No CAM message received ***");
garciay's avatar
garciay committed
337 338 339
                //all component.stop;
                tc_ac.start;
                repeat;
garciay's avatar
garciay committed
340 341 342 343 344
            }
        } // End of 'alt' statement
        f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
        
        // Postamble
garciay's avatar
garciay committed
345
        for (v_idx := 0; v_idx < lengthof(v_vehicles); v_idx := v_idx + 1) {
garciay's avatar
garciay committed
346 347 348
            if (isbound(v_vehicles[v_idx].component_)) {
                v_vehicles[v_idx].component_.kill;
            }
garciay's avatar
garciay committed
349
        } // End of 'for' statement
350
        ItsRSUsSimulator_Functions.f_cf01Down();
garciay's avatar
garciay committed
351 352 353 354 355 356 357
        
    } // End of TC_RSUSIMU_BV_02
    
    group tc_RSUSIMU_BV_02 {
        
        function f_startVehicleSimulator(
                                         in ItsRSUsSimulator p_component,
garciay's avatar
garciay committed
358 359
                                         in integer p_vehicleIndex,
                                         in CAM p_camVehicle
garciay's avatar
garciay committed
360 361 362
        ) runs on ItsRSUsSimulator {
            
            // Local variables
363
            const SequenceOfRectangularRegion c_detectionArea := { valueof(PICS_UC6_CAM_DETECTION_AREA_Z2) }; // PICS_UC6_CAM_DETECTION_AREA_Z1
364 365
            var GeoNetworkingInd v_gnInd;
            var template (value) CAM v_camSimu;
garciay's avatar
garciay committed
366
            var ThreeDLocation v_location;
garciay's avatar
garciay committed
367
            var boolean v_inArea;
garciay's avatar
garciay committed
368
            
garciay's avatar
garciay committed
369
            f_initialiseVehicleSimulatorComponent(p_component, p_vehicleIndex, v_camSimu);
garciay's avatar
garciay committed
370
            
garciay's avatar
garciay committed
371
            tc_ac.start;
garciay's avatar
garciay committed
372
            geoNetworkingPort.clear;
garciay's avatar
garciay committed
373
            alt {
374 375 376 377 378 379 380 381 382 383 384
                [] geoNetworkingPort.receive(
                    mw_geoNwInd(
                        mw_geoNwPdu(
                            mw_geoNwShbPacketWithNextHeader_cam(
                                -,
                                -,
                                e_btpB,
                                mw_cam_stationID(
                                    -,
                                    p_camVehicle.header.stationID
                ))))) -> value v_gnInd { // Receive a CAM message from the processed vehicle
385 386 387 388
                    var CAM v_camValue; // Assume BTP/CAM payload is well formed
                    var bitstring v_payload;
                    var integer v_result;
                    
garciay's avatar
garciay committed
389
                    tc_ac.stop;
garciay's avatar
garciay committed
390
//                    log("*** " & testcasename() & ": DEBUG: Processing CAM #" & int2str(p_camVehicle.header.stationID) & " ***");
391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419
                    v_payload := oct2bit(substr(v_gnInd.msgIn.gnPacket.packet.payload, 4, lengthof(v_gnInd.msgIn.gnPacket.packet.payload) - 4));
                    v_result := decvalue(v_payload, v_camValue);
                    if (isbound(v_camValue)) {
                        if (PICS_USE_LPV == true) {
                            v_location := {
                                v_gnInd.msgIn.gnPacket.packet.extendedHeader.shbHeader.srcPosVector.latitude,
                                v_gnInd.msgIn.gnPacket.packet.extendedHeader.shbHeader.srcPosVector.longitude,
                                0
                            };
                        } else {
                            v_location := {
                                v_camValue.cam.camParameters.basicContainer.referencePosition.latitude,
                                v_camValue.cam.camParameters.basicContainer.referencePosition.longitude,
                                v_camValue.cam.camParameters.basicContainer.referencePosition.altitude.altitudeValue
                            };
                        }
                        f_mirror_and_send_vehicle_cam(v_camSimu, v_camValue, v_location/*To be removed*/);
                        // Check if the behicule leave the area
                        //v_inArea := f_isLocationInsideRectangularRegion(c_detectionArea, v_location);
                        v_inArea := f_isInApproach(PX_UC6_APPROACH_POINT_Z2, v_location, 100.0);
    
                        log("*** " & testcasename() & ": DEBUG: In area: ", v_inArea, " ***");
                        if (v_inArea == true) {
                            tc_ac.start;
                            repeat;
                        } else {
                            log("*** " & testcasename() & ": PASS: Terminate component for #" & int2str(p_camVehicle.header.stationID) & " ***");
                            f_setVerdict(e_success);
                        }
garciay's avatar
garciay committed
420
                    }
421
                }
garciay's avatar
garciay committed
422
                [] tc_ac.timeout {
423
                    log("*** " & testcasename() & ": DEBUG: No CAM message received ***");
garciay's avatar
garciay committed
424 425 426 427
                }
            } // End of 'altstep' statement
            
            f_uninitialiseVehicleSimulatorComponent(p_component);
garciay's avatar
garciay committed
428
            log("*** " & testcasename() & ": DEBUG: Exit ***");
garciay's avatar
garciay committed
429 430 431 432
            
        } // End of f_startVehicleSimulator
        
    } // End of group tc_RSUSIMU_BV_02 
garciay's avatar
garciay committed
433
    
434
} // End of module ItsRSUsSimulator_TestCases