Commit 1e89cf7a authored by plazaortega's avatar plazaortega
Browse files

SDP_Payload type as union of SDP_Request and SDP_Response types

Group TimersTimeout included
ItsV2G component
New SDP functions and templates
parent ae07bf23
Loading
Loading
Loading
Loading
+51 −1
Original line number Diff line number Diff line
@@ -185,7 +185,6 @@
            
            f_utInitializeIut(m_v2gInitialize);
			f_prDefault();

        }
        //      E X A M P L E 
		/**
@@ -208,8 +207,59 @@

		}

		/**
		 * @desc Performs preamble up to received a SDP Request
		 * @param p_sdpReponse If function must send a SDP Response or must not
		 * @see f_prInitialState()
		 */
		function f_prSdpRequestReceived(in boolean p_sdpResponse) runs on ItsV2G {
			f_prInitialState();
			f_sdpRequestReceived(p_sdpResponse);
		}
        
    } // end of group preambles    
    
	group sdpFunctions {
		/**
		 * @desc Received a SDP Request
		 * @param p_response If function must send a SDP Response or must not
		 */
		function f_sdpRequestReceived(in boolean p_response) runs on ItsV2G {
			t_v2g_secc_sequenceTimeout.start( c_v2g_seccSequenceTimeout * 0.95 );
            alt {
                [] v2gPort.receive(mw_sdpMessageInd ( mw_sdpRequestMessage (mw_sdpHeaderRequest, mw_sdpGenericPayloadRequest))) -> value vc_v2gIndMessage
				{ 
					t_v2g_secc_sequenceTimeout.stop;
                    log("*** TP_EVCC_SDP_CLI_BV_01: PASS: SDP request message received BEFORE expiry of the sequence performance timer***");
                    setverdict(pass);
                }   
                [] t_v2g_secc_sequenceTimeout.timeout {
                    log("*** TP_EVCC_SDP_CLI_BV_01: FAIL: SDP session request message not receive ***");
                    setverdict(fail);
                }         
            }
			if (p_response)	
			{
				// Send SDP Response accordingly to the SDP request received
				f_sendSdpResponse(vc_v2gIndMessage.sdpIn);
			}
		}

		/**
		 * @desc Send a SDP Response message based on content of SDP Request
		 * @param p_sdpRequest SDP Request Message
		 */
		function f_sendSdpResponse(in Sdp_Message p_sdpRequest) runs on ItsV2G
		{
			// To be completed!!!
			var V2Greq v_sdpResponseMessage;

			v_sdpResponseMessage.sdpOut.sdpPayload.sdpResponse.security := p_sdpRequest.sdpPayload.sdpRequest.security;
			v_sdpResponseMessage.sdpOut.sdpPayload.sdpResponse.transportProtocol := p_sdpRequest.sdpPayload.sdpRequest.transportProtocol;
			
			v2gPort.send(v_sdpResponseMessage);
		}
	}

    group postambles {
        
+38 −13
Original line number Diff line number Diff line
@@ -92,27 +92,52 @@ module LibItsV2G_Templates {
			   }
		   }

		template Sdp_Header m_sdpHeaderRequest := {
			protocolVersion := c_protocolVersion1,
			inverseProtocolVersion := c_inverseProtocolVersion1,
			payloadType := c_sdpRequestMessagePayloadType,
			payloadLength := 2
	} // end v2gPduTemplates

	group sdpMessageTemplates {   
		/**
         * @desc    Receive template for Generic Header SDP
         */
		template Sdp_Header mw_sdpGenericHeader := {
			protocolVersion := ?,
			inverseProtocolVersion := ?,
			payloadType := ?,
			payloadLength := ?
		}

		template Sdp_Payload m_sdpPayloadRequest := {
			seccIPAddress := omit,
			seccPort := omit,
		/**
         * @desc    Receive template for Generic Payload of a SDP Request Message
         */
		template Sdp_Request mw_sdpGenericPayloadRequest := {
			security := ?,
			transportProtocol := ?
		}

		template Sdp_Message mw_sdpMessage (in template Sdp_Header p_sdpH,
		in template Sdp_Payload p_sdpP) := {
	    /**
         * @desc    Receive template for Header SDP Request Message
		 * @see		mw_sdpGenericHeader
         */
		template Sdp_Header mw_sdpHeaderRequest modifies mw_sdpGenericHeader := {
			protocolVersion := c_protocolVersion1,
			inverseProtocolVersion := c_inverseProtocolVersion1,
			payloadType := c_sdpRequestMessagePayloadType,
			payloadLength := 2
		}

		/**
         * @desc    Receive template for SDP Message
		 * @param p_sdpH	Header of the message
		 * @param p_sdpP	Payload of the message
         */
		template Sdp_Message mw_sdpRequestMessage (in template Sdp_Header p_sdpH,
		in template Sdp_Request p_sdpP) := {
			sdpHeader := p_sdpH,
			sdpPayload := p_sdpP
			sdpPayload := {
				sdpRequest := p_sdpP
			}
		}

    } // end v2gPduTemplates
    } // end sdpMessageTemplates
    
    
} // end LibItsV2G_Templates
 No newline at end of file
+2 −0
Original line number Diff line number Diff line
@@ -80,10 +80,12 @@ module LibItsV2G_TestSystem {
        port V2Gport v2gPort;
                
        // timers
		timer t_v2g_secc_sequenceTimeout;
        
        // Global variables    E X A M P L E 
        var sessionIDType_TYPE vc_sId;
		var evccIDType_TYPE vc_evccId;
		var V2Gind vc_v2gIndMessage;
                
    } // End of component ItsV2G
        
+30 −5
Original line number Diff line number Diff line
@@ -53,12 +53,31 @@ module LibItsV2G_TypesAndValues {
    group v2gPayload {

		group SDPMessages {

			 /**
	         * @desc SDP (Session Discovery Protocol) Payload description 
	         */
	        type record Sdp_Payload {
				Ipv6Address seccIPAddress optional, // IPv6
				UInt16 seccPort optional,
	         type union Sdp_Payload {
				 Sdp_Request sdpRequest,
				 Sdp_Response sdpResponse
			 }

			 /**
	         * @desc SDP (Session Discovery Protocol) Request message description 
	         */
			 type record Sdp_Request
			 {
				Oct1 security,
				Oct1 transportProtocol
			 } 
			 
			 /**
	         * @desc SDP (Session Discovery Protocol) Response message description 
	         */
			 type record Sdp_Response
			 {
				Ipv6Address seccIPAddress, // IPv6
				UInt16 seccPort,
				Oct1 security,
				Oct1 transportProtocol
	         }
@@ -148,6 +167,12 @@ module LibItsV2G_TypesAndValues {
		const UInt16 c_V2G_UDP_SDP_SERVER := 15118;

	} // end sdpValues

	group timerTimeouts
	{
		const float c_v2g_seccSequenceTimeout  := 60.0;
		const float c_v2g_sdpRetransmissionTimeout := 0.25;
	}
}
with {
    encode "LibItsV2G_TypesAndValues"