AgIsoStack++
A control-function-focused implementation of the major ISOBUS and J1939 protocols
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Static Public Attributes | Private Member Functions | Private Attributes | List of all members
isobus::TransportProtocolManager Class Reference

A class that handles the ISO11783/J1939 transport protocol. More...

#include <can_transport_protocol.hpp>

Collaboration diagram for isobus::TransportProtocolManager:
[legend]

Classes

class  TransportProtocolSession
 A storage object to keep track of session information internally. More...
 

Public Types

enum class  StateMachineState {
  None , SendBroadcastAnnounce , SendRequestToSend , WaitForClearToSend ,
  SendClearToSend , WaitForDataTransferPacket , SendDataTransferPackets , WaitForEndOfMessageAcknowledge
}
 The states that a TP session could be in. Used for the internal state machine. More...
 
enum class  ConnectionAbortReason : std::uint8_t {
  Reserved = 0 , AlreadyInCMSession = 1 , SystemResourcesNeeded = 2 , Timeout = 3 ,
  ClearToSendReceivedWhileTransferInProgress = 4 , MaximumRetransmitRequestLimitReached = 5 , UnexpectedDataTransferPacketReceived = 6 , BadSequenceNumber = 7 ,
  DuplicateSequenceNumber = 8 , TotalMessageSizeTooBig = 9 , AnyOtherError = 250
}
 A list of all defined abort reasons in ISO11783. More...
 

Public Member Functions

 TransportProtocolManager (const CANMessageFrameCallback &sendCANFrameCallback, const CANMessageCallback &canMessageReceivedCallback, const CANNetworkConfiguration *configuration)
 The constructor for the TransportProtocolManager, for advanced use only. In most cases, you should use the CANNetworkManager::send_can_message() function to transmit messages.
 
void update ()
 Updates all sessions managed by this protocol manager instance.
 
bool has_session (std::shared_ptr< ControlFunction > source, std::shared_ptr< ControlFunction > destination)
 Checks if the source and destination control function have an active session/connection.
 
const std::vector< std::shared_ptr< TransportProtocolSession > > & get_sessions () const
 Gets all the active transport protocol sessions that are currently active.
 
void process_message (const CANMessage &message)
 A generic way for a protocol to process a received message.
 
bool protocol_transmit_message (std::uint32_t parameterGroupNumber, std::unique_ptr< CANMessageData > &data, std::shared_ptr< ControlFunction > source, std::shared_ptr< ControlFunction > destination, TransmitCompleteCallback sessionCompleteCallback, void *parentPointer)
 The network manager calls this to see if the protocol can accept a long CAN message for processing.
 

Static Public Attributes

static constexpr std::uint32_t REQUEST_TO_SEND_MULTIPLEXOR = 0x10
 (16) TP.CM_RTS Multiplexor
 
static constexpr std::uint32_t CLEAR_TO_SEND_MULTIPLEXOR = 0x11
 (17) TP.CM_CTS Multiplexor
 
static constexpr std::uint32_t END_OF_MESSAGE_ACKNOWLEDGE_MULTIPLEXOR = 0x13
 (19) TP.CM_EOM_ACK Multiplexor
 
static constexpr std::uint32_t BROADCAST_ANNOUNCE_MESSAGE_MULTIPLEXOR = 0x20
 (32) TP.BAM Multiplexor
 
static constexpr std::uint32_t CONNECTION_ABORT_MULTIPLEXOR = 0xFF
 (255) Abort multiplexor
 
static constexpr std::uint32_t MAX_PROTOCOL_DATA_LENGTH = 1785
 The max number of bytes that this protocol can transfer.
 
static constexpr std::uint16_t T1_TIMEOUT_MS = 750
 The t1 timeout as defined by the standard.
 
static constexpr std::uint16_t T2_T3_TIMEOUT_MS = 1250
 The t2/t3 timeouts as defined by the standard.
 
static constexpr std::uint16_t T4_TIMEOUT_MS = 1050
 The t4 timeout as defined by the standard.
 
static constexpr std::uint8_t R_TIMEOUT_MS = 200
 The Tr Timeout as defined by the standard.
 
static constexpr std::uint8_t SEQUENCE_NUMBER_DATA_INDEX = 0
 The index of the sequence number in a frame.
 
static constexpr std::uint8_t PROTOCOL_BYTES_PER_FRAME = 7
 The number of payload bytes per frame minus overhead of sequence number.
 

Private Member Functions

