|
Diag-Client-Lib
|
Class to handle tcp received messages from lower layer. More...
#include <doip_tcp_channel_handler.h>

Public Types | |
| using | TcpMessagePtr = sockets::TcpSocketHandler::MessagePtr |
| Type alias for Tcp message pointer. More... | |
Public Member Functions | |
| DoipTcpChannelHandler (sockets::TcpSocketHandler &tcp_socket_handler, DoipTcpChannel &channel) | |
| Constructs an instance of DoipTcpChannelHandler. More... | |
| void | Start () |
| Function to start the handler. More... | |
| void | Stop () |
| Function to stop the handler. More... | |
| void | Reset () |
| Function to reset the handler. More... | |
| auto | SendRoutingActivationRequest (uds_transport::UdsMessageConstPtr routing_activation_request) noexcept -> uds_transport::UdsTransportProtocolMgr::ConnectionResult |
| Function to send routing activation request. More... | |
| auto | SendDiagnosticRequest (uds_transport::UdsMessageConstPtr diagnostic_request) noexcept -> uds_transport::UdsTransportProtocolMgr::TransmissionResult |
| Function to send diagnostic request. More... | |
| void | HandleMessage (TcpMessagePtr tcp_rx_message) noexcept |
| Function to process the received message. More... | |
| auto | IsRoutingActivated () noexcept -> bool |
| Check if routing activation is active for this handler. More... | |
Private Member Functions | |
| auto | ProcessDoIPHeader (DoipMessage &doip_rx_message, std::uint8_t &nack_code) noexcept -> bool |
| Function to process doip header in received response. More... | |
| auto | ProcessDoIPPayloadLength (std::uint32_t payload_len, std::uint16_t payload_type) noexcept -> bool |
| Function to verify payload length of various payload type. More... | |
| void | ProcessDoIPPayload (DoipMessage &doip_payload) noexcept |
| Function to process the doip payload. More... | |
Private Attributes | |
| RoutingActivationHandler | routing_activation_handler_ |
| Handler to process routing activation req/ resp. More... | |
| DiagnosticMessageHandler | diagnostic_message_handler_ |
| Handler to process diagnostic message req/ resp. More... | |
| std::mutex | channel_handler_lock |
| Mutex to protect critical section. More... | |
Class to handle tcp received messages from lower layer.
Definition at line 30 of file doip_tcp_channel_handler.h.
| using doip_client::channel::tcp_channel::DoipTcpChannelHandler::TcpMessagePtr = sockets::TcpSocketHandler::MessagePtr |
Type alias for Tcp message pointer.
Definition at line 35 of file doip_tcp_channel_handler.h.
| doip_client::channel::tcp_channel::DoipTcpChannelHandler::DoipTcpChannelHandler | ( | sockets::TcpSocketHandler & | tcp_socket_handler, |
| DoipTcpChannel & | channel | ||
| ) |
Constructs an instance of DoipTcpChannelHandler.
| [in] | tcp_socket_handler | The reference to socket handler |
| [in] | channel | The reference to tcp transport handler |
Definition at line 66 of file doip_tcp_channel_handler.cpp.
|
noexcept |
Function to process the received message.
| [in] | tcp_rx_message | The message received |
Definition at line 99 of file doip_tcp_channel_handler.cpp.
References doip_client::DoipMessage::kTcp.
Referenced by doip_client::channel::tcp_channel::DoipTcpChannel::ProcessReceivedTcpMessage().

|
noexcept |
Check if routing activation is active for this handler.
Definition at line 112 of file doip_tcp_channel_handler.cpp.
References doip_client::channel::tcp_channel::RoutingActivationHandler::IsRoutingActivated(), and routing_activation_handler_.
Referenced by doip_client::channel::tcp_channel::DoipTcpChannel::DisconnectFromHost(), and doip_client::channel::tcp_channel::DoipTcpChannel::Transmit().


