Nix (Dev) 3.5.10
dev - 3.5.10 - 1af9301
Loading...
Searching...
No Matches
Nmea2kCommunicationController.hpp
Go to the documentation of this file.
1#ifndef IV_SRC_COMMS_NMEA2K_NMEA2KCOMMUNICATIONCONTROLLER_HPP_
2#define IV_SRC_COMMS_NMEA2K_NMEA2KCOMMUNICATIONCONTROLLER_HPP_
3
5#include "can/CMessageCan.hpp"
10
11namespace iv::comms::nmea2k
12{
13
15{
17
18public:
20 explicit Nmea2kCommunicationController(const std::shared_ptr<ICommunicationDriver> &driver,
21 const std::shared_ptr<iv::model::comms::NetworkData> &networkData);
24 ~Nmea2kCommunicationController() override = default;
25
28
29private:
30 bool frame() override;
31
32 bool sendFrame();
33
34 void receiveFrame();
35
37
38 void addChannel(const std::shared_ptr<iv::channels::AbstractChannel> &channel) override;
39 void initialize() override;
40
41 void sendMessage(const std::shared_ptr<CMessageCan> &message);
42
43 void
44 handleSinglePacketMessage(const std::vector<std::byte> &data,
45 std::pair<iv::types::comms::pgn, iv::types::comms::j1939SourceAddress> pgnAndAddress);
46
47 void
48 handleDataTransferMessage(const std::shared_ptr<CMessageCan> &message,
49 std::pair<iv::types::comms::pgn, iv::types::comms::j1939SourceAddress> pgnAndAddress);
50
52 const std::shared_ptr<CMessageCan> &message,
53 std::pair<iv::types::comms::pgn, iv::types::comms::j1939SourceAddress> pgnAndAddress);
54
56 const std::shared_ptr<CMessageCan> &message,
57 std::pair<iv::types::comms::pgn, iv::types::comms::j1939SourceAddress> pgnAndAddress);
58
59 void handleBamProtocolDataTransferMessage(const std::shared_ptr<CMessageCan> &message,
61 void bindToChannel(
62 const std::pair<iv::types::comms::pgn, std::optional<iv::types::comms::j1939SourceAddress>> pgnAndAddress,
63 const std::vector<std::byte> &data);
64 std::shared_ptr<iv::comms::can::ICanCommunicationProtocol> m_canProtocol;
67
69 std::map<std::pair<iv::types::comms::pgn, std::optional<iv::types::comms::j1939SourceAddress>>,
70 std::vector<iv::comms::nmea2k::Nmea2kChannelBinding>>
72
73 std::map<iv::types::comms::j1939SourceAddress, iv::comms::canJ1939::onGoingCanJ1939MultiPacketCommunication>
75
77};
78
79}// namespace iv::comms::nmea2k
80#endif//IV_SRC_COMMS_NMEA2K_NMEA2KCOMMUNICATIONCONTROLLER_HPP_
Definition ICommunicationController.hpp:23
Definition Nmea2kCommunicationController.cpp:18
Definition Nmea2kCommunicationController.hpp:15
void initialize() override
Definition Nmea2kCommunicationController.cpp:103
void bindToChannel(const std::pair< iv::types::comms::pgn, std::optional< iv::types::comms::j1939SourceAddress > > pgnAndAddress, const std::vector< std::byte > &data)
Definition Nmea2kCommunicationController.cpp:253
Nmea2kCommunicationController & operator=(Nmea2kCommunicationController &&other)=delete
Nmea2kCommunicationController(const Nmea2kCommunicationController &other)=delete
void handleSinglePacketMessage(const std::vector< std::byte > &data, std::pair< iv::types::comms::pgn, iv::types::comms::j1939SourceAddress > pgnAndAddress)
Definition Nmea2kCommunicationController.cpp:238
iv::containers::CircularQueue< std::shared_ptr< CMessageCan >, 1000 > m_sendQueue
Definition Nmea2kCommunicationController.hpp:68
Nmea2kCommunicationController & operator=(const Nmea2kCommunicationController &other)=delete
std::map< iv::types::comms::j1939SourceAddress, iv::comms::canJ1939::onGoingCanJ1939MultiPacketCommunication > m_onGoingMultiPacketCommunications
Definition Nmea2kCommunicationController.hpp:74
void addChannel(const std::shared_ptr< iv::channels::AbstractChannel > &channel) override
Definition Nmea2kCommunicationController.cpp:194
Nmea2kCommunicationController(Nmea2kCommunicationController &&other)=delete
std::mutex m_eraseCommsMutex
Definition Nmea2kCommunicationController.hpp:76
void trimOnGoingCommunications()
Definition Nmea2kCommunicationController.cpp:218
iv::types::timestamp m_lastHeartbeatTime
Definition Nmea2kCommunicationController.hpp:65
void handleDataTransferMessage(const std::shared_ptr< CMessageCan > &message, std::pair< iv::types::comms::pgn, iv::types::comms::j1939SourceAddress > pgnAndAddress)
Definition Nmea2kCommunicationController.cpp:400
bool sendFrame()
Definition Nmea2kCommunicationController.cpp:117
std::shared_ptr< iv::comms::can::ICanCommunicationProtocol > m_canProtocol
Definition Nmea2kCommunicationController.hpp:64
void handleConnectionManagementMessage(const std::shared_ptr< CMessageCan > &message, std::pair< iv::types::comms::pgn, iv::types::comms::j1939SourceAddress > pgnAndAddress)
Definition Nmea2kCommunicationController.cpp:345
void sendMessage(const std::shared_ptr< CMessageCan > &message)
Definition Nmea2kCommunicationController.cpp:129
void handleBamProtocolConnectionMessage(const std::shared_ptr< CMessageCan > &message, std::pair< iv::types::comms::pgn, iv::types::comms::j1939SourceAddress > pgnAndAddress)
Definition Nmea2kCommunicationController.cpp:358
void receiveFrame()
Definition Nmea2kCommunicationController.cpp:133
bool frame() override
Definition Nmea2kCommunicationController.cpp:68
iv::types::timestamp m_lastTimestampReceived
Definition Nmea2kCommunicationController.hpp:66
std::map< std::pair< iv::types::comms::pgn, std::optional< iv::types::comms::j1939SourceAddress > >, std::vector< iv::comms::nmea2k::Nmea2kChannelBinding > > m_channelsOrderedByPgnAndAddress
Definition Nmea2kCommunicationController.hpp:71
void handleBamProtocolDataTransferMessage(const std::shared_ptr< CMessageCan > &message, iv::comms::canJ1939::onGoingCanJ1939MultiPacketCommunication &comm)
Definition Nmea2kCommunicationController.cpp:427
Definition CircularQueue.hpp:15
Definition enums.hpp:7
uint32_t pgn
Definition defines.hpp:25
uint64_t timestamp
Definition types.hpp:21