Loading ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn +238 −26 Original line number Original line Diff line number Diff line Loading @@ -9,6 +9,7 @@ module LibItsGeoNetworking_Functions { // Libcommon // Libcommon import from LibCommon_BasicTypesAndValues all; import from LibCommon_BasicTypesAndValues all; import from LibCommon_VerdictControl {type FncRetCode;} // LibIts // LibIts import from LibIts_TestSystem all; import from LibIts_TestSystem all; Loading Loading @@ -82,24 +83,25 @@ module LibItsGeoNetworking_Functions { */ */ altstep a_receiveGeoUnicast( altstep a_receiveGeoUnicast( in template (present) LongPosVector p_senderLongPosVec, in template (present) LongPosVector p_senderLongPosVec, in template (present) ShortPosVector p_destinationLongPosVec, in template (present) ShortPosVector p_destinationShortPosVec, in template (present) StationTypeIdentifier p_stationType, in template (present) StationTypeIdentifier p_stationType, in template (present) UInt16 p_seqNumber in template (present) UInt16 p_seqNumber ) runs on ItsNt { ) runs on ItsNt { [] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoUnicastHeader( [] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoUnicastHeader( p_senderLongPosVec, p_senderLongPosVec, p_destinationLongPosVec, p_destinationShortPosVec, p_stationType, p_stationType, p_seqNumber)))) {} p_seqNumber)))) { } } } /** /** * @desc Receive GeoUnicast packet for specific destination * @desc Receive GeoUnicast packet for specific destination */ */ altstep a_receiveGeoUnicastWithDestination(in template (present) ShortPosVector p_destinationLongPosVec) runs on ItsNt { altstep a_receiveGeoUnicastWithDestination(in template (present) ShortPosVector p_destinationShortPosVec) runs on ItsNt { [] a_receiveGeoUnicast(?, p_destinationLongPosVec, ?, ?) {} [] a_receiveGeoUnicast(?, p_destinationShortPosVec, ?, ?) {} } } /** /** Loading @@ -120,22 +122,33 @@ module LibItsGeoNetworking_Functions { altstep a_receiveLsRequest( altstep a_receiveLsRequest( in template (present) StationTypeIdentifier p_stationType, in template (present) StationTypeIdentifier p_stationType, in template (present) UInt16 p_seqNumber, in template (present) UInt16 p_seqNumber, in template (present) GN_Address p_gnAddress in template (present) GN_Address p_gnAddress, out template (value) LongPosVector p_reqSrcPosVector ) runs on ItsNt { ) runs on ItsNt { var GeoNetworkingInd v_msg; [] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu( [] geoNetworkingPort.receive( mw_geoNwInd( mw_geoNwPdu( mw_lsRequestHeader( mw_lsRequestHeader( p_stationType, p_stationType, p_seqNumber, p_seqNumber, p_gnAddress)))) {} p_gnAddress ) ) ) ) -> value v_msg { p_reqSrcPosVector := v_msg.msgIn.header.lsRequestHeader.srcPosVector; } } } /** /** * @desc Receive any Location Service Request * @desc Receive any Location Service Request */ */ altstep a_receiveAnyLsRequest() runs on ItsNt { altstep a_receiveAnyLsRequest() runs on ItsNt { var LongPosVector v_reqSrcPosVector; [] a_receiveLsRequest(?, ?, ?) {} [] a_receiveLsRequest(?, ?, ?, v_reqSrcPosVector) {} } } /** /** Loading @@ -147,19 +160,19 @@ module LibItsGeoNetworking_Functions { in template (value) GN_Address p_gnAddress, in template (value) GN_Address p_gnAddress, in template (value) LongPosVector p_repSrcPosVector, in template (value) LongPosVector p_repSrcPosVector, in template (value) LongPosVector p_repSenderPosVector, in template (value) LongPosVector p_repSenderPosVector, in template (value) StationTypeIdentifier p_repStationType, in template (value) StationTypeIdentifier p_repStationType in template (value) UInt16 p_repSeqNumber ) runs on ItsNt { ) runs on ItsNt { var LongPosVector v_repDstPosVector; [] a_receiveLsRequest(p_reqStationType, p_reqSeqNumber, p_gnAddress) { [] a_receiveLsRequest(p_reqStationType, p_reqSeqNumber, p_gnAddress, v_repDstPosVector) { geoNetworkingPort.send(m_geoNwReq(m_geoNwPdu( f_sendGeoNetMessage(m_geoNwReq(m_geoNwPdu( m_lsRequestHeader( m_lsReplyHeader( p_repSrcPosVector, p_repSrcPosVector, v_repDstPosVector, p_repSenderPosVector, p_repSenderPosVector, p_repStationType, p_repStationType, p_repSeqNumber, vc_localSeqNumber p_gnAddress )))); )))) } } } } Loading Loading @@ -190,6 +203,72 @@ module LibItsGeoNetworking_Functions { setverdict(pass); setverdict(pass); } } function f_handleLocationService( in template (present) StationTypeIdentifier p_reqStationType, in template (present) UInt16 p_reqSeqNumber, in template (value) GN_Address p_gnAddress, in template (value) LongPosVector p_repSrcPosVector, in template (value) LongPosVector p_repSenderPosVector, in template (value) StationTypeIdentifier p_repStationType ) runs on ItsNt { tc_ac.start; alt { [] a_receiveLsRequestAndReply(p_reqStationType, p_reqSeqNumber, p_gnAddress, p_repSrcPosVector, p_repSenderPosVector, p_repStationType) { tc_ac.stop; } } } function f_processLocationService( in template (value) LongPosVector p_reqSrcPosVector, in template (value) StationTypeIdentifier p_reqStationType, in template (value) UInt16 p_reqSeqNumber, in template (value) GN_Address p_gnAddress, out template (value) LongPosVector p_repSrcPosVector ) runs on ItsNt return FncRetCode { var FncRetCode v_ret := e_error; var GeoNetworkingInd v_msg; f_sendGeoNetMessage( m_geoNwReq( m_geoNwPdu( m_lsRequestHeader( p_reqSrcPosVector, p_reqSrcPosVector, p_reqStationType, p_reqSeqNumber, p_gnAddress ) ) ) ); tc_ac.start; alt { [] geoNetworkingPort.receive( mw_geoNwInd( mw_geoNwPdu( mw_lsReplyHeader( p_reqStationType, p_reqSeqNumber, ?, p_reqSrcPosVector ) ) ) ) -> value v_msg { tc_ac.stop; p_repSrcPosVector := v_msg.msgIn.header.lsRequestHeader.srcPosVector; v_ret := e_success; } } return v_ret; } } // end preambles } // end preambles group postambles { group postambles { Loading @@ -214,28 +293,152 @@ module LibItsGeoNetworking_Functions { function f_taStartBeaconing(in template (value) Header p_beaconHeader) { function f_taStartBeaconing(in template (value) Header p_beaconHeader) { //TODO } } function f_taStopBeaconing() { function f_taStopBeaconing() { //TODO } } } // end testAdapter } // end testAdapter group commonFunctions { /** * @desc Gets the value of the lifetime in seconds. * @return */ function f_getLifetimeValue(in Lifetime p_lifetime) runs on ItsNt return float { var float v_lifetime := 0.0; select (p_lifetime.ltBase) { case (e_50ms) { v_lifetime := int2float(p_lifetime.multiplier) * 0.5; } case (e_1s) { v_lifetime := int2float(p_lifetime.multiplier) * 1.0; } case (e_10s) { v_lifetime := int2float(p_lifetime.multiplier) * 10.0; } case (e_100s) { v_lifetime := int2float(p_lifetime.multiplier) * 100.0; } } return v_lifetime; } } // end commonFunctions group testerFunctions { group testerFunctions { function f_sendGeoNetMessage(in GeoNetworkingReq p_geoNetReq) runs on ItsNt { geoNetworkingPort.send(p_geoNetReq); if (not (ischosen(p_geoNetReq.msgOut.header.shbHeader) or ischosen(p_geoNetReq.msgOut.header.beaconHeader))) { f_setLocalSequenceNumber(); } } function f_getTesterLongPosVector() return LongPosVector { function f_getTesterLongPosVector() return LongPosVector { var LongPosVector v_longPosVector; var LongPosVector v_longPosVector; //TODO return v_longPosVector; return v_longPosVector; } } function f_getTesterGnAddress() return GN_Address { function f_getTesterGnAddress() return GN_Address { var GN_Address v_gnAddress; var GN_Address v_gnAddress; //TODO return v_gnAddress; return v_gnAddress; } } /** * @desc Sets the value of the sequence number for the next event. * @return */ function f_setLocalSequenceNumber() runs on ItsNt { vc_localSeqNumber := (vc_localSeqNumber + 1) mod c_uInt16Max; //TODO check if c_uInt16Max should be replaced by module parameter } } // end testerFunctions group iutFunctions { function f_getIutGnAddress() return GN_Address { var GN_Address v_gnAddress; //TODO return v_gnAddress; } /** * @desc Gets the LS retransmission timer. * @return */ function f_getLSRetransmitTimer() return float { var float v_itsGnLocationServiceRetransmitTimer := 1.0; //TODO get the value from PIXIT or MIB return v_itsGnLocationServiceRetransmitTimer; } /** * @desc Gets the LS maximum retransmission number. * @return */ function f_getLSMaxRetrans() return integer { var integer v_itsGnLocationServiceMaxRetrans := 10; //TODO get the value from PIXIT or MIB return v_itsGnLocationServiceMaxRetrans; } /** * @desc Gets the upper limit of the maximum lifetime. * @return */ function f_getMaxPacketLifeTime() return float { var float v_itsGnMaxPacketLifetime := 600.0; //TODO get the value from PIXIT or MIB return v_itsGnMaxPacketLifetime; } /** * @desc Gets delta for timers. * @return */ function f_getDeltaTimer() return float { var float v_deltaTimer := 0.1; //TODO get the value from PIXIT return v_deltaTimer; } } // end iutFunctions group neighborFunctions { function f_getNeighborLongPosVector() return LongPosVector { var LongPosVector v_longPosVector; //TODO return v_longPosVector; } } // end testerFunctions } // end testerFunctions group posVectorFunctions { group posVectorFunctions { Loading @@ -243,12 +446,21 @@ module LibItsGeoNetworking_Functions { function f_longPosVector2ShortPosVector(in LongPosVector p_longPosVector) return ShortPosVector { function f_longPosVector2ShortPosVector(in LongPosVector p_longPosVector) return ShortPosVector { var ShortPosVector v_shortPosVector; var ShortPosVector v_shortPosVector; v_shortPosVector := { gnAddr := p_longPosVector.gnAddr, timestamp := p_longPosVector.timestamp, latitute := p_longPosVector.latitute, longitude := p_longPosVector.longitude }; return v_shortPosVector; return v_shortPosVector; } } function f_getIutShortPosVector() return ShortPosVector { function f_getIutShortPosVector() return ShortPosVector { var ShortPosVector v_shortPosVector; var ShortPosVector v_shortPosVector; //TODO return v_shortPosVector; return v_shortPosVector; } } Loading ttcn/GeoNetworking/LibItsGeoNetworking_Templates.ttcn +69 −3 Original line number Original line Diff line number Diff line Loading @@ -147,7 +147,7 @@ module LibItsGeoNetworking_Templates { template Header mw_geoUnicastHeader( template Header mw_geoUnicastHeader( in template (present) LongPosVector p_senderLongPosVec, in template (present) LongPosVector p_senderLongPosVec, in template (present) ShortPosVector p_destinationLongPosVec, in template (present) ShortPosVector p_destinationShortPosVec, in template (present) StationTypeIdentifier p_stationType, in template (present) StationTypeIdentifier p_stationType, in template (present) UInt16 p_seqNumber in template (present) UInt16 p_seqNumber ) := { ) := { Loading @@ -161,13 +161,13 @@ module LibItsGeoNetworking_Templates { lifetime := ?, lifetime := ?, reserved := ?, reserved := ?, srcPosVector := ?, srcPosVector := ?, dstPosVector := p_destinationLongPosVec dstPosVector := p_destinationShortPosVec } } } } template Header mw_geoUnicastHeaderWithHopLimit( template Header mw_geoUnicastHeaderWithHopLimit( in template (present) LongPosVector p_senderLongPosVec, in template (present) LongPosVector p_senderLongPosVec, in template (present) ShortPosVector p_destinationLongPosVec, in template (present) ShortPosVector p_destinationShortPosVec, in template (present) StationTypeIdentifier p_stationType, in template (present) StationTypeIdentifier p_stationType, in template (present) UInt16 p_seqNumber, in template (present) UInt16 p_seqNumber, in template (present) UInt8 p_hopLimit in template (present) UInt8 p_hopLimit Loading Loading @@ -348,6 +348,72 @@ module LibItsGeoNetworking_Templates { } } } } } // end lsRequestHeaderTemplates group lsReplyHeaderTemplates { template (value) Header m_lsReplyHeader( in template (value) LongPosVector p_sourceLongPosVec, in template (value) LongPosVector p_destinationLongPosVec, in template (value) LongPosVector p_senderLongPosVec, in template (value) StationTypeIdentifier p_stationType, in template (value) UInt16 p_seqNumber ) := { lsReplyHeader := { commonHeader := m_commonHeader( e_btp, m_lsRequestHeaderType, 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_lsReplyHeaderAny( in template (present) StationTypeIdentifier p_stationType, in template (present) UInt16 p_seqNumber ) := { lsReplyHeader := { commonHeader := mw_commonHeader( e_any, m_lsReplyHeaderType, p_stationType ), seqNumber := p_seqNumber, lifetime := ?, reserved := ?, srcPosVector := ?, dstPosVector := ? } } template Header mw_lsReplyHeader( template (present) StationTypeIdentifier p_stationType, template (present) UInt16 p_seqNumber, template (present) LongPosVector p_sourceLongPosVec, template (present) LongPosVector p_destinationLongPosVec) modifies mw_lsReplyHeaderAny := { lsReplyHeader := { srcPosVector := p_sourceLongPosVec, dstPosVector := p_destinationLongPosVec } } template (value) HeaderTST m_lsReplyHeaderType := { lsHdr := { headerType := e_locationService, headerSubType := e_lsReply } } } // end lsRequestHeaderTemplates } // end lsRequestHeaderTemplates group beaconHeaderTemplates { group beaconHeaderTemplates { Loading ttcn/LibIts_Interface.ttcn +6 −1 Original line number Original line Diff line number Diff line Loading @@ -12,8 +12,10 @@ module LibIts_Interface { import from CAM_PDU_Descriptions language "ASN.1:1997" all; import from CAM_PDU_Descriptions language "ASN.1:1997" all; import from DENM_PDU_Descriptions language "ASN.1:1997" all; import from DENM_PDU_Descriptions language "ASN.1:1997" all; import from LibCommon_BasicTypesAndValues all; // LibCommon // LibCommon import from LibCommon_Time {modulepar all}; import from LibCommon_Time {modulepar all;} group adapterInterface { group adapterInterface { Loading Loading @@ -118,6 +120,9 @@ module LibIts_Interface { timer tc_wait := PX_TWAIT; timer tc_wait := PX_TWAIT; timer tc_ac := PX_TAC; timer tc_ac := PX_TAC; //variables var UInt16 vc_localSeqNumber := 0; } // end ItsNt } // end ItsNt } // end interfaceComponents } // end interfaceComponents Loading Loading
ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn +238 −26 Original line number Original line Diff line number Diff line Loading @@ -9,6 +9,7 @@ module LibItsGeoNetworking_Functions { // Libcommon // Libcommon import from LibCommon_BasicTypesAndValues all; import from LibCommon_BasicTypesAndValues all; import from LibCommon_VerdictControl {type FncRetCode;} // LibIts // LibIts import from LibIts_TestSystem all; import from LibIts_TestSystem all; Loading Loading @@ -82,24 +83,25 @@ module LibItsGeoNetworking_Functions { */ */ altstep a_receiveGeoUnicast( altstep a_receiveGeoUnicast( in template (present) LongPosVector p_senderLongPosVec, in template (present) LongPosVector p_senderLongPosVec, in template (present) ShortPosVector p_destinationLongPosVec, in template (present) ShortPosVector p_destinationShortPosVec, in template (present) StationTypeIdentifier p_stationType, in template (present) StationTypeIdentifier p_stationType, in template (present) UInt16 p_seqNumber in template (present) UInt16 p_seqNumber ) runs on ItsNt { ) runs on ItsNt { [] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoUnicastHeader( [] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoUnicastHeader( p_senderLongPosVec, p_senderLongPosVec, p_destinationLongPosVec, p_destinationShortPosVec, p_stationType, p_stationType, p_seqNumber)))) {} p_seqNumber)))) { } } } /** /** * @desc Receive GeoUnicast packet for specific destination * @desc Receive GeoUnicast packet for specific destination */ */ altstep a_receiveGeoUnicastWithDestination(in template (present) ShortPosVector p_destinationLongPosVec) runs on ItsNt { altstep a_receiveGeoUnicastWithDestination(in template (present) ShortPosVector p_destinationShortPosVec) runs on ItsNt { [] a_receiveGeoUnicast(?, p_destinationLongPosVec, ?, ?) {} [] a_receiveGeoUnicast(?, p_destinationShortPosVec, ?, ?) {} } } /** /** Loading @@ -120,22 +122,33 @@ module LibItsGeoNetworking_Functions { altstep a_receiveLsRequest( altstep a_receiveLsRequest( in template (present) StationTypeIdentifier p_stationType, in template (present) StationTypeIdentifier p_stationType, in template (present) UInt16 p_seqNumber, in template (present) UInt16 p_seqNumber, in template (present) GN_Address p_gnAddress in template (present) GN_Address p_gnAddress, out template (value) LongPosVector p_reqSrcPosVector ) runs on ItsNt { ) runs on ItsNt { var GeoNetworkingInd v_msg; [] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu( [] geoNetworkingPort.receive( mw_geoNwInd( mw_geoNwPdu( mw_lsRequestHeader( mw_lsRequestHeader( p_stationType, p_stationType, p_seqNumber, p_seqNumber, p_gnAddress)))) {} p_gnAddress ) ) ) ) -> value v_msg { p_reqSrcPosVector := v_msg.msgIn.header.lsRequestHeader.srcPosVector; } } } /** /** * @desc Receive any Location Service Request * @desc Receive any Location Service Request */ */ altstep a_receiveAnyLsRequest() runs on ItsNt { altstep a_receiveAnyLsRequest() runs on ItsNt { var LongPosVector v_reqSrcPosVector; [] a_receiveLsRequest(?, ?, ?) {} [] a_receiveLsRequest(?, ?, ?, v_reqSrcPosVector) {} } } /** /** Loading @@ -147,19 +160,19 @@ module LibItsGeoNetworking_Functions { in template (value) GN_Address p_gnAddress, in template (value) GN_Address p_gnAddress, in template (value) LongPosVector p_repSrcPosVector, in template (value) LongPosVector p_repSrcPosVector, in template (value) LongPosVector p_repSenderPosVector, in template (value) LongPosVector p_repSenderPosVector, in template (value) StationTypeIdentifier p_repStationType, in template (value) StationTypeIdentifier p_repStationType in template (value) UInt16 p_repSeqNumber ) runs on ItsNt { ) runs on ItsNt { var LongPosVector v_repDstPosVector; [] a_receiveLsRequest(p_reqStationType, p_reqSeqNumber, p_gnAddress) { [] a_receiveLsRequest(p_reqStationType, p_reqSeqNumber, p_gnAddress, v_repDstPosVector) { geoNetworkingPort.send(m_geoNwReq(m_geoNwPdu( f_sendGeoNetMessage(m_geoNwReq(m_geoNwPdu( m_lsRequestHeader( m_lsReplyHeader( p_repSrcPosVector, p_repSrcPosVector, v_repDstPosVector, p_repSenderPosVector, p_repSenderPosVector, p_repStationType, p_repStationType, p_repSeqNumber, vc_localSeqNumber p_gnAddress )))); )))) } } } } Loading Loading @@ -190,6 +203,72 @@ module LibItsGeoNetworking_Functions { setverdict(pass); setverdict(pass); } } function f_handleLocationService( in template (present) StationTypeIdentifier p_reqStationType, in template (present) UInt16 p_reqSeqNumber, in template (value) GN_Address p_gnAddress, in template (value) LongPosVector p_repSrcPosVector, in template (value) LongPosVector p_repSenderPosVector, in template (value) StationTypeIdentifier p_repStationType ) runs on ItsNt { tc_ac.start; alt { [] a_receiveLsRequestAndReply(p_reqStationType, p_reqSeqNumber, p_gnAddress, p_repSrcPosVector, p_repSenderPosVector, p_repStationType) { tc_ac.stop; } } } function f_processLocationService( in template (value) LongPosVector p_reqSrcPosVector, in template (value) StationTypeIdentifier p_reqStationType, in template (value) UInt16 p_reqSeqNumber, in template (value) GN_Address p_gnAddress, out template (value) LongPosVector p_repSrcPosVector ) runs on ItsNt return FncRetCode { var FncRetCode v_ret := e_error; var GeoNetworkingInd v_msg; f_sendGeoNetMessage( m_geoNwReq( m_geoNwPdu( m_lsRequestHeader( p_reqSrcPosVector, p_reqSrcPosVector, p_reqStationType, p_reqSeqNumber, p_gnAddress ) ) ) ); tc_ac.start; alt { [] geoNetworkingPort.receive( mw_geoNwInd( mw_geoNwPdu( mw_lsReplyHeader( p_reqStationType, p_reqSeqNumber, ?, p_reqSrcPosVector ) ) ) ) -> value v_msg { tc_ac.stop; p_repSrcPosVector := v_msg.msgIn.header.lsRequestHeader.srcPosVector; v_ret := e_success; } } return v_ret; } } // end preambles } // end preambles group postambles { group postambles { Loading @@ -214,28 +293,152 @@ module LibItsGeoNetworking_Functions { function f_taStartBeaconing(in template (value) Header p_beaconHeader) { function f_taStartBeaconing(in template (value) Header p_beaconHeader) { //TODO } } function f_taStopBeaconing() { function f_taStopBeaconing() { //TODO } } } // end testAdapter } // end testAdapter group commonFunctions { /** * @desc Gets the value of the lifetime in seconds. * @return */ function f_getLifetimeValue(in Lifetime p_lifetime) runs on ItsNt return float { var float v_lifetime := 0.0; select (p_lifetime.ltBase) { case (e_50ms) { v_lifetime := int2float(p_lifetime.multiplier) * 0.5; } case (e_1s) { v_lifetime := int2float(p_lifetime.multiplier) * 1.0; } case (e_10s) { v_lifetime := int2float(p_lifetime.multiplier) * 10.0; } case (e_100s) { v_lifetime := int2float(p_lifetime.multiplier) * 100.0; } } return v_lifetime; } } // end commonFunctions group testerFunctions { group testerFunctions { function f_sendGeoNetMessage(in GeoNetworkingReq p_geoNetReq) runs on ItsNt { geoNetworkingPort.send(p_geoNetReq); if (not (ischosen(p_geoNetReq.msgOut.header.shbHeader) or ischosen(p_geoNetReq.msgOut.header.beaconHeader))) { f_setLocalSequenceNumber(); } } function f_getTesterLongPosVector() return LongPosVector { function f_getTesterLongPosVector() return LongPosVector { var LongPosVector v_longPosVector; var LongPosVector v_longPosVector; //TODO return v_longPosVector; return v_longPosVector; } } function f_getTesterGnAddress() return GN_Address { function f_getTesterGnAddress() return GN_Address { var GN_Address v_gnAddress; var GN_Address v_gnAddress; //TODO return v_gnAddress; return v_gnAddress; } } /** * @desc Sets the value of the sequence number for the next event. * @return */ function f_setLocalSequenceNumber() runs on ItsNt { vc_localSeqNumber := (vc_localSeqNumber + 1) mod c_uInt16Max; //TODO check if c_uInt16Max should be replaced by module parameter } } // end testerFunctions group iutFunctions { function f_getIutGnAddress() return GN_Address { var GN_Address v_gnAddress; //TODO return v_gnAddress; } /** * @desc Gets the LS retransmission timer. * @return */ function f_getLSRetransmitTimer() return float { var float v_itsGnLocationServiceRetransmitTimer := 1.0; //TODO get the value from PIXIT or MIB return v_itsGnLocationServiceRetransmitTimer; } /** * @desc Gets the LS maximum retransmission number. * @return */ function f_getLSMaxRetrans() return integer { var integer v_itsGnLocationServiceMaxRetrans := 10; //TODO get the value from PIXIT or MIB return v_itsGnLocationServiceMaxRetrans; } /** * @desc Gets the upper limit of the maximum lifetime. * @return */ function f_getMaxPacketLifeTime() return float { var float v_itsGnMaxPacketLifetime := 600.0; //TODO get the value from PIXIT or MIB return v_itsGnMaxPacketLifetime; } /** * @desc Gets delta for timers. * @return */ function f_getDeltaTimer() return float { var float v_deltaTimer := 0.1; //TODO get the value from PIXIT return v_deltaTimer; } } // end iutFunctions group neighborFunctions { function f_getNeighborLongPosVector() return LongPosVector { var LongPosVector v_longPosVector; //TODO return v_longPosVector; } } // end testerFunctions } // end testerFunctions group posVectorFunctions { group posVectorFunctions { Loading @@ -243,12 +446,21 @@ module LibItsGeoNetworking_Functions { function f_longPosVector2ShortPosVector(in LongPosVector p_longPosVector) return ShortPosVector { function f_longPosVector2ShortPosVector(in LongPosVector p_longPosVector) return ShortPosVector { var ShortPosVector v_shortPosVector; var ShortPosVector v_shortPosVector; v_shortPosVector := { gnAddr := p_longPosVector.gnAddr, timestamp := p_longPosVector.timestamp, latitute := p_longPosVector.latitute, longitude := p_longPosVector.longitude }; return v_shortPosVector; return v_shortPosVector; } } function f_getIutShortPosVector() return ShortPosVector { function f_getIutShortPosVector() return ShortPosVector { var ShortPosVector v_shortPosVector; var ShortPosVector v_shortPosVector; //TODO return v_shortPosVector; return v_shortPosVector; } } Loading
ttcn/GeoNetworking/LibItsGeoNetworking_Templates.ttcn +69 −3 Original line number Original line Diff line number Diff line Loading @@ -147,7 +147,7 @@ module LibItsGeoNetworking_Templates { template Header mw_geoUnicastHeader( template Header mw_geoUnicastHeader( in template (present) LongPosVector p_senderLongPosVec, in template (present) LongPosVector p_senderLongPosVec, in template (present) ShortPosVector p_destinationLongPosVec, in template (present) ShortPosVector p_destinationShortPosVec, in template (present) StationTypeIdentifier p_stationType, in template (present) StationTypeIdentifier p_stationType, in template (present) UInt16 p_seqNumber in template (present) UInt16 p_seqNumber ) := { ) := { Loading @@ -161,13 +161,13 @@ module LibItsGeoNetworking_Templates { lifetime := ?, lifetime := ?, reserved := ?, reserved := ?, srcPosVector := ?, srcPosVector := ?, dstPosVector := p_destinationLongPosVec dstPosVector := p_destinationShortPosVec } } } } template Header mw_geoUnicastHeaderWithHopLimit( template Header mw_geoUnicastHeaderWithHopLimit( in template (present) LongPosVector p_senderLongPosVec, in template (present) LongPosVector p_senderLongPosVec, in template (present) ShortPosVector p_destinationLongPosVec, in template (present) ShortPosVector p_destinationShortPosVec, in template (present) StationTypeIdentifier p_stationType, in template (present) StationTypeIdentifier p_stationType, in template (present) UInt16 p_seqNumber, in template (present) UInt16 p_seqNumber, in template (present) UInt8 p_hopLimit in template (present) UInt8 p_hopLimit Loading Loading @@ -348,6 +348,72 @@ module LibItsGeoNetworking_Templates { } } } } } // end lsRequestHeaderTemplates group lsReplyHeaderTemplates { template (value) Header m_lsReplyHeader( in template (value) LongPosVector p_sourceLongPosVec, in template (value) LongPosVector p_destinationLongPosVec, in template (value) LongPosVector p_senderLongPosVec, in template (value) StationTypeIdentifier p_stationType, in template (value) UInt16 p_seqNumber ) := { lsReplyHeader := { commonHeader := m_commonHeader( e_btp, m_lsRequestHeaderType, 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_lsReplyHeaderAny( in template (present) StationTypeIdentifier p_stationType, in template (present) UInt16 p_seqNumber ) := { lsReplyHeader := { commonHeader := mw_commonHeader( e_any, m_lsReplyHeaderType, p_stationType ), seqNumber := p_seqNumber, lifetime := ?, reserved := ?, srcPosVector := ?, dstPosVector := ? } } template Header mw_lsReplyHeader( template (present) StationTypeIdentifier p_stationType, template (present) UInt16 p_seqNumber, template (present) LongPosVector p_sourceLongPosVec, template (present) LongPosVector p_destinationLongPosVec) modifies mw_lsReplyHeaderAny := { lsReplyHeader := { srcPosVector := p_sourceLongPosVec, dstPosVector := p_destinationLongPosVec } } template (value) HeaderTST m_lsReplyHeaderType := { lsHdr := { headerType := e_locationService, headerSubType := e_lsReply } } } // end lsRequestHeaderTemplates } // end lsRequestHeaderTemplates group beaconHeaderTemplates { group beaconHeaderTemplates { Loading
ttcn/LibIts_Interface.ttcn +6 −1 Original line number Original line Diff line number Diff line Loading @@ -12,8 +12,10 @@ module LibIts_Interface { import from CAM_PDU_Descriptions language "ASN.1:1997" all; import from CAM_PDU_Descriptions language "ASN.1:1997" all; import from DENM_PDU_Descriptions language "ASN.1:1997" all; import from DENM_PDU_Descriptions language "ASN.1:1997" all; import from LibCommon_BasicTypesAndValues all; // LibCommon // LibCommon import from LibCommon_Time {modulepar all}; import from LibCommon_Time {modulepar all;} group adapterInterface { group adapterInterface { Loading Loading @@ -118,6 +120,9 @@ module LibIts_Interface { timer tc_wait := PX_TWAIT; timer tc_wait := PX_TWAIT; timer tc_ac := PX_TAC; timer tc_ac := PX_TAC; //variables var UInt16 vc_localSeqNumber := 0; } // end ItsNt } // end ItsNt } // end interfaceComponents } // end interfaceComponents Loading