Diag-Client-Lib
connection.h
Go to the documentation of this file.
1 /* Diagnostic Client library
2  * Copyright (C) 2024 Avijit Dey
3  *
4  * This Source Code Form is subject to the terms of the Mozilla Public
5  * License, v. 2.0. If a copy of the MPL was not distributed with this
6  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
7  */
8 #ifndef DIAGNOSTIC_CLIENT_LIB_LIB_UDS_TRANSPORT_LAYER_API_UDS_TRANSPORT_CONNECTION_H
9 #define DIAGNOSTIC_CLIENT_LIB_LIB_UDS_TRANSPORT_LAYER_API_UDS_TRANSPORT_CONNECTION_H
10 /* includes */
11 #include <cstdint>
12 
13 #include "core/include/span.h"
17 
18 namespace uds_transport {
19 
23 class Connection {
24  public:
28  using ConnectionId = std::uint8_t;
29 
34 
42  Connection(ConnectionId connection_id, uds_transport::ConversionHandler const &conversation_handler) noexcept
43  : conversation_handler_{conversation_handler},
44  connection_id_{connection_id} {}
45 
49  virtual ~Connection() = default;
50 
56 
62 
66  virtual void Start() = 0;
67 
71  virtual void Stop() = 0;
72 
77  virtual bool IsConnectToHost() = 0;
78 
86 
92 
118  virtual std::pair<UdsTransportProtocolMgr::IndicationResult, UdsMessagePtr> IndicateMessage(
120  ChannelID channel_id, std::size_t size, Priority priority, ProtocolKind protocol_kind,
121  core_type::Span<std::uint8_t> payload_info) = 0;
122 
129 
136  virtual void HandleMessage(UdsMessagePtr message) = 0;
137 
143 
144  protected:
149 
150  private:
155 };
156 
157 } // namespace uds_transport
158 
159 #endif // DIAGNOSTIC_CLIENT_LIB_LIB_UDS_TRANSPORT_LAYER_API_UDS_TRANSPORT_CONNECTION_H
Interface class to handle connection between two layers.
Definition: connection.h:23
std::uint8_t ConnectionId
Type alias for connection id.
Definition: connection.h:28
virtual ~Connection()=default
Destruct an instance of Connection.
uds_transport::ConversionHandler const & conversation_handler_
Store the conversation handler.
Definition: connection.h:148
virtual std::pair< UdsTransportProtocolMgr::IndicationResult, UdsMessagePtr > IndicateMessage(UdsMessage::Address source_addr, UdsMessage::Address target_addr, UdsMessage::TargetAddressType type, ChannelID channel_id, std::size_t size, Priority priority, ProtocolKind protocol_kind, core_type::Span< std::uint8_t > payload_info)=0
Function to indicate a start of reception of message.
virtual UdsTransportProtocolMgr::TransmissionResult Transmit(UdsMessageConstPtr message)=0
Function to transmit a valid Uds message.
virtual InitializationResult Initialize()=0
Function to initialize the connection.
ConnectionId connection_id_
Store the connection id.
Definition: connection.h:154
Connection(ConnectionId connection_id, uds_transport::ConversionHandler const &conversation_handler) noexcept
Constructor to create a new connection.
Definition: connection.h:42
virtual void Stop()=0
Function to stop the connection.
virtual bool IsConnectToHost()=0
Function to check if connected to host remote server.
ConnectionId GetConnectionId() const
Function to get the connection id.
Definition: connection.h:142
virtual UdsTransportProtocolMgr::ConnectionResult ConnectToHost(UdsMessageConstPtr message)=0
Function to establish connection to remote host server.
virtual void Start()=0
Function to start the connection.
virtual void HandleMessage(UdsMessagePtr message)=0
Function to Hands over a valid received Uds message.
ConnectionId GetConnectionId() noexcept
Function to get the connection id.
Definition: connection.h:61
virtual UdsTransportProtocolMgr::DisconnectionResult DisconnectFromHost()=0
Function to disconnect from remote host server.
Class to manage reception from transport protocol handler to connection handler.
InitializationResult
Definitions of different initialization result.
std::string_view ProtocolKind
std::unique_ptr< const UdsMessage > UdsMessageConstPtr
Definition: uds_message.h:69
std::unique_ptr< UdsMessage > UdsMessagePtr
Definition: uds_message.h:71
uint32_t ChannelID
std::uint8_t Priority