Commit 45ff4c90 authored by garciay's avatar garciay
Browse files

Add UC3 & UC5 support

parent 0ad847cc
Loading
Loading
Loading
Loading
+18 −8
Original line number Diff line number Diff line
@@ -67,7 +67,6 @@ module ItsRSUsSimulator_Functions {
            
            // Map
            map(self:acPort, system:acPort);
            map(self:utPort, system:utPort);
            map(self:cfPort, system:cfPort);
            map(self:geoNetworkingPort, system:geoNetworkingPort);
            
@@ -94,7 +93,6 @@ module ItsRSUsSimulator_Functions {
            
            // Unmap
            unmap(self:acPort, system:acPort);
            unmap(self:utPort, system:utPort);
            unmap(self:cfPort, system:cfPort);
            unmap(self:geoNetworkingPort, system:geoNetworkingPort);
            
@@ -121,7 +119,7 @@ module ItsRSUsSimulator_Functions {
        
        vc_longPosVectorRsu := PICS_RSU_PARAMS[p_rsu_id].longPosVector;
        // MAPEM
        if (PICS_GENERATE_MAPEM) {
        if (PICS_GENERATE_MAPEM and ispresent(PICS_MAPEM_PARMS_RSUs[p_rsu_id].intersections)) {
            // Build the list of the MAPEM events
            v_mapem := 
                m_mapemParm(
@@ -136,8 +134,8 @@ module ItsRSUsSimulator_Functions {
            // TODO Add more?
        }
        // SPATEM
        if (PICS_GENERATE_SPATEM) {
            // Build the list of the DENM events
        if (PICS_GENERATE_SPATEM and (lengthof(PICS_SPATEM_PARMS_RSUs[p_rsu_id]) != 0)) {
            // Build the list of the SPATEM events
            for (v_counter := 0; v_counter < lengthof(PICS_SPATEM_PARMS_RSUs[p_rsu_id]); v_counter := v_counter + 1) {
                v_spatems[v_counter] := 
                    m_spatemParm(
@@ -154,8 +152,8 @@ module ItsRSUsSimulator_Functions {
            // TODO Build SPATEM with dynamic values
        }
        // IVIM
        if (PICS_GENERATE_IVIM) {
            // Build the list of the MAPEM events
        if (PICS_GENERATE_IVIM and ispresent(PICS_IVIM_PARMS_RSUs[p_rsu_id].provider)) {
            // Build the list of the IVIM events
            v_ivim := 
                m_ivimParm(
                    PICS_RSU_PARAMS[p_rsu_id].stationID,
@@ -165,7 +163,7 @@ module ItsRSUsSimulator_Functions {
                            PICS_IVIM_PARMS_RSUs[p_rsu_id].iviIdentificationNumber,
                            0//IviStatus_new_
                        ),
                        { PICS_IVIM_PARMS_RSUs[p_rsu_id].iviContainer }
                        PICS_IVIM_PARMS_RSUs[p_rsu_id].iviContainers
            ));
            // Update ivi status
            v_ivim.ivi.mandatory.validFrom := f_getCurrentTime();
@@ -321,6 +319,18 @@ module ItsRSUsSimulator_Functions {
    ) runs on ItsRSUsSimulator {
        var template (value) SPATEM v_spatem := p_spatem; // Make a copy
        
        
        
        
        
		vc_currentPhaseStartTime := f_getCurrentTime();
		vc_endPhaseStartTime := vc_currentPhaseStartTime + vc_repitition_duration[vc_spatemStatesId];
        
        
        
        
        
        
        // Rebuild SPATEM message
        for (var integer v_intersection := 0; v_intersection < lengthof(v_spatem.spat.intersections); v_intersection := v_intersection + 1) {
            var template (value) MovementList v_states := vc_states[PX_RSU_ID - 1][v_intersection];
+2690 −361

File changed.

Preview size limit exceeded, changes collapsed.

+21 −5
Original line number Diff line number Diff line
@@ -46,6 +46,9 @@ module ItsRSUsSimulator_TestSystem {
         * @desc DENM sequence number index
         */
        var SequenceNumber vc_sequenceNumber := 0;
        /**
         * @desc TODO
         */
        var MsgCount vc_msgIssueRevision := 0;
        /**
         * @desc List of MovementState per intersection and per RSU 
@@ -55,12 +58,25 @@ module ItsRSUsSimulator_TestSystem {
         * @desc Current SPATEM state
         */
        var integer vc_spatemStatesId := 0;
        
        timer tc_cam    := PICS_CAM_FREQUENY;
        timer tc_denm   := PICS_DENM_FREQUENY;
        timer tc_mapem  := PICS_MAPEM_FREQUENY;
        timer tc_spatem := PICS_SPATEM_FREQUENY;
        timer tc_ivim   := PICS_IVIM_FREQUENY;
        /**
         * @desc TODO
         */
        var TimestampIts vc_currentPhaseStartTime := 0;
        /**
         * @desc TODO
         */
        var TimestampIts vc_endPhaseStartTime := 0;
        var SpatemRepetionDuration vc_repitition_duration := { 
            PICS_SPATEM_REPITITION_DURATION_STATE_1, 
            PICS_SPATEM_REPITITION_DURATION_STATE_2, 
            PICS_SPATEM_REPITITION_DURATION_STATE_3 
        };
        
        timer tc_cam    := PICS_CAM_FREQUENCY;
        timer tc_denm   := PICS_DENM_FREQUENCY;
        timer tc_mapem  := PICS_MAPEM_FREQUENCY;
        timer tc_spatem := PICS_SPATEM_FREQUENCY;
        timer tc_ivim   := PICS_IVIM_FREQUENCY;
        
    } // End of component ItsRSUsSimulator
    
+11 −4
Original line number Diff line number Diff line
@@ -33,6 +33,11 @@ module ItsRSUsSimulator_TypesAndValues {
         */
        type record of SPATEM SPATEMs;
        
        /**
         * @desc TODO
         */
        type record of UInt32 SpatemRepetionDuration;
        
        /**
         * @desc Defines the list of messages to be sent by a single RSU
         * @member cam      CAM message that a RSU shall send
@@ -114,7 +119,7 @@ module ItsRSUsSimulator_TypesAndValues {
             * @desc Describe the parameter for each MAPEM event
             */
            type record MapemParm {
                IntersectionGeometryList intersections,
                IntersectionGeometryList intersections optional,
                RoadSegmentList          roadSegments optional
            } // End of type MapemParm
            
@@ -167,13 +172,15 @@ module ItsRSUsSimulator_TypesAndValues {
         */
        group ivimDataStructures {
            
            type record length (1 .. 8) of IviContainer IviContainers;
            
            /**
             * @desc Describe the parameter for each IVIM event
             */
            type record IvimParm {
                Provider                 provider,
                IviIdentificationNumber  iviIdentificationNumber,
                IviContainer             iviContainer
                Provider                 provider optional,
                IviIdentificationNumber  iviIdentificationNumber optional,
                IviContainers            iviContainers optional
            } // End of type IvimParm
            
            /**