bool abort_session (std::shared_ptr< TransportProtocolSession > &session, ConnectionAbortReason reason)
 Aborts the session with the specified abort reason. Sends a CAN message.
 
bool send_abort (std::shared_ptr< InternalControlFunction > sender, std::shared_ptr< ControlFunction > receiver, std::uint32_t parameterGroupNumber, ConnectionAbortReason reason) const
 Send an abort with no corresponding session with the specified abort reason. Sends a CAN message.
 
void close_session (std::shared_ptr< TransportProtocolSession > &session, bool successful)
 Gracefully closes a session to prepare for a new session.
 
bool send_broadcast_announce_message (std::shared_ptr< TransportProtocolSession > &session) const
 Sends the "broadcast announce" message.
 
bool send_request_to_send (std::shared_ptr< TransportProtocolSession > &session) const
 Sends the "request to send" message as part of initiating a transmit.
 
bool send_clear_to_send (std::shared_ptr< TransportProtocolSession > &session) const
 Sends the "clear to send" message.
 
bool send_end_of_session_acknowledgement (std::shared_ptr< TransportProtocolSession > &session) const
 Sends the "end of message acknowledgement" message for the provided session.
 
void send_data_transfer_packets (std::shared_ptr< TransportProtocolSession > &session)
 Sends data transfer packets for the specified TransportProtocolSession.
 
void process_broadcast_announce_message (const std::shared_ptr< ControlFunction > source, std::uint32_t parameterGroupNumber, std::uint16_t totalMessageSize, std::uint8_t totalNumberOfPackets)
 Processes a broadcast announce message.
 
void process_request_to_send (const std::shared_ptr< ControlFunction > source, const std::shared_ptr< ControlFunction > destination, std::uint32_t parameterGroupNumber, std::uint16_t totalMessageSize, std::uint8_t totalNumberOfPackets, std::uint8_t clearToSendPacketMax)
 Processes a request to send a message over the CAN transport protocol.
 
void process_clear_to_send (const std::shared_ptr< ControlFunction > source, const std::shared_ptr< ControlFunction > destination, std::uint32_t parameterGroupNumber, std::uint8_t packetsToBeSent, std::uint8_t nextPacketNumber)
 Processes the Clear To Send (CTS) message.
 
void process_end_of_session_acknowledgement (const std::shared_ptr< ControlFunction > source, const std::shared_ptr< ControlFunction > destination, std::uint32_t parameterGroupNumber)
 Processes the end of session acknowledgement.
 
void process_abort (const std::shared_ptr< ControlFunction > source, const std::shared_ptr< ControlFunction > destination, std::uint32_t parameterGroupNumber, TransportProtocolManager::ConnectionAbortReason reason)
 Processes an abort message in the CAN transport protocol.
 
void process_connection_management_message (const CANMessage &message)
 Processes a connection management message.
 
void process_data_transfer_message (const CANMessage &message)
 Processes a data transfer message.
 
std::shared_ptr< TransportProtocolSessionget_session (std::shared_ptr< ControlFunction > source, std::shared_ptr< ControlFunction > destination)
 Gets a TP session from the passed in source and destination combination.
 
void update_state_machine (std::shared_ptr< TransportProtocolSession > &session)
 Update the state machine for the passed in session.
 

Private Attributes

std::vector< std::shared_ptr< TransportProtocolSession > > activeSessions
 A list of all active TP sessions.
 
const CANMessageFrameCallback sendCANFrameCallback
 A callback for sending a CAN frame.
 
const CANMessageCallback canMessageReceivedCallback
 A callback for when a complete CAN message is received using the TP protocol.
 
const CANNetworkConfigurationconfiguration
 The configuration to use for this protocol.
 

Detailed Description

A class that handles the ISO11783/J1939 transport protocol.

This class handles transmission and reception of CAN messages up to 1785 bytes. Both broadcast and connection mode are supported. Simply call CANNetworkManager::send_can_message() with an appropriate data length, and the protocol will be automatically selected to be used.

Note
The use of multi-frame broadcast messages (BAM) is discouraged, as it has profound packet timing implications for your application, and is limited to only 1 active session at a time. That session could be busy if you are using DM1 or any other BAM protocol, causing intermittent transmit failures from this class. This is not a bug, rather a limitation of the protocol definition.

Definition at line 31 of file can_transport_protocol.hpp.

Member Enumeration Documentation

◆ ConnectionAbortReason

