Nix (Dev) 3.5.10
dev - 3.5.10 - 1af9301
Loading...
Searching...
No Matches
LomCommunicationController.hpp
Go to the documentation of this file.
1#ifndef IV_SRC_COMMS_CAN_LOMCOMMUNICATIONCONTROLLER_HPP_
2#define IV_SRC_COMMS_CAN_LOMCOMMUNICATIONCONTROLLER_HPP_
3
9
10namespace iv::comms::can
11{
12
13class AbstractMessageProcessor;
14
16 public std::enable_shared_from_this<LomCommunicationController>
17{
19 friend class LomMessageProcessor;
20
21public:
23
24 LomCommunicationController(const std::shared_ptr<ICommunicationDriver> &driver,
25 const std::shared_ptr<iv::model::comms::NetworkData> &networkData);
29
32
33 void initialize() override;
34 void addChannel(const std::shared_ptr<iv::channels::AbstractChannel> &channel) override;
35
36 bool sendMessage(const std::shared_ptr<CMessageCan> &message) const;
37 std::optional<std::shared_ptr<CMessageCan>> receiveMessage(iv::comms::can::eMessageType type,
38 std::optional<uint32_t> msgId = std::nullopt);
39
40 void emptySdoQueue(iv::types::unitId unitId) const;
41
42 std::mutex m_sendMutex;
43 std::mutex m_receiveMutex;
44 std::mutex m_processMutex;
45
46private:
47 bool frame() override;
48 bool sendFrame();
49 bool receiveFrame();
50
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>>
54
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>>>
62
63 std::shared_ptr<iv::comms::can::AbstractMessageProcessor> m_processor;
66
68};
69
70}// namespace iv::comms::can
71
72#endif//IV_SRC_COMMS_CAN_LOMCOMMUNICATIONCONTROLLER_HPP_
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
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
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