Commit 35d8e564 authored by berge's avatar berge
Browse files

Added TC_GEONW_PON_GAC_BV_01

parent 34a66045
Loading
Loading
Loading
Loading
+80 −0
Original line number Diff line number Diff line
@@ -344,6 +344,15 @@ module LibItsGeoNetworking_Functions {
            return v_return;
        }
        
        function f_getAnycastArea(in charstring p_areaName)
        return AnycastArea {
         
            var AnycastArea v_return;
            // TODO
            
            return v_return;  
        }
        
    } // end geoPositionFunctions    
    
    group geoAltsteps {
@@ -506,6 +515,73 @@ module LibItsGeoNetworking_Functions {
                        
        } // end geoGeoBroadcastAltsteps

        group geoGeoAnycastAltsteps {
            
            /**
             * @desc Receive GeoAnycast packet
             */
            altstep a_receiveGeoAnycast(
                in template (present) LongPosVector p_srcLongPosVec,                
                in template (present) LongPosVector p_senderLongPosVec,
                in template (present) StationTypeIdentifier p_stationType,
                in template (present) UInt16 p_seqNumber
            ) runs on ItsNt {
                
                [] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoAnycastHeader(
                        p_srcLongPosVec,
                        p_senderLongPosVec,
                        p_stationType,
                        p_seqNumber
                    )))) {
                }
            }
            
            /**
             * @desc Receive GeoAnycast packet with specific Area and HopLimit
             */
            altstep a_receiveGeoAnycastWithAreaWithHopLimit(
                in template (present) LongPosVector p_srcLongPosVec,                
                in template (present) LongPosVector p_senderLongPosVec,
                in template (present) StationTypeIdentifier p_stationType,
                in template (present) UInt16 p_seqNumber,
                in template (present) AnycastArea p_anycastArea,
                in template (present) UInt8 p_hopLimit
            ) runs on ItsNt {
                
                [] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoAnycastHeaderWithAreaWithHopLimit(
                        p_srcLongPosVec,
                        p_senderLongPosVec,
                        p_stationType,
                        p_seqNumber,
                        p_anycastArea,
                        p_hopLimit
                    )))) {
                }
            }            

            /**
             * @desc Receive GeoAnycast packet for specific GeoAnycast Area
             */
            altstep a_receiveGeoAnycastWithArea(                
                in template (present) LongPosVector p_srcLongPosVec,
                in template (present) LongPosVector p_senderLongPosVec,
                in template (present) StationTypeIdentifier p_stationType,
                in template (present) UInt16 p_seqNumber,
                in template (present) AnycastArea p_anycastArea
            ) runs on ItsNt {
                
                [] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoAnycastHeaderWithArea(
                        p_srcLongPosVec,
                        p_senderLongPosVec,
                        p_stationType,
                        p_seqNumber,
                        p_anycastArea
                    )))) {
                }
            }               
                        
        } // end geoGeoAnycastAltsteps
        
        group geoLocationServiceAltsteps {

            /**
@@ -695,6 +771,10 @@ module LibItsGeoNetworking_Functions {
            //TODO
        }
        
        function f_utGenerateGeoAnycastMessage(in charstring p_area) runs on ItsNt {
            //TODO
        }        
        
        function f_utGenerateSHBMessage() runs on ItsNt {
            //TODO
        }
+157 −13
Original line number Diff line number Diff line
@@ -242,7 +242,7 @@ module LibItsGeoNetworking_Templates {
                geoBroadcastHeader := {
                    commonHeader := m_commonHeader(
                    	e_btp,
                    	m_geoBroadcastHeaderType(p_broadcastArea.geoBrodcastSubType),
                    	m_geoBroadcastHeaderType(p_broadcastArea.geoBroadcastSubType),
                    	m_trafficClass,
                    	c_defaultHopLimit,
                    	p_senderLongPosVec,
@@ -252,11 +252,11 @@ module LibItsGeoNetworking_Templates {
                    lifetime := m_lifetime,
                    reserved := c_uInt8Zero,
                    srcPosVector := p_sourceLongPosVec,
                    geoAreaPosLatitude := p_broadcastArea.geoAreaPosLatitude,
                    geoAreaPosLongitude := p_broadcastArea.geoAreaPosLongitude,
                    distanceA := p_broadcastArea.distanceA,
                    distanceB := p_broadcastArea.distanceB,
                    angle := p_broadcastArea.angle,
                    geoAreaPosLatitude := p_broadcastArea.geoBroadcastArea.geoAreaPosLatitude,
                    geoAreaPosLongitude := p_broadcastArea.geoBroadcastArea.geoAreaPosLongitude,
                    distanceA := p_broadcastArea.geoBroadcastArea.distanceA,
                    distanceB := p_broadcastArea.geoBroadcastArea.distanceB,
                    angle := p_broadcastArea.geoBroadcastArea.angle,
                    reserved2 := c_uInt24Zero
                }
            }  
@@ -272,7 +272,7 @@ module LibItsGeoNetworking_Templates {
                geoBroadcastHeader := {
                    commonHeader := m_commonHeader(
                        e_btp,
                        m_geoBroadcastHeaderType(p_broadcastArea.geoBrodcastSubType),
                        m_geoBroadcastHeaderType(p_broadcastArea.geoBroadcastSubType),
                        m_trafficClass,
                        p_hopLimit,
                        p_senderLongPosVec,
@@ -317,15 +317,15 @@ module LibItsGeoNetworking_Templates {
                geoBroadcastHeader := {
                    commonHeader := mw_commonHeaderWithSender(
                        ?,
                        mw_geoBroadcastHeaderTypeWithSubType(p_broadcastArea.geoBrodcastSubType),
                        mw_geoBroadcastHeaderTypeWithSubType(p_broadcastArea.geoBroadcastSubType),
                        p_stationType,
                        p_senderLongPosVec
                    ),
                    geoAreaPosLatitude := p_broadcastArea.geoAreaPosLatitude,
                    geoAreaPosLongitude := p_broadcastArea.geoAreaPosLongitude,
                    distanceA := p_broadcastArea.distanceA,
                    distanceB := p_broadcastArea.distanceB,
                    angle := p_broadcastArea.angle
                    geoAreaPosLatitude := p_broadcastArea.geoBroadcastArea.geoAreaPosLatitude,
                    geoAreaPosLongitude := p_broadcastArea.geoBroadcastArea.geoAreaPosLongitude,
                    distanceA := p_broadcastArea.geoBroadcastArea.distanceA,
                    distanceB := p_broadcastArea.geoBroadcastArea.distanceB,
                    angle := p_broadcastArea.geoBroadcastArea.angle
                }
            } 

@@ -379,6 +379,150 @@ module LibItsGeoNetworking_Templates {
                
        } // end geoBroadcastHeaderTemplates

        group geoAnycastHeaderTemplates {
            
            template (value) Header m_geoAnycastHeader(
                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) AnycastArea p_anycastArea
            ) := {
                geoAnycastHeader := {
                    commonHeader := m_commonHeader(
                        e_btp,
                        m_geoAnycastHeaderType(p_anycastArea.geoAnycastSubType),
                        m_trafficClass,
                        c_defaultHopLimit,
                        p_senderLongPosVec,
                        p_stationType
                    ),
                    seqNumber := p_seqNumber,
                    lifetime := m_lifetime,
                    reserved := c_uInt8Zero,
                    srcPosVector := p_sourceLongPosVec,
                    geoAreaPosLatitude := p_anycastArea.geoAnycastArea.geoAreaPosLatitude,
                    geoAreaPosLongitude := p_anycastArea.geoAnycastArea.geoAreaPosLongitude,
                    distanceA := p_anycastArea.geoAnycastArea.distanceA,
                    distanceB := p_anycastArea.geoAnycastArea.distanceB,
                    angle := p_anycastArea.geoAnycastArea.angle,
                    reserved2 := c_uInt24Zero
                }
            }  
            
            template (value) Header m_geoAnycastHeaderWithHopLimit(
                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) AnycastArea p_anycastArea,
                in template (value) UInt8 p_hopLimit
            ) modifies m_geoAnycastHeader := {
                geoAnycastHeader := {
                    commonHeader := m_commonHeader(
                        e_btp,
                        m_geoAnycastHeaderType(p_anycastArea.geoAnycastSubType),
                        m_trafficClass,
                        p_hopLimit,
                        p_senderLongPosVec,
                        p_stationType
                    )
                }
            }
            
            template Header mw_geoAnycastHeader(
                in template (present) LongPosVector p_sourceLongPosVec,
                in template (present) LongPosVector p_senderLongPosVec,
                in template (present) StationTypeIdentifier p_stationType,
                in template (present) UInt16 p_seqNumber
            ) := {
                geoAnycastHeader := {
                    commonHeader := mw_commonHeaderWithSender(
                        ?,
                        mw_geoAnycastHeaderType,
                        p_stationType, 
                        p_senderLongPosVec
                    ),
                    seqNumber := p_seqNumber,
                    lifetime := ?,
                    reserved := c_uInt8Zero,
                    srcPosVector := p_sourceLongPosVec,
                    geoAreaPosLatitude := ?,
                    geoAreaPosLongitude := ?,
                    distanceA := ?,
                    distanceB := ?,
                    angle := ?,
                    reserved2 := c_uInt24Zero
                }
            } 
                       
            template Header mw_geoAnycastHeaderWithArea (
                in template (present) LongPosVector p_sourceLongPosVec,
                in template (present) LongPosVector p_senderLongPosVec,
                in template (present) StationTypeIdentifier p_stationType,
                in template (present) UInt16 p_seqNumber,
                in template (present) AnycastArea p_anycastArea
            ) modifies mw_geoAnycastHeader := {
                geoAnycastHeader := {
                    commonHeader := mw_commonHeaderWithSender(
                        ?,
                        mw_geoAnycastHeaderTypeWithSubType(p_anycastArea.geoAnycastSubType),
                        p_stationType,
                        p_senderLongPosVec
                    ),
                    geoAreaPosLatitude := p_anycastArea.geoAnycastArea.geoAreaPosLatitude,
                    geoAreaPosLongitude := p_anycastArea.geoAnycastArea.geoAreaPosLongitude,
                    distanceA := p_anycastArea.geoAnycastArea.distanceA,
                    distanceB := p_anycastArea.geoAnycastArea.distanceB,
                    angle := p_anycastArea.geoAnycastArea.angle
                }
            } 

            template Header mw_geoAnycastHeaderWithAreaWithHopLimit(
                in template (present) LongPosVector p_sourceLongPosVec,
                in template (present) LongPosVector p_senderLongPosVec,
                in template (present) StationTypeIdentifier p_stationType,
                in template (present) UInt16 p_seqNumber,   
                in template (present) AnycastArea p_anycastArea,             
                in template (present) UInt8 p_hopLimit
            ) modifies mw_geoAnycastHeaderWithArea := {
                geoAnycastHeader := {
                    commonHeader := mw_commonHeaderWithSenderWithHopLimit(
                        ?,
                        mw_geoAnycastHeaderType,
                        p_stationType, 
                        p_senderLongPosVec,
                        p_hopLimit
                    )
                } 
            }
                        
            template (value) HeaderTST m_geoAnycastHeaderType(
                in template (value) HeaderSubTypeGeoAnycast p_headerSubType
            ) := {
                geoAnycastHdr := {
                    headerType := e_geoAnycast,
                    headerSubType := p_headerSubType
                }
            }      
            
            template HeaderTST mw_geoAnycastHeaderType := {
                geoAnycastHdr := {
                    headerType := e_geoAnycast,
                    headerSubType := ?
                }
            }       
            
            template HeaderTST mw_geoAnycastHeaderTypeWithSubType(
                in template (present) HeaderSubTypeGeoAnycast p_headerSubType
            ) modifies mw_geoAnycastHeaderType := {
                geoAnycastHdr := {
                    headerSubType := p_headerSubType
                }
            }       
               
        } // end geoAnycastHeaderTemplates

        group lsRequestHeaderTemplates {
            
            template (value) Header m_lsRequestHeader(
+11 −2
Original line number Diff line number Diff line
@@ -45,8 +45,7 @@ module LibItsGeoNetworking_TypesAndValues {
        
        type record of PositionEntry PositionTable;
        
        type record BroadcastArea {
            HeaderSubTypeGeoBroadcast geoBrodcastSubType,
        type record Area {
            UInt32 geoAreaPosLatitude,
            UInt32 geoAreaPosLongitude,
            UInt16 distanceA,
@@ -54,6 +53,16 @@ module LibItsGeoNetworking_TypesAndValues {
            UInt8 angle    
        }
                
        type record BroadcastArea {
            HeaderSubTypeGeoBroadcast geoBroadcastSubType,
            Area geoBroadcastArea
        }
        
        type record AnycastArea {
            HeaderSubTypeGeoAnycast geoAnycastSubType,
            Area geoAnycastArea   
        }
                
    } // end geoConfigurationTypes

	group geoNwValues {