|
privatenoexcept |
Function to process doip header in received response.
| [in] | doip_rx_message | The received doip rx message |
| [in] | nack_code | The negative ack code |
Definition at line 116 of file doip_tcp_channel_handler.cpp.
References doip_client::channel::tcp_channel::anonymous_namespace{doip_tcp_channel_handler.cpp}::kDoip_AliveCheck_ReqType, doip_client::channel::tcp_channel::anonymous_namespace{doip_tcp_channel_handler.cpp}::kDoip_GenericHeader_IncorrectPattern, doip_client::channel::tcp_channel::anonymous_namespace{doip_tcp_channel_handler.cpp}::kDoip_GenericHeader_InvalidPayloadLen, doip_client::channel::tcp_channel::anonymous_namespace{doip_tcp_channel_handler.cpp}::kDoip_GenericHeader_MessageTooLarge, doip_client::channel::tcp_channel::anonymous_namespace{doip_tcp_channel_handler.cpp}::kDoip_GenericHeader_OutOfMemory, doip_client::channel::tcp_channel::anonymous_namespace{doip_tcp_channel_handler.cpp}::kDoip_GenericHeader_UnknownPayload, doip_client::kDoip_Protocol_MaxPayload, doip_client::kDoip_ProtocolVersion, doip_client::kDoip_ProtocolVersion_Def, doip_client::channel::tcp_channel::anonymous_namespace{doip_tcp_channel_handler.cpp}::kDoip_RoutingActivation_ResType, doip_client::channel::tcp_channel::anonymous_namespace{doip_tcp_channel_handler.cpp}::kDoipDiagMessage, doip_client::channel::tcp_channel::anonymous_namespace{doip_tcp_channel_handler.cpp}::kDoipDiagMessageNegAck, doip_client::channel::tcp_channel::anonymous_namespace{doip_tcp_channel_handler.cpp}::kDoipDiagMessagePosAck, and doip_client::kTcpChannelLength.
|
privatenoexcept |
Function to process the doip payload.
| [in] | doip_payload | The reference to received payload |
Definition at line 192 of file doip_tcp_channel_handler.cpp.
References doip_client::channel::tcp_channel::anonymous_namespace{doip_tcp_channel_handler.cpp}::kDoip_RoutingActivation_ResType, doip_client::channel::tcp_channel::anonymous_namespace{doip_tcp_channel_handler.cpp}::kDoipDiagMessage, doip_client::channel::tcp_channel::anonymous_namespace{doip_tcp_channel_handler.cpp}::kDoipDiagMessageNegAck, and doip_client::channel::tcp_channel::anonymous_namespace{doip_tcp_channel_handler.cpp}::kDoipDiagMessagePosAck.
|
privatenoexcept |
Function to verify payload length of various payload type.
| [in] | payload_len | The length of payload received |
| [in] | payload_type | The type of payload |
Definition at line 163 of file doip_tcp_channel_handler.cpp.
References doip_client::channel::tcp_channel::anonymous_namespace{doip_tcp_channel_handler.cpp}::kDoip_AliveCheck_ReqType, doip_client::channel::tcp_channel::anonymous_namespace{doip_tcp_channel_handler.cpp}::kDoip_RoutingActivation_ResType, doip_client::channel::tcp_channel::anonymous_namespace{doip_tcp_channel_handler.cpp}::kDoipDiagMessage, doip_client::channel::tcp_channel::anonymous_namespace{doip_tcp_channel_handler.cpp}::kDoipDiagMessageAckResMinLen, doip_client::channel::tcp_channel::anonymous_namespace{doip_tcp_channel_handler.cpp}::kDoipDiagMessageNegAck, doip_client::channel::tcp_channel::anonymous_namespace{doip_tcp_channel_handler.cpp}::kDoipDiagMessagePosAck, doip_client::channel::tcp_channel::anonymous_namespace{doip_tcp_channel_handler.cpp}::kDoipDiagMessageReqResMinLen, and doip_client::channel::tcp_channel::anonymous_namespace{doip_tcp_channel_handler.cpp}::kDoipRoutingActivationResMaxLen.
| void doip_client::channel::tcp_channel::DoipTcpChannelHandler::Reset | ( | ) |
Function to reset the handler.
This will reset all the internal handler back to default state
Definition at line 81 of file doip_tcp_channel_handler.cpp.
References diagnostic_message_handler_, doip_client::channel::tcp_channel::DiagnosticMessageHandler::Reset(), doip_client::channel::tcp_channel::RoutingActivationHandler::Reset(), and routing_activation_handler_.
Referenced by doip_client::channel::tcp_channel::DoipTcpChannel::DisconnectFromHost().


|
noexcept |
Function to send diagnostic request.
| [in] | diagnostic_request | The diagnostic request |
Definition at line 93 of file doip_tcp_channel_handler.cpp.
Referenced by doip_client::channel::tcp_channel::DoipTcpChannel::Transmit().

|
noexcept |
Function to send routing activation request.
| [in] | routing_activation_request | The routing activation request |
Definition at line 86 of file doip_tcp_channel_handler.cpp.
Referenced by doip_client::channel::tcp_channel::DoipTcpChannel::ConnectToHost().

| void doip_client::channel::tcp_channel::DoipTcpChannelHandler::Start | ( | ) |
Function to start the handler.
Definition at line 71 of file doip_tcp_channel_handler.cpp.
References diagnostic_message_handler_, routing_activation_handler_, doip_client::channel::tcp_channel::DiagnosticMessageHandler::Start(), and doip_client::channel::tcp_channel::RoutingActivationHandler::Start().
Referenced by doip_client::channel::tcp_channel::DoipTcpChannel::Start().


| void doip_client::channel::tcp_channel::DoipTcpChannelHandler::Stop | ( | ) |
Function to stop the handler.
This will reset all the internal handler back to default state
Definition at line 76 of file doip_tcp_channel_handler.cpp.
References diagnostic_message_handler_, routing_activation_handler_, doip_client::channel::tcp_channel::DiagnosticMessageHandler::Stop(), and doip_client::channel::tcp_channel::RoutingActivationHandler::Stop().
Referenced by doip_client::channel::tcp_channel::DoipTcpChannel::Stop().


|
private |
Mutex to protect critical section.
Definition at line 137 of file doip_tcp_channel_handler.h.
|
private |
Handler to process diagnostic message req/ resp.
Definition at line 132 of file doip_tcp_channel_handler.h.
|
private |
Handler to process routing activation req/ resp.
Definition at line 127 of file doip_tcp_channel_handler.h.
Referenced by IsRoutingActivated(), Reset(), Start(), and Stop().