1#ifndef IV_SRC_COMMS_CAN_LOMCOMMUNICATIONCONTROLLER_HPP_
2#define IV_SRC_COMMS_CAN_LOMCOMMUNICATIONCONTROLLER_HPP_
13class AbstractMessageProcessor;
16 public std::enable_shared_from_this<LomCommunicationController>
25 const std::shared_ptr<iv::model::comms::NetworkData> &networkData);
34 void addChannel(
const std::shared_ptr<iv::channels::AbstractChannel> &channel)
override;
36 bool sendMessage(
const std::shared_ptr<CMessageCan> &message)
const;
38 std::optional<uint32_t> msgId = std::nullopt);
47 bool frame()
override;
51 std::shared_ptr<iv::comms::can::ICanCommunicationProtocol>
m_canProtocol;
52 std::map<std::pair<iv::types::unitId, iv::types::indexChannel>, std::weak_ptr<iv::channels::AbstractChannel>>
55 std::unique_ptr<containers::CircularQueue<std::shared_ptr<CMessageCan>, 100>>
m_sendQueue;
57 std::unique_ptr<iv::containers::CircularQueue<std::shared_ptr<CMessageCan>, 500>>>
59 std::map<uint16_t, std::unique_ptr<iv::containers::CircularQueue<std::shared_ptr<CMessageCan>, 500>>>
63 std::shared_ptr<iv::comms::can::AbstractMessageProcessor>
m_processor;
Definition ICommunicationController.hpp:23
Definition LomCommunicationController.cpp:17
Definition LomCommunicationController.hpp:17
LomCommunicationController(const LomCommunicationController &&other)=delete
iv::types::timestamp lastTimestampSync
Definition LomCommunicationController.hpp:64
void emptySdoQueue(iv::types::unitId unitId) const
Definition LomCommunicationController.cpp:363
bool sendMessage(const std::shared_ptr< CMessageCan > &message) const
Definition LomCommunicationController.cpp:159
std::map< uint16_t, std::unique_ptr< iv::containers::CircularQueue< std::shared_ptr< CMessageCan >, 500 > > > m_receivedSDOMessages
Definition LomCommunicationController.hpp:60
std::map< std::pair< iv::types::unitId, iv::types::indexChannel >, std::weak_ptr< iv::channels::AbstractChannel > > m_lomChannels
Definition LomCommunicationController.hpp:53
std::unique_ptr< containers::CircularQueue< std::shared_ptr< CMessageCan >, 100 > > m_sendQueue
Definition LomCommunicationController.hpp:55
std::mutex m_processMutex
Definition LomCommunicationController.hpp:44
std::map< iv::comms::can::eMessageType, std::unique_ptr< iv::containers::CircularQueue< std::shared_ptr< CMessageCan >, 500 > > > m_receiveQueues
Definition LomCommunicationController.hpp:58
void addChannel(const std::shared_ptr< iv::channels::AbstractChannel > &channel) override
Definition LomCommunicationController.cpp:151
bool frame() override
Definition LomCommunicationController.cpp:213
bool sendFrame()
Definition LomCommunicationController.cpp:256
LomCommunicationController & operator=(LomCommunicationController &&other)=delete
std::mutex m_receiveSdoMessagesMutex
Definition LomCommunicationController.hpp:61
LomCommunicationController(const LomCommunicationController &other)=delete
iv::types::timestamp lastTimestampReceived
Definition LomCommunicationController.hpp:65
std::optional< std::shared_ptr< CMessageCan > > receiveMessage(iv::comms::can::eMessageType type, std::optional< uint32_t > msgId=std::nullopt)
Definition LomCommunicationController.cpp:174
iv::comms::eLomLine m_line
Definition LomCommunicationController.hpp:67
std::mutex m_sendMutex
Definition LomCommunicationController.hpp:42
void initialize() override
Definition LomCommunicationController.cpp:115
LomCommunicationController()=delete
std::shared_ptr< iv::comms::can::ICanCommunicationProtocol > m_canProtocol
Definition LomCommunicationController.hpp:51
std::shared_ptr< iv::comms::can::AbstractMessageProcessor > m_processor
Definition LomCommunicationController.hpp:63
~LomCommunicationController() override
bool receiveFrame()
Definition LomCommunicationController.cpp:299
std::mutex m_receiveMutex
Definition LomCommunicationController.hpp:43
LomCommunicationController & operator=(const LomCommunicationController &other)=delete
Definition LomMessageProcessor.hpp:16
Definition AbstractMessageProcessor.hpp:12
eMessageType
Definition enums.hpp:8
eLomLine
Definition enums.hpp:231
uint64_t timestamp
Definition types.hpp:21
uint16_t unitId
Definition types.hpp:77