A list of all defined abort reasons in ISO11783.

Enumerator
Reserved 

Reserved, not to be used, but should be tolerated.

AlreadyInCMSession 

We are already in a connection mode session and can't support another.

SystemResourcesNeeded 

Session must be aborted because the system needs resources.

Timeout 

General timeout.

ClearToSendReceivedWhileTransferInProgress 

A CTS was received while already processing the last CTS.

MaximumRetransmitRequestLimitReached 

Maximum retries for the data has been reached.

UnexpectedDataTransferPacketReceived 

A data packet was received outside the proper state.

BadSequenceNumber 

Incorrect sequence number was received and cannot be recovered.

DuplicateSequenceNumber 

Re-received a sequence number we've already processed.

TotalMessageSizeTooBig 

TP Can't support a message this large (>1785 bytes)

AnyOtherError 

Any reason not defined in the standard.

Definition at line 48 of file can_transport_protocol.hpp.

◆ StateMachineState

The states that a TP session could be in. Used for the internal state machine.

Enumerator
None 

Protocol session is not in progress.

SendBroadcastAnnounce 

We are sending the broadcast announce message (BAM)

SendRequestToSend 

We are sending the request to send message.

WaitForClearToSend 

We are waiting for a clear to send message.

SendClearToSend 

We are sending clear to send message.

WaitForDataTransferPacket 

We are waiting for data transfer packets.

SendDataTransferPackets 

A Tx data session is in progress.

WaitForEndOfMessageAcknowledge 

We are waiting for an end of message acknowledgement.

Definition at line 35 of file can_transport_protocol.hpp.

Constructor & Destructor Documentation

◆ TransportProtocolManager()

isobus::TransportProtocolManager::TransportProtocolManager ( const CANMessageFrameCallback & sendCANFrameCallback,
const CANMessageCallback & canMessageReceivedCallback,
const CANNetworkConfiguration * configuration )

The constructor for the TransportProtocolManager, for advanced use only. In most cases, you should use the CANNetworkManager::send_can_message() function to transmit messages.

Parameters
[in]sendCANFrameCallbackA callback for sending a CAN frame to hardware
[in]canMessageReceivedCallbackA callback for when a complete CAN message is received using the TP protocol
[in]configurationThe configuration to use for this protocol

Definition at line 123 of file can_transport_protocol.cpp.

Member Function Documentation

◆ abort_session()

bool isobus::TransportProtocolManager::abort_session ( std::shared_ptr< TransportProtocolSession > & session,
ConnectionAbortReason reason )
private

Aborts the session with the specified abort reason. Sends a CAN message.

Parameters
[in]sessionThe session to abort
[in]reasonThe reason we're aborting the session
Returns
true if the abort was send OK, false if not sent

Definition at line 835 of file can_transport_protocol.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ close_session()

void isobus::TransportProtocolManager::close_session ( std::shared_ptr< TransportProtocolSession > & session,
bool successful )
private

Gracefully closes a session to prepare for a new session.

Parameters
[in]sessionThe session to close
[in]successfulDenotes if the session was successful

Definition at line 881 of file can_transport_protocol.cpp.

Here is the caller graph for this function:

◆ get_session()

std::shared_ptr< TransportProtocolManager::TransportProtocolSession > isobus::TransportProtocolManager::get_session ( std::shared_ptr< ControlFunction > source,
std::shared_ptr< ControlFunction > destination )
private

Gets a TP session from the passed in source and destination combination.

Parameters
[in]sourceThe source control function for the session
[in]destinationThe destination control function for the session
Returns
a matching session, or nullptr if no session matched the supplied parameters

Definition at line 1000 of file can_transport_protocol.cpp.

Here is the caller graph for this function:

◆ get_sessions()

const std::vector< std::shared_ptr< TransportProtocolManager::TransportProtocolSession > > & isobus::TransportProtocolManager::get_sessions ( ) const

Gets all the active transport protocol sessions that are currently active.

Note
The list returns pointers to the transport protocol sessions, but they can disappear at any time
Returns
A list of all the active transport protocol sessions

Definition at line 1009 of file can_transport_protocol.cpp.

◆ has_session()

bool isobus::TransportProtocolManager::has_session ( std::shared_ptr< ControlFunction > source,
std::shared_ptr< ControlFunction > destination )

Checks if the source and destination control function have an active session/connection.

Parameters
[in]sourceThe source control function for the session
[in]destinationThe destination control function for the session
Returns
true if a matching session was found, false if not

