15 #include "common/logger.h"
20 namespace tcp_channel {
67 : routing_activation_handler_{tcp_socket_handler},
68 diagnostic_message_handler_{tcp_socket_handler, channel} {}
88 return routing_activation_handler_.HandleRoutingActivationRequest(std::move(routing_activation_request));
93 return diagnostic_message_handler_.HandleDiagnosticRequest(std::move(diagnostic_request));
97 std::uint8_t nack_code{};
99 tcp_rx_message->GetHostPortNumber(),
102 if (ProcessDoIPHeader(doip_rx_message, nack_code)) {
103 ProcessDoIPPayload(doip_rx_message);
115 bool ret_val =
false;
118 (doip_rx_message.GetInverseProtocolVersion() ==
static_cast<std::uint8_t
>(~
kDoip_ProtocolVersion))) ||
132 if (ProcessDoIPPayloadLength(doip_rx_message.GetPayloadLength(), doip_rx_message.GetPayloadType())) {
160 switch (payload_type) {
187 std::lock_guard<std::mutex>
const lck(channel_handler_lock);
188 switch (doip_payload.GetPayloadType()) {
191 routing_activation_handler_.ProcessDoIPRoutingActivationResponse(doip_payload);
195 diagnostic_message_handler_.ProcessDoIPDiagnosticMessageResponse(doip_payload);
200 diagnostic_message_handler_.ProcessDoIPDiagnosticAckMessageResponse(doip_payload);
Immutable class to store received doip message.
void Stop()
Function to stop the handler.
void Start()
Function to start the handler.
void Reset()
Function to reset the handler.
auto ProcessDoIPPayloadLength(std::uint32_t payload_len, std::uint16_t payload_type) noexcept -> bool
Function to verify payload length of various payload type.
auto IsRoutingActivated() noexcept -> bool
Check if routing activation is active for this handler.
RoutingActivationHandler routing_activation_handler_
Handler to process routing activation req/ resp.
DiagnosticMessageHandler diagnostic_message_handler_
Handler to process diagnostic message req/ resp.
void Start()
Function to start the handler.
void Reset()
Function to reset the handler.
DoipTcpChannelHandler(sockets::TcpSocketHandler &tcp_socket_handler, DoipTcpChannel &channel)
Constructs an instance of DoipTcpChannelHandler.
sockets::TcpSocketHandler::TcpMessagePtr TcpMessagePtr
Type alias for Tcp message pointer.
auto SendDiagnosticRequest(uds_transport::UdsMessageConstPtr diagnostic_request) noexcept -> uds_transport::UdsTransportProtocolMgr::TransmissionResult
Function to send diagnostic request.
void Stop()
Function to stop the handler.
void ProcessDoIPPayload(DoipMessage &doip_payload) noexcept
Function to process the doip payload.
auto SendRoutingActivationRequest(uds_transport::UdsMessageConstPtr routing_activation_request) noexcept -> uds_transport::UdsTransportProtocolMgr::ConnectionResult
Function to send routing activation request.
auto ProcessDoIPHeader(DoipMessage &doip_rx_message, std::uint8_t &nack_code) noexcept -> bool
Function to process doip header in received response.
void HandleMessage(TcpMessagePtr tcp_rx_message) noexcept
Function to process the received message.
Class to manage a tcp channel as per DoIP protocol.
void Stop()
Function to stop the handler.
void Reset()
Function to reset the handler.
auto IsRoutingActivated() noexcept -> bool
Check if routing activation is active for this handler.
void Start()
Function to start the handler.
Class used to create a tcp socket for handling transmission and reception of tcp message from driver.
constexpr std::uint16_t kDoip_AliveCheck_ResType
constexpr std::uint8_t kDoip_GenericHeader_MessageTooLarge
constexpr std::uint16_t kDoip_RoutingActivation_ResType
Routing Activation response Type.
constexpr std::uint16_t kDoip_DiagMessageNegAck_Type
constexpr std::uint16_t kDoip_DiagMessage_Type
Diagnostic message type.
constexpr std::uint32_t kDoip_RoutingActivation_ResMaxLen
constexpr std::uint16_t kDoip_AliveCheck_ReqType
Alive check type.
constexpr std::uint8_t kDoip_DiagMessageAck_ResMinLen
constexpr std::uint32_t kDoip_RoutingActivation_ReqMaxLen
constexpr std::uint8_t kDoip_GenericHeader_OutOfMemory
constexpr std::uint8_t kDoip_GenericHeader_InvalidPayloadLen
constexpr std::uint32_t kDoip_RoutingActivation_ResMinLen
constexpr std::uint8_t kDoip_DiagMessage_ReqResMinLen
Diagnostic Message request/response lengths.
constexpr std::uint8_t kDoip_GenericHeader_UnknownPayload
constexpr std::uint8_t kDoip_GenericHeader_IncorrectPattern
Generic DoIP Header NACK codes.
constexpr std::uint32_t kDoip_RoutingActivation_ReqMinLen
Routing Activation request lengths.
constexpr std::uint16_t kDoip_DiagMessagePosAck_Type
constexpr std::uint8_t kDoip_ProtocolVersion_Def
constexpr std::uint32_t kDoip_Protocol_MaxPayload
constexpr std::uint8_t kDoip_ProtocolVersion
constexpr std::uint32_t kTcpChannelLength
std::unique_ptr< const UdsMessage > UdsMessageConstPtr