Diag-Client-Lib
Classes | Enumerations | Functions | Variables
doip_client::channel::tcp_channel::anonymous_namespace{doip_diagnostic_message_handler.cpp} Namespace Reference

Classes

class  kIdle
 Class implements idle state. More...
 
class  kSendDiagnosticReqFailed
 Class implements sending of diagnostic request failed. More...
 
class  kWaitForDiagnosticAck
 Class implements wait for diagnostic acknowledgement response. More...
 
class  kDiagnosticPositiveAckRecvd
 Class implements reception of diagnostic positive acknowledgement response. More...
 
class  kDiagnosticNegativeAckRecvd
 Class implements reception of diagnostic negative acknowledgement response. More...
 
class  kWaitForDiagnosticResponse
 Class implements wait for diagnostic message positive/negative response. More...
 
struct  DiagAckType
 Type holding acknowledgement type. More...
 

Enumerations

enum class  DiagnosticMessageState : std::uint8_t {
  kIdle = 0U , kSendDiagnosticReqFailed , kWaitForDiagnosticAck , kDiagnosticPositiveAckRecvd ,
  kDiagnosticNegativeAckRecvd , kWaitForDiagnosticResponse , kDiagnosticFinalResRecvd
}
 Different diagnostic message state. More...
 

Functions

std::ostream & operator<< (std::ostream &msg, DiagAckType diag_ack_type)
 Function to stream the diagnostic acknowledgement type. More...
 
auto CreateDoipGenericHeader (std::uint16_t payload_type, std::uint32_t payload_len) noexcept -> std::vector< std::uint8_t >
 Function to create doip generic header. More...
 

Variables

constexpr std::uint16_t kDoipDiagMessage {0x8001}
 Diagnostic message type. More...
 
constexpr std::uint16_t kDoipDiagMessagePosAck {0x8002}
 
constexpr std::uint16_t kDoipDiagMessageNegAck {0x8003}
 
constexpr std::uint8_t kDoipDiagnosticMessageNegAckCodeInvalidSa {0x02}
 Diagnostic Message negative acknowledgement code. More...
 
constexpr std::uint8_t kDoipDiagnosticMessageNegAckCodeUnknownTa {0x03}
 
constexpr std::uint8_t kDoipDiagnosticMessageNegAckCodeMessageTooLarge {0x04}
 
constexpr std::uint8_t kDoipDiagnosticMessageNegAckCodeOutOfMemory {0x05}
 
constexpr std::uint8_t kDoipDiagnosticMessageNegAckCodeTargetUnreachable {0x06}
 
constexpr std::uint8_t kDoipDiagnosticMessageNegAckCodeUnknownNetwork {0x07}
 
constexpr std::uint8_t kDoipDiagnosticMessageNegAckCodeTpError {0x08}
 
constexpr std::uint8_t kDoipDiagnosticMessagePosAckCodeConfirm {0x00}
 Diagnostic Message positive acknowledgement code. More...
 
constexpr std::uint8_t kDoipDiagMessageReqResMinLen = 4U
 Diagnostic Message request/response lengths. More...
 
constexpr std::uint8_t kDoipDiagMessageAckResMinLen = 5U
 
constexpr std::uint32_t kDoIPDiagnosticAckTimeout {2000u}
 The timeout specifies the maximum time that the test equipment waits for a confirmation ACK or NACK from the DoIP entity after the last byte of a DoIP Diagnostic request message has been sent. More...
 

Enumeration Type Documentation

◆ DiagnosticMessageState

enum doip_client::channel::tcp_channel::anonymous_namespace{doip_diagnostic_message_handler.cpp}::DiagnosticMessageState : std::uint8_t
strong

Different diagnostic message state.

Enumerator
kIdle 
kSendDiagnosticReqFailed 
kWaitForDiagnosticAck 
kDiagnosticPositiveAckRecvd 
kDiagnosticNegativeAckRecvd 
kWaitForDiagnosticResponse 
kDiagnosticFinalResRecvd 

Definition at line 68 of file doip_diagnostic_message_handler.cpp.

Function Documentation

◆ CreateDoipGenericHeader()

auto doip_client::channel::tcp_channel::anonymous_namespace{doip_diagnostic_message_handler.cpp}::CreateDoipGenericHeader ( std::uint16_t  payload_type,
std::uint32_t  payload_len 
) -> std::vector<std::uint8_t>
noexcept

