/** * @author ETSI / STF405 * @version $URL$ * $Id$ * @desc GeoNetworking Templates * */ module LibItsGeoNetworking_Templates { // Libcommon import from LibCommon_BasicTypesAndValues all; // LibIts import from LibIts_Interface all; import from LibItsGeoNetworking_TypesAndValues all; group geoNwPrimitivesTemplates { template (value) GeoNetworkingReq m_geoNwReq( template (value) GeoNetworkingPacket p_geoNwMsg ) := { msgOut := p_geoNwMsg } template GeoNetworkingInd mw_geoNwInd( template (present) GeoNetworkingPacket p_geoNwMsg ) := { msgIn := p_geoNwMsg } } // geoNwPrimitivesTemplates group geoNwPduTemplates { template (value) GeoNetworkingPacket m_geoNwPdu(in template (value) Header p_header) := { header := p_header, secHeader := omit, payload := omit } template GeoNetworkingPacket mw_geoNwPdu(in template (present) Header p_header) := { header := p_header, secHeader := ?, payload := ? } } // end geoNwPduTemplates group geoNwHeadersTemplates { group geoNwCommonHeaderTemplates { template (value) CommonHeader m_commonHeader ( in template (value) NextHeader p_nextHeader, in template (value) HeaderTST p_headerTST, in template (value) TrafficClass p_trafficClass, in template (value) UInt8 p_hopLimit, in template (value) LongPosVector p_longPosVec, in template (value) StationTypeIdentifier p_stationType ) := { version := c_geoNwProtocolVersion, nextHeader := p_nextHeader, headerTST := p_headerTST, reserved := c_uInt8Zero, flags := m_flags(p_stationType), plLength := 0, // will be computed by Codec trafficClass := p_trafficClass, hopLimit := p_hopLimit, longPosVec := p_longPosVec } template CommonHeader mw_commonHeader ( in template (present) NextHeader p_nextHeader, in template (present) HeaderTST p_headerTST ) := { version := c_geoNwProtocolVersion, nextHeader := p_nextHeader, headerTST := p_headerTST, reserved := c_uInt8Zero, flags := ?, plLength := ?, trafficClass := ?, hopLimit := ?, longPosVec := ? } template (value) Flags m_flags( in template (value) StationTypeIdentifier p_stationType ) := { reserved := c_uInt6Zero, stationType := p_stationType, reserved2 := c_uInt1Zero } template (value) TrafficClass m_trafficClass := { reserved := c_uInt1Zero, relevance := c_uInt3Zero, reliability := e_veryHigh, latency := e_veryLow } } // end geoNwCommonHeaderTemplates group geoBroadcastHeaderTemplates { template (value) Header m_geoBroadcastHeader( in template (value) LongPosVector p_sourceLongPosVec, in template (value) LongPosVector p_senderLongPosVec, in template (value) StationTypeIdentifier p_stationType, in template (value) UInt16 p_seqNumber, in template (value) HeaderSubTypeGeoBroadcast p_headerSubType, in template (value) UInt32 p_geoAreaPosLatitude, in template (value) UInt32 p_geoAreaPosLongitude, in template (value) UInt16 p_distanceA, in template (value) UInt16 p_distanceB, in template (value) UInt8 p_angle ) := { geoBroadcastHeader := { commonHeader := m_commonHeader( e_btp, m_geoBroadcastHeaderType(p_headerSubType), m_trafficClass, c_defaultHopLimit, p_senderLongPosVec, p_stationType ), seqNumber := p_seqNumber, lifetime := m_lifetime, reserved := c_uInt8Zero, srcPosVector := p_sourceLongPosVec, geoAreaPosLatitude := p_geoAreaPosLatitude, geoAreaPosLongitude := p_geoAreaPosLongitude, distanceA := p_distanceA, distanceB := p_distanceB, angle := p_angle, reserved2 := c_uInt24Zero } } template Header mw_geoBroadcastHeader( in template (present) LongPosVector p_senderLongPosVec, in template (present) StationTypeIdentifier p_stationType, in template (present) UInt16 p_seqNumber ) := { geoBroadcastHeader := { commonHeader := mw_commonHeader( e_btp, mw_geoBroadcastHeaderType ), seqNumber := p_seqNumber, lifetime := ?, reserved := c_uInt8Zero, srcPosVector := ?, geoAreaPosLatitude := ?, geoAreaPosLongitude := ?, distanceA := ?, distanceB := ?, angle := ?, reserved2 := c_uInt24Zero } } template (value) HeaderTST m_geoBroadcastHeaderType( in template (value) HeaderSubTypeGeoBroadcast p_headerSubType ) := { geoBroadcastHdr := { headerType := e_geoBroadcast, headerSubType := p_headerSubType } } template HeaderTST mw_geoBroadcastHeaderType := { geoBroadcastHdr := { headerType := e_geoBroadcast, headerSubType := ? } } template HeaderTST mw_geoBroadcastHeaderTypeWithSubType( in template (present) HeaderSubTypeGeoBroadcast p_headerSubType ) modifies mw_geoBroadcastHeaderType := { geoBroadcastHdr := { headerSubType := p_headerSubType } } template (value) Lifetime m_lifetime := { multiplier := 10, ltBase := e_1s } } // end geoBroadcastHeaderTemplates } // end geoNwHeadersTemplates } // end ItsGeoNetworking_Templates