Commit 57b34ae2 authored by berge's avatar berge
Browse files

Added some templates and functions for GeoNetworking

parent f78248a0
Loading
Loading
Loading
Loading
+8 −0
Original line number Original line Diff line number Diff line
@@ -105,4 +105,12 @@ module LibItsGeoNetworking_Functions {
        }
        }
    } // end postambles
    } // end postambles
    
    
    group upperTester {
        
        function f_utGenerateIpv6Message() runs on ItsNt {
            
        }
        
    } // end upperTester
    
} // end LibItsGeoNetworking_Functions
} // end LibItsGeoNetworking_Functions
 No newline at end of file
+99 −3
Original line number Original line Diff line number Diff line
@@ -71,19 +71,29 @@ module LibItsGeoNetworking_Templates {
            
            
            template CommonHeader mw_commonHeader (
            template CommonHeader mw_commonHeader (
            	in template (present) NextHeader p_nextHeader,
            	in template (present) NextHeader p_nextHeader,
            	in template (present) HeaderTST p_headerTST
            	in template (present) HeaderTST p_headerTST,
            	in template (present) StationTypeIdentifier p_stationType
            ) := {
            ) := {
            	version := c_geoNwProtocolVersion,
            	version := c_geoNwProtocolVersion,
                nextHeader := p_nextHeader,
                nextHeader := p_nextHeader,
    			headerTST := p_headerTST,
    			headerTST := p_headerTST,
                reserved := c_uInt8Zero,
                reserved := c_uInt8Zero,
                flags := ?,
                flags := mw_flags(p_stationType),
                plLength := ?, 
                plLength := ?, 
                trafficClass := ?,
                trafficClass := ?,
                hopLimit := ?,
                hopLimit := ?,
                longPosVec := ?    
                longPosVec := ?    
            }
            }
            
            
            template CommonHeader mw_commonHeaderWithHopLimit (
            	in template (present) NextHeader p_nextHeader,
            	in template (present) HeaderTST p_headerTST,
            	in template (present) StationTypeIdentifier p_stationType,
            	in template (present) UInt8 p_hopLimit
            ) modifies mw_commonHeader := {
                hopLimit := p_hopLimit   
            }
            
            template (value) Flags m_flags(
            template (value) Flags m_flags(
            	in template (value) StationTypeIdentifier p_stationType
            	in template (value) StationTypeIdentifier p_stationType
            ) := {
            ) := {
@@ -92,6 +102,14 @@ module LibItsGeoNetworking_Templates {
                reserved2 := c_uInt1Zero            
                reserved2 := c_uInt1Zero            
            }
            }
            
            
            template Flags mw_flags(
            	in template (present) StationTypeIdentifier p_stationType
            ) := {
                reserved := c_uInt6Zero,
                stationType := p_stationType,
                reserved2 := c_uInt1Zero            
            }
         
            template (value) TrafficClass m_trafficClass := {
            template (value) TrafficClass m_trafficClass := {
                reserved := c_uInt1Zero,
                reserved := c_uInt1Zero,
                relevance := c_uInt3Zero,
                relevance := c_uInt3Zero,
@@ -101,6 +119,83 @@ module LibItsGeoNetworking_Templates {
            
            
	   	} // end geoNwCommonHeaderTemplates
	   	} // end geoNwCommonHeaderTemplates
    
    
    	group geoUnicastHeaderTemplates {
    	    
    	    template (value) Header m_geoUnicastHeader(
    	    	in template (value) LongPosVector p_sourceLongPosVec,
    	    	in template (value) ShortPosVector p_destinationLongPosVec,
    	    	in template (value) LongPosVector p_senderLongPosVec,
    	    	in template (value) StationTypeIdentifier p_stationType,
    	    	in template (value) UInt16 p_seqNumber
    	    ) := {
                geoUnicastHeader := {
                    commonHeader := m_commonHeader(
                    	e_btp,
                    	m_geoUnicastHeaderType,
                    	m_trafficClass,
                    	c_defaultHopLimit,
                    	p_senderLongPosVec,
    					p_stationType
                    ),
                    seqNumber := p_seqNumber,
                    lifetime := m_lifetime,
                    reserved := c_uInt8Zero,
               		srcPosVector := p_sourceLongPosVec,
                	dstPosVector := p_destinationLongPosVec
                }
    	    }    
    	    
    	    template Header mw_geoUnicastHeader(
    	    	in template (present) LongPosVector p_senderLongPosVec,
    			in template (present) StationTypeIdentifier p_stationType,
    	    	in template (present) UInt16 p_seqNumber
    	    ) := {
                geoUnicastHeader := {
                    commonHeader := mw_commonHeader(
                    	e_btp,
                    	mw_geoUnicastHeaderType,
                    	p_stationType
                    ),
                    seqNumber := p_seqNumber,
                    lifetime := ?,
                    reserved := c_uInt8Zero,
               		srcPosVector := ?,
                	dstPosVector := ?
                }
    	    }    
    	    
    	    template Header mw_geoUnicastHeaderWithHopLimit(
    	    	in template (present) LongPosVector p_senderLongPosVec,
    			in template (present) StationTypeIdentifier p_stationType,
    	    	in template (present) UInt16 p_seqNumber,
    	    	in template (present) UInt8 p_hopLimit
    	    ) modifies mw_geoUnicastHeader := {
                geoUnicastHeader := {
                    commonHeader := mw_commonHeaderWithHopLimit(
                    	e_btp,
                    	mw_geoUnicastHeaderType,
                    	p_stationType,
                    	p_hopLimit
                    )
                }
    	    } 
    	    
    	    template (value) HeaderTST m_geoUnicastHeaderType := {
                geoUnicastHdr := {
                	headerType := e_geoUnicast,
                	reserved := c_uInt4Zero
                }
            }      
            
            template HeaderTST mw_geoUnicastHeaderType := {
                geoUnicastHdr := {
                	headerType := e_geoUnicast,
                	reserved := ?
                }
            }       
    	    
    	} // end geoUnicastHeaderTemplates
    
        group geoBroadcastHeaderTemplates {
        group geoBroadcastHeaderTemplates {
            
            
    		template (value) Header m_geoBroadcastHeader(
    		template (value) Header m_geoBroadcastHeader(
@@ -145,7 +240,8 @@ module LibItsGeoNetworking_Templates {
                geoBroadcastHeader := {
                geoBroadcastHeader := {
                    commonHeader := mw_commonHeader(
                    commonHeader := mw_commonHeader(
                    	e_btp,
                    	e_btp,
                    	mw_geoBroadcastHeaderType
                    	mw_geoBroadcastHeaderType,
                    	p_stationType
                    ),
                    ),
                    seqNumber := p_seqNumber,
                    seqNumber := p_seqNumber,
                    lifetime := ?,
                    lifetime := ?,
+14 −0
Original line number Original line Diff line number Diff line
@@ -736,6 +736,20 @@ module LibItsGeoNetworking_TypesAndValues {
        type octetstring Payload;
        type octetstring Payload;
        
        
    } //end group geoNetworkingPayload
    } //end group geoNetworkingPayload
    
    group geoNwPicsTypes {
     
     	type enumerated GeoUnicastForwardingAlgorithm {
     	    e_unspecified(0),
     	    e_greedy(1)
     	}
     	
     	type enumerated GeoBroadcastForwardingAlgorithm {
     	    e_unspecified(0),
     	    e_simple(1)
     	}
        
    } // end geoNwPicsTypes
}
}
with {
with {
    encode "LibItsGeoNetworking_TypesAndValues"
    encode "LibItsGeoNetworking_TypesAndValues"