Function to create doip generic header.

Parameters
[in]payload_typeThe type of payload
[in]payload_lenThe length of payload

Definition at line 268 of file doip_diagnostic_message_handler.cpp.

269  {
270  std::vector<std::uint8_t> output_buffer{};
271  output_buffer.emplace_back(kDoip_ProtocolVersion);
272  output_buffer.emplace_back(~(static_cast<std::uint8_t>(kDoip_ProtocolVersion)));
273  output_buffer.emplace_back(static_cast<std::uint8_t>((payload_type & 0xFF00) >> 8));
274  output_buffer.emplace_back(static_cast<std::uint8_t>(payload_type & 0x00FF));
275  output_buffer.emplace_back(static_cast<std::uint8_t>((payload_len & 0xFF000000) >> 24));
276  output_buffer.emplace_back(static_cast<std::uint8_t>((payload_len & 0x00FF0000) >> 16));
277  output_buffer.emplace_back(static_cast<std::uint8_t>((payload_len & 0x0000FF00) >> 8));
278  output_buffer.emplace_back(static_cast<std::uint8_t>(payload_len & 0x000000FF));
279  return output_buffer;
280 }
constexpr std::uint8_t kDoip_ProtocolVersion

References doip_client::kDoip_ProtocolVersion.

Referenced by doip_client::channel::tcp_channel::DiagnosticMessageHandler::SendDiagnosticRequest().

Here is the caller graph for this function:

◆ operator<<()

std::ostream& doip_client::channel::tcp_channel::anonymous_namespace{doip_diagnostic_message_handler.cpp}::operator<< ( std::ostream &  msg,
DiagAckType  diag_ack_type 
)

Function to stream the diagnostic acknowledgement type.

Definition at line 231 of file doip_diagnostic_message_handler.cpp.

231  {
232  switch (diag_ack_type.ack_type_) {
234  msg << "invalid source address.";
235  break;
237  msg << "unknown target address.";
238  break;
240  msg << "diagnostic message too large.";
241  break;
243  msg << "server out of memory.";
244  break;
246  msg << "target unreachable.";
247  break;
249  msg << "unknown network.";
250  break;
252  msg << "transport protocol error.";
253  break;
254  default:
255  msg << "unknown reason.";
256  break;
257  }
258  return msg;
259 }
constexpr std::uint8_t kDoipDiagnosticMessageNegAckCodeInvalidSa
Diagnostic Message negative acknowledgement code.

References doip_client::channel::tcp_channel::anonymous_namespace{doip_diagnostic_message_handler.cpp}::DiagAckType::ack_type_, kDoipDiagnosticMessageNegAckCodeInvalidSa, kDoipDiagnosticMessageNegAckCodeMessageTooLarge, kDoipDiagnosticMessageNegAckCodeOutOfMemory, kDoipDiagnosticMessageNegAckCodeTargetUnreachable, kDoipDiagnosticMessageNegAckCodeTpError, kDoipDiagnosticMessageNegAckCodeUnknownNetwork, and kDoipDiagnosticMessageNegAckCodeUnknownTa.

Variable Documentation

◆ kDoipDiagMessage

constexpr std::uint16_t doip_client::channel::tcp_channel::anonymous_namespace{doip_diagnostic_message_handler.cpp}::kDoipDiagMessage {0x8001}
constexpr

◆ kDoipDiagMessageAckResMinLen

constexpr std::uint8_t doip_client::channel::tcp_channel::anonymous_namespace{doip_diagnostic_message_handler.cpp}::kDoipDiagMessageAckResMinLen = 5U
constexpr

Definition at line 52 of file doip_diagnostic_message_handler.cpp.

◆ kDoipDiagMessageNegAck

constexpr std::uint16_t doip_client::channel::tcp_channel::anonymous_namespace{doip_diagnostic_message_handler.cpp}::kDoipDiagMessageNegAck {0x8003}
constexpr

◆ kDoipDiagMessagePosAck

constexpr std::uint16_t doip_client::channel::tcp_channel::anonymous_namespace{doip_diagnostic_message_handler.cpp}::kDoipDiagMessagePosAck {0x8002}
constexpr

◆ kDoipDiagMessageReqResMinLen

constexpr std::uint8_t doip_client::channel::tcp_channel::anonymous_namespace{doip_diagnostic_message_handler.cpp}::kDoipDiagMessageReqResMinLen = 4U
constexpr