Definition at line 993 of file can_transport_protocol.cpp.

Here is the caller graph for this function:

◆ process_abort()

void isobus::TransportProtocolManager::process_abort ( const std::shared_ptr< ControlFunction > source,
const std::shared_ptr< ControlFunction > destination,
std::uint32_t parameterGroupNumber,
TransportProtocolManager::ConnectionAbortReason reason )
private

Processes an abort message in the CAN transport protocol.

Parameters
[in]sourceThe shared pointer to the source control function.
[in]destinationThe shared pointer to the destination control function.
[in]parameterGroupNumberThe PGN (Parameter Group Number) of the message.
[in]reasonThe reason for the connection abort.

Definition at line 324 of file can_transport_protocol.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ process_broadcast_announce_message()

void isobus::TransportProtocolManager::process_broadcast_announce_message ( const std::shared_ptr< ControlFunction > source,
std::uint32_t parameterGroupNumber,
std::uint16_t totalMessageSize,
std::uint8_t totalNumberOfPackets )
private

Processes a broadcast announce message.

Parameters
[in]sourceThe source control function that sent the broadcast announce message.
[in]parameterGroupNumberThe Parameter Group Number of the broadcast announce message.
[in]totalMessageSizeThe total size of the broadcast announce message.
[in]totalNumberOfPacketsThe total number of packets in the broadcast announce message.

Definition at line 132 of file can_transport_protocol.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ process_clear_to_send()

void isobus::TransportProtocolManager::process_clear_to_send ( const std::shared_ptr< ControlFunction > source,
const std::shared_ptr< ControlFunction > destination,
std::uint32_t parameterGroupNumber,
std::uint8_t packetsToBeSent,
std::uint8_t nextPacketNumber )
private

Processes the Clear To Send (CTS) message.

Parameters
[in]sourceThe shared pointer to the source control function.
[in]destinationThe shared pointer to the destination control function.
[in]parameterGroupNumberThe Parameter Group Number (PGN) of the message.
[in]packetsToBeSentThe number of packets to be sent.
[in]nextPacketNumberThe next packet number.

Definition at line 253 of file can_transport_protocol.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ process_connection_management_message()

void isobus::TransportProtocolManager::process_connection_management_message ( const CANMessage & message)
private

Processes a connection management message.

Parameters
[in]messageThe CAN message to be processed.

Definition at line 358 of file can_transport_protocol.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ process_data_transfer_message()

void isobus::TransportProtocolManager::process_data_transfer_message ( const CANMessage & message)
private

Processes a data transfer message.

Parameters
[in]messageThe CAN message to be processed.

Definition at line 468 of file can_transport_protocol.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ process_end_of_session_acknowledgement()

void isobus::TransportProtocolManager::process_end_of_session_acknowledgement ( const std::shared_ptr< ControlFunction > source,
const std::shared_ptr< ControlFunction > destination,
std::uint32_t parameterGroupNumber )
private

Processes the end of session acknowledgement.

Parameters
[in]sourceThe source control function.
[in]destinationThe destination control function.
[in]parameterGroupNumberThe parameter group number.

Definition at line 299 of file can_transport_protocol.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ process_message()

void isobus::TransportProtocolManager::process_message ( const CANMessage & message)

A generic way for a protocol to process a received message.

Parameters
[in]messageA received CAN message

Definition at line 557 of file can_transport_protocol.cpp.

Here is the call graph for this function:

◆ process_request_to_send()

void isobus::TransportProtocolManager::process_request_to_send ( const std::shared_ptr< ControlFunction > source,
const std::shared_ptr< ControlFunction > destination,
std::uint32_t parameterGroupNumber,
std::uint16_t totalMessageSize,
std::uint8_t totalNumberOfPackets,
std::uint8_t clearToSendPacketMax )
private

Processes a request to send a message over the CAN transport protocol.

Parameters
[in]sourceThe shared pointer to the source control function.
[in]destinationThe shared pointer to the destination control function.
[in]parameterGroupNumberThe Parameter Group Number of the message.
[in]totalMessageSizeThe total size of the message in bytes.
[in]totalNumberOfPacketsThe total number of packets to be sent.
[in]clearToSendPacketMaxThe maximum number of clear to send packets that can be sent.

Definition at line 186 of file can_transport_protocol.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ protocol_transmit_message()

