Commit 1b302c9c authored by berge's avatar berge
Browse files

Added some templates and functions for GeoNetworking

parent a4a9b985
Loading
Loading
Loading
Loading
+58 −0
Original line number Original line Diff line number Diff line
@@ -47,4 +47,62 @@ module LibItsGeoNetworking_Functions {
        
        
    } // end f_ptcGeoNetworkingDown
    } // end f_ptcGeoNetworkingDown
    
    
    group altsteps {
        
       /**
         * @desc The base default.
         */
        altstep a_default() runs on ItsNt {
            [] geoNetworkingPort.receive {
                setverdict (inconc, "Received an unexpected message");
                //TODO shall stop be called here?
                stop;
            }
            [] tc_wait.timeout {
                setverdict (inconc, "Timeout while awaiting reaction of the IUT prior to Upper Tester action");
                //TODO shall stop be called here?
                stop;
            }
            [] tc_ac.timeout {
                setverdict (inconc, "Timeout while awaiting the reception of a message");
                //TODO shall stop be called here?
                stop;
            }
        }        
    }
    
    group preambles {
        
        /**
         * @desc The default preamble.
         */
        function f_prDefault() runs on ItsNt {
            activate(a_default());
        }
        
        /**
         * @desc Brings the IUT into an initial state.
         * @return 
         */
        function f_prInitialState() runs on ItsNt {
            
            f_prDefault();
            
            // TODO: any specific action ?
            
            setverdict(pass);
        }
        
    } // end preambles
    
    group postambles {
        
        /**
         * @desc The default postamble.
         */
        function f_poDefault() runs on ItsNt {
            setverdict(pass);           
        }
    } // end postambles
    
} // end LibItsGeoNetworking_Functions
} // end LibItsGeoNetworking_Functions
 No newline at end of file
+184 −1
Original line number Original line Diff line number Diff line
@@ -5,9 +5,192 @@
 *	@desc		GeoNetworking Templates
 *	@desc		GeoNetworking Templates
 *
 *
 */
 */
module ItsGeoNetworking_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
} // end ItsGeoNetworking_Templates
 No newline at end of file
+12 −0
Original line number Original line Diff line number Diff line
@@ -10,6 +10,18 @@ module LibItsGeoNetworking_TypesAndValues {
    import from LibCommon_BasicTypesAndValues all;
    import from LibCommon_BasicTypesAndValues all;
    import from LibCommon_DataStrings all;
    import from LibCommon_DataStrings all;


	group geoNwValues {
	    
	    group geoNwHeaderConstants {
	        const UInt4 c_geoNwProtocolVersion := 0;
            const UInt8 c_defaultHopLimit := 10;
	    } // end geoNwHeaderConstants
	    
	    // TODO add in Libcommon
	    const UInt24  c_uInt24Zero := 0;
	    
	} // end geoNwValues

    group geoNetworkingPdus {
    group geoNetworkingPdus {


        /**
        /**
+5 −0
Original line number Original line Diff line number Diff line
@@ -116,6 +116,11 @@ module LibIts_Interface {
            
            
            // NT3 ports
            // NT3 ports
            port FastPort fastPort;
            port FastPort fastPort;
            
            // timers
            timer tc_wait := PX_TWAIT;
            timer tc_ac := PX_TAC;
            
        } // end ItsNt
        } // end ItsNt
        
        
    } // end interfaceComponents
    } // end interfaceComponents
+1 −1
Original line number Original line Diff line number Diff line
@@ -57,7 +57,7 @@ module LibIts_TestSystem {
            port BtpPort btpPort;
            port BtpPort btpPort;
            
            
            // NT2 ports
            // NT2 ports
            port GeoNetworkingPort geoNetPort;
            port GeoNetworkingPort geoNetworkingPort;
            port IPv6OverGeoNetworkingPort ipv6OverGeoNetworkingPort;
            port IPv6OverGeoNetworkingPort ipv6OverGeoNetworkingPort;
            
            
            // NT3 ports
            // NT3 ports