Diagnostic Message request/response lengths.

Definition at line 51 of file doip_diagnostic_message_handler.cpp.

Referenced by doip_client::channel::tcp_channel::DiagnosticMessageHandler::SendDiagnosticRequest().

◆ kDoIPDiagnosticAckTimeout

constexpr std::uint32_t doip_client::channel::tcp_channel::anonymous_namespace{doip_diagnostic_message_handler.cpp}::kDoIPDiagnosticAckTimeout {2000u}
constexpr

The timeout specifies the maximum time that the test equipment waits for a confirmation ACK or NACK from the DoIP entity after the last byte of a DoIP Diagnostic request message has been sent.

Definition at line 63 of file doip_diagnostic_message_handler.cpp.

Referenced by doip_client::channel::tcp_channel::DiagnosticMessageHandler::HandleDiagnosticRequest().

◆ kDoipDiagnosticMessageNegAckCodeInvalidSa

constexpr std::uint8_t doip_client::channel::tcp_channel::anonymous_namespace{doip_diagnostic_message_handler.cpp}::kDoipDiagnosticMessageNegAckCodeInvalidSa {0x02}
constexpr

Diagnostic Message negative acknowledgement code.

Definition at line 35 of file doip_diagnostic_message_handler.cpp.

Referenced by operator<<().

◆ kDoipDiagnosticMessageNegAckCodeMessageTooLarge

constexpr std::uint8_t doip_client::channel::tcp_channel::anonymous_namespace{doip_diagnostic_message_handler.cpp}::kDoipDiagnosticMessageNegAckCodeMessageTooLarge {0x04}
constexpr

Definition at line 37 of file doip_diagnostic_message_handler.cpp.

Referenced by operator<<().

◆ kDoipDiagnosticMessageNegAckCodeOutOfMemory

constexpr std::uint8_t doip_client::channel::tcp_channel::anonymous_namespace{doip_diagnostic_message_handler.cpp}::kDoipDiagnosticMessageNegAckCodeOutOfMemory {0x05}
constexpr

Definition at line 38 of file doip_diagnostic_message_handler.cpp.

Referenced by operator<<().

◆ kDoipDiagnosticMessageNegAckCodeTargetUnreachable

constexpr std::uint8_t doip_client::channel::tcp_channel::anonymous_namespace{doip_diagnostic_message_handler.cpp}::kDoipDiagnosticMessageNegAckCodeTargetUnreachable {0x06}
constexpr

Definition at line 39 of file doip_diagnostic_message_handler.cpp.

Referenced by operator<<().

◆ kDoipDiagnosticMessageNegAckCodeTpError

constexpr std::uint8_t doip_client::channel::tcp_channel::anonymous_namespace{doip_diagnostic_message_handler.cpp}::kDoipDiagnosticMessageNegAckCodeTpError {0x08}
constexpr

Definition at line 41 of file doip_diagnostic_message_handler.cpp.

Referenced by operator<<().

◆ kDoipDiagnosticMessageNegAckCodeUnknownNetwork

constexpr std::uint8_t doip_client::channel::tcp_channel::anonymous_namespace{doip_diagnostic_message_handler.cpp}::kDoipDiagnosticMessageNegAckCodeUnknownNetwork {0x07}
constexpr

Definition at line 40 of file doip_diagnostic_message_handler.cpp.

Referenced by operator<<().

◆ kDoipDiagnosticMessageNegAckCodeUnknownTa

constexpr std::uint8_t doip_client::channel::tcp_channel::anonymous_namespace{doip_diagnostic_message_handler.cpp}::kDoipDiagnosticMessageNegAckCodeUnknownTa {0x03}
constexpr

Definition at line 36 of file doip_diagnostic_message_handler.cpp.

Referenced by operator<<().

◆ kDoipDiagnosticMessagePosAckCodeConfirm

constexpr std::uint8_t doip_client::channel::tcp_channel::anonymous_namespace{doip_diagnostic_message_handler.cpp}::kDoipDiagnosticMessagePosAckCodeConfirm {0x00}
constexpr

Diagnostic Message positive acknowledgement code.

Definition at line 46 of file doip_diagnostic_message_handler.cpp.

Referenced by doip_client::channel::tcp_channel::DiagnosticMessageHandler::ProcessDoIPDiagnosticAckMessageResponse().