Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 16 additions & 3 deletions isobus/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ set(ISOBUS_SRC
"isobus_guidance_interface.cpp"
"isobus_speed_distance_messages.cpp"
"isobus_maintain_power_interface.cpp"
"isobus_virtual_terminal_objects.cpp"
"isobus_virtual_terminal_client_state_tracker.cpp"
"isobus_virtual_terminal_client_update_helper.cpp"
"isobus_heartbeat.cpp"
Expand All @@ -48,10 +47,17 @@ set(ISOBUS_SRC
"nmea2000_message_definitions.cpp"
"nmea2000_message_interface.cpp"
"isobus_device_descriptor_object_pool_helpers.cpp"
"can_message_data.cpp"
"can_message_data.cpp")

if(NOT CAN_STACK_DISABLE_THREADS)
list(
APPEND
ISOBUS_SRC
"isobus_virtual_terminal_objects.cpp"
"isobus_virtual_terminal_server.cpp"
"isobus_virtual_terminal_working_set_base.cpp"
"isobus_virtual_terminal_server_managed_working_set.cpp")
Comment thread
VzdornovNA88 marked this conversation as resolved.
endif()

# Prepend the source directory path to all the source files
prepend(ISOBUS_SRC ${ISOBUS_SRC_DIR} ${ISOBUS_SRC})
Expand Down Expand Up @@ -101,11 +107,18 @@ set(ISOBUS_INCLUDE
"nmea2000_message_interface.hpp"
"isobus_preferred_addresses.hpp"
"isobus_device_descriptor_object_pool_helpers.hpp"
"can_message_data.hpp"
"can_message_data.hpp")

# Conditionally add Virtual Terminal components
if(NOT CAN_STACK_DISABLE_THREADS)
list(
APPEND
ISOBUS_INCLUDE
"isobus_virtual_terminal_base.hpp"
"isobus_virtual_terminal_server.hpp"
"isobus_virtual_terminal_working_set_base.hpp"
"isobus_virtual_terminal_server_managed_working_set.hpp")
endif()

# Prepend the include directory path to all the include files
prepend(ISOBUS_INCLUDE ${ISOBUS_INCLUDE_DIR} ${ISOBUS_INCLUDE})
Expand Down
2 changes: 1 addition & 1 deletion isobus/include/isobus/isobus/can_transport_protocol.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -321,7 +321,7 @@ namespace isobus
/// @param[in] session The session to update
void update_state_machine(std::shared_ptr<TransportProtocolSession> &session);

mutable std::mutex activeSessionsMutex; ///< Synchronizes access to @ref activeSessions
mutable Mutex activeSessionsMutex; ///< Synchronizes access to @ref activeSessions
std::list<std::shared_ptr<TransportProtocolSession>> activeSessions; ///< A list of all active TP sessions

const CANMessageFrameCallback sendCANFrameCallback; ///< A callback for sending a CAN frame
Expand Down
16 changes: 8 additions & 8 deletions isobus/src/can_transport_protocol.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ namespace isobus
newSession->set_state(StateMachineState::WaitForDataTransferPacket);

{
std::lock_guard<std::mutex> lock(activeSessionsMutex);
LOCK_GUARD(Mutex, activeSessionsMutex);
activeSessions.push_back(newSession);
}

Expand Down Expand Up @@ -250,7 +250,7 @@ namespace isobus
newSession->set_state(StateMachineState::SendClearToSend);

{
std::lock_guard<std::mutex> lock(activeSessionsMutex);
LOCK_GUARD(Mutex, activeSessionsMutex);
activeSessions.push_back(newSession);
}

Expand Down Expand Up @@ -641,7 +641,7 @@ namespace isobus
}

{
std::lock_guard<std::mutex> lock(activeSessionsMutex);
LOCK_GUARD(Mutex, activeSessionsMutex);
activeSessions.push_back(session);
}

Expand Down Expand Up @@ -895,7 +895,7 @@ namespace isobus
{
session->complete(successful);

std::lock_guard<std::mutex> lock(activeSessionsMutex);
LOCK_GUARD(Mutex, activeSessionsMutex);
auto sessionLocation = std::find(activeSessions.begin(), activeSessions.end(), session);
if (activeSessions.end() != sessionLocation)
{
Expand Down Expand Up @@ -1006,7 +1006,7 @@ namespace isobus

bool TransportProtocolManager::has_session(std::shared_ptr<ControlFunction> source, std::shared_ptr<ControlFunction> destination)
{
std::lock_guard<std::mutex> lock(activeSessionsMutex);
LOCK_GUARD(Mutex, activeSessionsMutex);
return std::any_of(activeSessions.begin(), activeSessions.end(), [&](const std::shared_ptr<TransportProtocolManager::TransportProtocolSession> &session) {
return session->matches(source, destination);
});
Expand All @@ -1015,7 +1015,7 @@ namespace isobus
std::shared_ptr<TransportProtocolManager::TransportProtocolSession> TransportProtocolManager::get_session(std::shared_ptr<ControlFunction> source,
std::shared_ptr<ControlFunction> destination)
{
std::lock_guard<std::mutex> lock(activeSessionsMutex);
LOCK_GUARD(Mutex, activeSessionsMutex);
auto result = std::find_if(activeSessions.begin(), activeSessions.end(), [&](const std::shared_ptr<TransportProtocolManager::TransportProtocolSession> &session) {
return session->matches(source, destination);
});
Expand All @@ -1024,13 +1024,13 @@ namespace isobus

std::size_t TransportProtocolManager::get_sessions_count() const
{
std::lock_guard<std::mutex> lock(activeSessionsMutex);
LOCK_GUARD(Mutex, activeSessionsMutex);
return activeSessions.size();
}

std::list<std::shared_ptr<TransportProtocolManager::TransportProtocolSession>> TransportProtocolManager::get_sessions() const
{
std::lock_guard<std::mutex> lock(activeSessionsMutex);
LOCK_GUARD(Mutex, activeSessionsMutex);
return activeSessions;
}
}
Loading