bool isobus::TransportProtocolManager::protocol_transmit_message ( std::uint32_t parameterGroupNumber,
std::unique_ptr< CANMessageData > & data,
std::shared_ptr< ControlFunction > source,
std::shared_ptr< ControlFunction > destination,
TransmitCompleteCallback sessionCompleteCallback,
void * parentPointer )

The network manager calls this to see if the protocol can accept a long CAN message for processing.

Parameters
[in]parameterGroupNumberThe PGN of the message
[in]dataThe data to be sent
[in]sourceThe source control function
[in]destinationThe destination control function
[in]sessionCompleteCallbackA callback for when the protocol completes its work
[in]parentPointerA generic context object for the tx complete and chunk callbacks
Returns
true if the message was accepted by the protocol for processing

Definition at line 582 of file can_transport_protocol.cpp.

Here is the call graph for this function:

◆ send_abort()

bool isobus::TransportProtocolManager::send_abort ( std::shared_ptr< InternalControlFunction > sender,
std::shared_ptr< ControlFunction > receiver,
std::uint32_t parameterGroupNumber,
ConnectionAbortReason reason ) const
private

Send an abort with no corresponding session with the specified abort reason. Sends a CAN message.

Parameters
[in]senderThe sender of the abort
[in]receiverThe receiver of the abort
[in]parameterGroupNumberThe PGN of the TP "session" we're aborting
[in]reasonThe reason we're aborting the session
Returns
true if the abort was send OK, false if not sent

Definition at line 859 of file can_transport_protocol.cpp.

Here is the caller graph for this function:

◆ send_broadcast_announce_message()

bool isobus::TransportProtocolManager::send_broadcast_announce_message ( std::shared_ptr< TransportProtocolSession > & session) const
private

Sends the "broadcast announce" message.

Parameters
[in]sessionThe session for which we're sending the BAM
Returns
true if the BAM was sent, false if sending was not successful

Definition at line 893 of file can_transport_protocol.cpp.

Here is the caller graph for this function:

◆ send_clear_to_send()

bool isobus::TransportProtocolManager::send_clear_to_send ( std::shared_ptr< TransportProtocolSession > & session) const
private

Sends the "clear to send" message.

Parameters
[in]sessionThe session for which we're sending the CTS
Returns
true if the CTS was sent, false if sending was not successful
Todo
apply CTS number of packets recommendation of 16 via a configuration option

Definition at line 931 of file can_transport_protocol.cpp.

Here is the caller graph for this function:

◆ send_data_transfer_packets()

void isobus::TransportProtocolManager::send_data_transfer_packets ( std::shared_ptr< TransportProtocolSession > & session)
private

Sends data transfer packets for the specified TransportProtocolSession.

Parameters
[in]sessionThe TransportProtocolSession for which to send data transfer packets.

Definition at line 660 of file can_transport_protocol.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ send_end_of_session_acknowledgement()

bool isobus::TransportProtocolManager::send_end_of_session_acknowledgement ( std::shared_ptr< TransportProtocolSession > & session) const
private

Sends the "end of message acknowledgement" message for the provided session.

Parameters
[in]sessionThe session for which we're sending the EOM ACK
Returns
true if the EOM was sent, false if sending was not successful

Definition at line 969 of file can_transport_protocol.cpp.

Here is the caller graph for this function:

◆ send_request_to_send()

bool isobus::TransportProtocolManager::send_request_to_send ( std::shared_ptr< TransportProtocolSession > & session) const
private

Sends the "request to send" message as part of initiating a transmit.

Parameters
[in]sessionThe session for which we're sending the RTS
Returns
true if the RTS was sent, false if sending was not successful

Definition at line 912 of file can_transport_protocol.cpp.

Here is the caller graph for this function:

◆ update()

void isobus::TransportProtocolManager::update ( )

Updates all sessions managed by this protocol manager instance.

Definition at line 637 of file can_transport_protocol.cpp.

Here is the call graph for this function:

◆ update_state_machine()

void isobus::TransportProtocolManager::update_state_machine ( std::shared_ptr< TransportProtocolSession > & session)
private

Update the state machine for the passed in session.

Parameters
[in]sessionThe session to update

Definition at line 725 of file can_transport_protocol.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ activeSessions

std::vector<std::shared_ptr<TransportProtocolSession> > isobus::TransportProtocolManager::activeSessions
private

A list of all active TP sessions.

Definition at line 317 of file can_transport_protocol.hpp.

◆ BROADCAST_ANNOUNCE_MESSAGE_MULTIPLEXOR

