/** * @author ETSI / STF405 * @version $URL$ * $Id$ * @desc Module containing base template definitions for DENM * */ module LibItsDenm_Templates { //LibIts import from DENM_PDU_Descriptions language "ASN.1:1997" all; import from CAM_PDU_Descriptions language "ASN.1:1997" all; import from LibItsDenm_Functions all; import from LibIts_Interface all; import from LibItsDenm_TypesAndValues all; group primitives_Templates { template DenmReq m_denmReq( template (omit) DecentralizedEnvironmentalNotificationMessage p_denMsg ) := { msgOut := p_denMsg } template DenmInd mw_denmInd( template (present) DecentralizedEnvironmentalNotificationMessage p_denMsg ) := { msgIn := p_denMsg } } // end primitives group DecentralizedEnvironmentalNotificationMessage_Templates { template DecentralizedEnvironmentalNotificationMessage m_denm( template (value) DecentralizedSituationManagement p_mgmt, template (value) DecentralizedSituation p_sit, template (value) DecentralizedSituationLocation p_loc ) := { management := p_mgmt, situation := p_sit, location := p_loc } template DecentralizedEnvironmentalNotificationMessage mw_denm( template (present) DecentralizedSituationManagement p_mgmt, template (present) DecentralizedSituation p_sit, template (present) DecentralizedSituationLocation p_loc ) := { management := p_mgmt, situation := p_sit, location := p_loc } template DecentralizedEnvironmentalNotificationMessage m_denmWithCause( template (value) DataVersion p_dataVersion, template (value) Situation p_sit ) := { management := m_denmMgmtCon(p_dataVersion), situation := m_denmSitCon(p_sit, informative), location := m_denmSitLoc( f_getCurrentPosition(), m_locationRef ) } template DecentralizedEnvironmentalNotificationMessage m_denmWithCauseIsNeg( template (value) DataVersion p_dataVersion, template (value) Situation p_sit, template (value) DecentralizedSituationManagement.isNegation p_isNeg ) modifies m_denmWithCause := { management := m_denmMgmtCon_IsNeg(p_dataVersion, p_isNeg) } } // end group DecentralizedEnvironmentalNotificationMessage_Templates group DecentralizedSituationManagement_Templates { template DecentralizedSituationManagement m_denmMgmtCon( template (value) DataVersion p_dataVersion ) := { protocolVersion := c_protocolVersion_DENM, messageID := c_messageId, generationtime := 0, //TODO document: 0 indicates that the lower layer should add the time while sending actionID := { stationID := f_getStationId(), sequenceNo := 0 }, dataVersion := p_dataVersion, expiryTime := omit, frequency := omit, reliability := 0, isNegation := false } template DecentralizedSituationManagement mw_denmMgmtCon ( template (present) DataVersion p_dataVersion ):= { protocolVersion := c_protocolVersion_DENM, messageID := c_messageId, generationtime := ?, actionID := { stationID := ?, sequenceNo := ? }, dataVersion := p_dataVersion, expiryTime := *, frequency := *, reliability := ?, isNegation := ? } template DecentralizedSituationManagement m_denmMgmtCon_IsNeg( template (value) DataVersion p_dataVersion, template (value) DecentralizedSituationManagement.isNegation p_isNeg ) modifies m_denmMgmtCon := { isNegation := p_isNeg } template DecentralizedSituationManagement mw_denmMgmtCon_IsNeg( template (present) DataVersion p_dataVersion, template (present) DecentralizedSituationManagement.isNegation p_isNeg ) modifies mw_denmMgmtCon := { isNegation := p_isNeg } } // end group DecentralizedSituationManagement_Templates group DecentralizedSituation_Templates { template DecentralizedSituation m_denmSitCon( template (value) Situation p_sit, template (value) Severity p_sev ) := { trafficFlowEffect := omit, situation := p_sit, linkedCause := omit, severity := p_sev, eventCharact := omit, profile := omit } template DecentralizedSituation mw_denmSitCon := { trafficFlowEffect := *, situation := ?, linkedCause := *, severity := ?, eventCharact := *, profile := * } template DecentralizedSituation mw_denmSitCon_Sit( template (present) Situation p_sit ) modifies mw_denmSitCon := { situation := p_sit } template DecentralizedSituation mw_denmSitCon_SitTfe( template (present) Situation p_sit, template (present) TrafficFlowEffect p_tfe ) modifies mw_denmSitCon_Sit := { trafficFlowEffect := p_tfe } template DecentralizedSituation mw_denmSitCon_SitLc( template (present) Situation p_sit, template (present) Situation p_lc ) modifies mw_denmSitCon_Sit := { linkedCause := p_lc } template DecentralizedSituation mw_denmSitCon_SitEc( template (present) Situation p_sit, template (present) DecentralizedSituation.eventCharact p_ec ) modifies mw_denmSitCon_Sit := { eventCharact := p_ec } group Situation_Templates { template Situation m_situation( template (value) DENM_PDU_Descriptions.CauseCode p_cause, template (value) SubCauseCode p_subCause ) := { cause := p_cause, subCause := p_subCause } template Situation mw_situation( template (present) DENM_PDU_Descriptions.CauseCode p_cause, template (present) SubCauseCode p_subCause ) := { cause := p_cause, subCause := p_subCause } } // end group Situation_Templates group EventCharact_Templates { //TODO check if depending on kind of ITS station template DecentralizedSituation.eventCharact m_eventCharact := { eventmobility := true, causeType := geographicalRegion, relevant := difficultDrivingConditions, timeCritacality := false } } } // end group DecentralizedSituation_Templates group DecentralizedSituationLocation_Templates { template DecentralizedSituationLocation m_denmSitLoc( template (value) DecentralizedSituationLocation.eventPosition p_eventPosition, template (value) DecentralizedSituationLocation.locationRef p_locationRef ) := { eventPosition := p_eventPosition, locationRef := p_locationRef } template DecentralizedSituationLocation mw_denmSitLoc ( template (present) DecentralizedSituationLocation.eventPosition p_eventPosition, template (present) DecentralizedSituationLocation.locationRef p_locationRef ) := { eventPosition := p_eventPosition, locationRef := p_locationRef } group locationRef_Templates { template DecentralizedSituationLocation.locationRef m_locationRef := { trace := { traceID := 0, waypoints := {} } } } // end group locationRef_Templates } // end group DecentralizedSituationLocation } // end LibItsDenm_Templates