ItsRSUsSimulator_TypesAndValues.ttcn 7.86 KB
Newer Older
garciay's avatar
garciay committed
module ItsRSUsSimulator_TypesAndValues {
    
    // LibCommon
    import from LibCommon_BasicTypesAndValues all;
    
    // LibIts
    import from ITS_Container language "ASN.1:1997" all;
    import from CAM_PDU_Descriptions language "ASN.1:1997" all;
    import from DENM_PDU_Descriptions 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 IVIM_PDU_Descriptions language "ASN.1:1997" all;
    import from IVI language "ASN.1:1997" all;
garciay's avatar
garciay committed
    import from SSEM_PDU_Descriptions language "ASN.1:1997" all;
garciay's avatar
garciay committed
    import from DSRC language "ASN.1:1997" all;
    import from EfcDsrcApplication language "ASN.1:1997" all;
garciay's avatar
garciay committed
    
    // LibItsGeoNetworking
    import from LibItsGeoNetworking_TypesAndValues all;
    
    /**
     * @desc Data structures used to build IS messages & event for a specific RSU
     */
    group rsiSimulatordataStructures {
        
        /**
         * @desc This is the list of DENM events hosted by a single RSU
         */
        type record of DENM DENMs;
        
        /**
         * @desc This is the list of SPATEM events hosted by a single RSU
         */
        type record of SPATEM SPATEMs;
        
garciay's avatar
garciay committed
        /**
         * @desc Defines the list of messages to be sent by a single RSU
         * @member cam      CAM message that a RSU shall send
         * @member denms    List of DENM events that a RSU shall send
         */
        type record RsuMessagesValue {
            CAM     cam optional,
            DENMs   denms optional,
garciay's avatar
garciay committed
            MAPEM   mapem optional,
            SPATEMs spatems optional,
            IVIM    ivim optional,
            SSEM    ssem optional
garciay's avatar
garciay committed
        } // End of type RsuMessagesValue
        
        /**
         * @desc List of the RSU settings (for future usage (e.g. dynamic change of the RSU ID)
         */
        type record of RsuMessagesValue RsuMessagesValueList;
        
        type record DenmParmContainers { 
            ManagementContainer managementContainer,
            SituationContainer  situationContainer,
            LocationContainer   locationContainer
        } // End of type DenmParmContainers
garciay's avatar
garciay committed
        
        /**
         * @desc This is the list of DENM dynamic parameters for the different events hosted by a single RSU
         */
        type record of DenmParmContainers DenmParmContainersList;
        
        /**
         * @desc This is the list of DENM dynamic parameters for the different events hosted for all RSUs
         */
        type record of DenmParmContainersList DenmParmContainersListRsu;
        
    } // End of group rsiSimulatordataStructures
    
    /**
     * @desc Data structures used to set up IS messages & event according to the track configuration
     */
    group picsDataStructures {
        
        /**
         * @desc CAM setup
         */
        group camDataStructures {
            
            /**
             * @desc Describe the parameter for each CAM event
             */
            type record RsuParm {
                GN_Address      gnAddress,
                LongPosVector   longPosVector,
                StationID       stationID,
                GeoShape        geoShape,
                union {
                    UInt16     radius
                } geoParms,
                PathHistory     pathHistory
            } // End of type CamParm
            
            /**
             * 
             * @desc List of CAM parms per RSU
             * <pre>
             *     vc_longPosVectorRsu := PICS_RSU_PARAMS[PX_RSU_ID - 1].longPosVector;
             * </pre>
             */
            type record of RsuParm RsuParmList;
            
        } // End of group camDataStructures
        
        /**
         * @desc MAPEM setup
         */
        group mapemDataStructures {
garciay's avatar
garciay committed
            
            /**
             * @desc Describe the parameter for each MAPEM event
             */
            type record MapemParm {
                IntersectionGeometryList intersections,
                RoadSegmentList          roadSegments optional
garciay's avatar
garciay committed
            } // End of type MapemParm
            
garciay's avatar
garciay committed
             * @desc List of MAPEM parms per RSU
             * <pre>
             *     v_intersection := PICS_MAPEM_PARMS_RSUs[PX_RSU_ID - 1].intersections[v_idx];
             * </pre>
             */
            type record of MapemParm MapemParmListRsu;
garciay's avatar
garciay committed
            
garciay's avatar
garciay committed
        } // End of group mapemDataStructures
        
        /**
         * @desc SPATEM setup
         */
        group spatemDataStructures {
            /**
             * @desc Describe the parameter for each SPATEM event
             */
            type record SignalGroupParm {
                SignalGroupID         signalGroupID,
                IntersectionStateList intersections
            } // End of type SignalGroupParm
            
            /** 
             * @desc List of SignalGroup parms for one RSU
             * <pre>
             *     v_movementEvent := PICS_SPATEM_PARMS_RSU_1[v_signalGroupID].states[v_idx];
             * </pre>
             */
            type record of SignalGroupParm SignalGroupParmList;
            
            /** 
             * @desc List of all RSUs SignalGroups parms
             * <pre>
             *     v_movementEvent := PICS_SPATEM_PARMS_RSU_1[PX_RSU_ID - 1].states[v_idx];
             * </pre>
             */
            type record of SignalGroupParmList SpatemParmRsu;
            
            type record of MovementList MovementListPerIntersection;
            
            type record of MovementListPerIntersection MovementListPerIntersectionRsu;
            
        } // End of group spatemDataStructures
        
garciay's avatar
garciay committed
        /**
         * @desc IVIM setup
         */
        group ivimDataStructures {
            
            /**
             * @desc Describe the parameter for each IVIM event
             */
            type record IvimParm {
                Provider                 provider,
                IviIdentificationNumber  iviIdentificationNumber
            } // End of type IvimParm
            
            /** 
             * @desc List of IVIM parms per RSU
             * <pre>
             *     v_provider := PICS_IVIM_PARMS_RSUs[PX_RSU_ID - 1].povider;
             * </pre>
             */
            type record of IvimParm IvimParmListRsu;
garciay's avatar
garciay committed
        } // End of group ivimDataStructures
        
        /**
         * @desc DENM setup
         */
        group denmDataStructures {
            
            /**
             * @desc Describe the parameter for each DENM event
             */
            type record DenmParm {
                ReferencePosition             eventPosition,
                CauseCodeType                 causeCodeType,
                EventHistory                  eventHistory,
                RoadWorksContainerExtended    roadWorksContainerExtended optional
garciay's avatar
garciay committed
            } // End of type DenmParm
            
            /**
             * @desc List of DENM events per use case
             * @see <wiki URL>
             * <pre>
             *     v_denmParm := PICS_DENM_PARMS_UC1_RWW[vc_eventId];
             *     vc_eventId := (vc_eventId + 1) mod lengthof(PICS_DENM_PARMS_UC1_RWW)
             * </pre>
             */
            type record of DenmParm DenmEventsParmsUseCase;
            
            /**
             * @desc  List of DENM events per use case and per RSUs
             * <pre>
             *     v_denmParm := PICS_DENM_EVENTS_RSU[PX_RSU_ID - 1][PX_ETSI_USE_CASE_ID][vc_eventId];
             *     vc_eventId := (vc_eventId + 1) mod lengthof(PICS_DENM_EVENTS_RSU[PX_RSU_ID - 1][PX_ETSI_USE_CASE_ID])
             * </pre>
             */
            type record of DenmEventsParmsUseCase DenmEventsParmsUseCaseRsu;
            
        } // End of group denmDataStructures
        
    } // End of group picsDataStructures
    
} // End of module ItsRSUsSimulator_TypesAndValues