constexpr std::uint32_t isobus::TransportProtocolManager::BROADCAST_ANNOUNCE_MESSAGE_MULTIPLEXOR = 0x20
staticconstexpr

(32) TP.BAM Multiplexor

Definition at line 163 of file can_transport_protocol.hpp.

◆ canMessageReceivedCallback

const CANMessageCallback isobus::TransportProtocolManager::canMessageReceivedCallback
private

A callback for when a complete CAN message is received using the TP protocol.

Definition at line 319 of file can_transport_protocol.hpp.

◆ CLEAR_TO_SEND_MULTIPLEXOR

constexpr std::uint32_t isobus::TransportProtocolManager::CLEAR_TO_SEND_MULTIPLEXOR = 0x11
staticconstexpr

(17) TP.CM_CTS Multiplexor

Definition at line 161 of file can_transport_protocol.hpp.

◆ configuration

const CANNetworkConfiguration* isobus::TransportProtocolManager::configuration
private

The configuration to use for this protocol.

Definition at line 320 of file can_transport_protocol.hpp.

◆ CONNECTION_ABORT_MULTIPLEXOR

constexpr std::uint32_t isobus::TransportProtocolManager::CONNECTION_ABORT_MULTIPLEXOR = 0xFF
staticconstexpr

(255) Abort multiplexor

Definition at line 164 of file can_transport_protocol.hpp.

◆ END_OF_MESSAGE_ACKNOWLEDGE_MULTIPLEXOR

constexpr std::uint32_t isobus::TransportProtocolManager::END_OF_MESSAGE_ACKNOWLEDGE_MULTIPLEXOR = 0x13
staticconstexpr

(19) TP.CM_EOM_ACK Multiplexor

Definition at line 162 of file can_transport_protocol.hpp.

◆ MAX_PROTOCOL_DATA_LENGTH

constexpr std::uint32_t isobus::TransportProtocolManager::MAX_PROTOCOL_DATA_LENGTH = 1785
staticconstexpr

The max number of bytes that this protocol can transfer.

Definition at line 165 of file can_transport_protocol.hpp.

◆ PROTOCOL_BYTES_PER_FRAME

constexpr std::uint8_t isobus::TransportProtocolManager::PROTOCOL_BYTES_PER_FRAME = 7
staticconstexpr

The number of payload bytes per frame minus overhead of sequence number.

Definition at line 171 of file can_transport_protocol.hpp.

◆ R_TIMEOUT_MS

constexpr std::uint8_t isobus::TransportProtocolManager::R_TIMEOUT_MS = 200
staticconstexpr

The Tr Timeout as defined by the standard.

Definition at line 169 of file can_transport_protocol.hpp.

◆ REQUEST_TO_SEND_MULTIPLEXOR

constexpr std::uint32_t isobus::TransportProtocolManager::REQUEST_TO_SEND_MULTIPLEXOR = 0x10
staticconstexpr

(16) TP.CM_RTS Multiplexor

Definition at line 160 of file can_transport_protocol.hpp.

◆ sendCANFrameCallback

const CANMessageFrameCallback isobus::TransportProtocolManager::sendCANFrameCallback
private

A callback for sending a CAN frame.

Definition at line 318 of file can_transport_protocol.hpp.

◆ SEQUENCE_NUMBER_DATA_INDEX

constexpr std::uint8_t isobus::TransportProtocolManager::SEQUENCE_NUMBER_DATA_INDEX = 0
staticconstexpr

The index of the sequence number in a frame.

Definition at line 170 of file can_transport_protocol.hpp.

◆ T1_TIMEOUT_MS

constexpr std::uint16_t isobus::TransportProtocolManager::T1_TIMEOUT_MS = 750
staticconstexpr

The t1 timeout as defined by the standard.

Definition at line 166 of file can_transport_protocol.hpp.

◆ T2_T3_TIMEOUT_MS

constexpr std::uint16_t isobus::TransportProtocolManager::T2_T3_TIMEOUT_MS = 1250
staticconstexpr

The t2/t3 timeouts as defined by the standard.

Definition at line 167 of file can_transport_protocol.hpp.

◆ T4_TIMEOUT_MS

constexpr std::uint16_t isobus::TransportProtocolManager::T4_TIMEOUT_MS = 1050
staticconstexpr

The t4 timeout as defined by the standard.

Definition at line 168 of file can_transport_protocol.hpp.


The documentation for this class was generated from the following files: