Nix (Dev) 3.5.10
dev - 3.5.10 - 1af9301
Loading...
Searching...
No Matches
CanJ1939CommunicationController.hpp
Go to the documentation of this file.
1#ifndef IV_SRC_COMMS_CAN_CANJ1939COMMUNICATIONCONTROLLER_HPP_
2#define IV_SRC_COMMS_CAN_CANJ1939COMMUNICATIONCONTROLLER_HPP_
3
7#include "core/defines.hpp"
8#include "structs.hpp"
9
10namespace iv::comms::canJ1939
11{
13{
15
16public:
18 explicit CanJ1939CommunicationController(const std::shared_ptr<ICommunicationDriver> &driver,
19 const std::shared_ptr<iv::model::comms::NetworkData> &networkData);
23
26
27private:
28 bool frame() override;
29
30 bool sendFrame();
31 void receiveFrame();
32
34
35 void addChannel(const std::shared_ptr<iv::channels::AbstractChannel> &channel) override;
36 void initialize() override;
37
38 void sendMessage(const std::shared_ptr<CMessageCan> &message);
39
41 const std::vector<std::byte> &data,
42 const std::pair<iv::types::comms::pgn, iv::types::comms::j1939SourceAddress> &pgnAndAddress);
44 const std::shared_ptr<CMessageCan> &message,
45 const std::pair<iv::types::comms::pgn, iv::types::comms::j1939SourceAddress> &pgnAndAddress);
47 const std::shared_ptr<CMessageCan> &message,
48 const std::pair<iv::types::comms::pgn, iv::types::comms::j1939SourceAddress> &pgnAndAddress);
49
50 void bindToChannel(
51 const std::pair<iv::types::comms::pgn, std::optional<iv::types::comms::j1939SourceAddress>> &pgnAndAddress,
52 const std::vector<std::byte> &data);
53
54 void handleDm1Packet(std::pair<iv::types::comms::pgn, iv::types::comms::j1939SourceAddress> pgnAndAddress,
55 const std::vector<std::byte> &data);
56
58
59 void bindDTC(std::optional<iv::types::comms::j1939SourceAddress> address, iv::types::comms::dtc data);
60
62 const std::shared_ptr<CMessageCan> &message,
63 const std::pair<iv::types::comms::pgn, iv::types::comms::j1939SourceAddress> &pgnAndAddress);
64
65 void handleBamProtocolDataTransferMessage(const std::shared_ptr<CMessageCan> &message,
67
68 std::shared_ptr<iv::comms::can::ICanCommunicationProtocol> m_canProtocol;
69
70 std::map<std::pair<iv::types::comms::pgn, std::optional<iv::types::comms::j1939SourceAddress>>,
71 std::vector<iv::comms::canJ1939::CanJ1939ChannelBinding>>
73
74 std::map<std::pair<iv::types::comms::spn, std::optional<iv::types::comms::j1939SourceAddress>>,
77
78 std::map<iv::types::comms::j1939SourceAddress, onGoingCanJ1939MultiPacketCommunication>
81
85};
86}// namespace iv::comms::canJ1939
87
88#endif//IV_SRC_COMMS_CAN_CANJ1939COMMUNICATIONCONTROLLER_HPP_
Definition ICommunicationController.hpp:23
Definition CanJ1939CommunicationController.cpp:17
Definition CanJ1939CommunicationController.hpp:13
std::map< std::pair< iv::types::comms::pgn, std::optional< iv::types::comms::j1939SourceAddress > >, std::vector< iv::comms::canJ1939::CanJ1939ChannelBinding > > m_channelsOrderedByPgnAndAddress
Definition CanJ1939CommunicationController.hpp:72
void handleConnectionManagementMessage(const std::shared_ptr< CMessageCan > &message, const std::pair< iv::types::comms::pgn, iv::types::comms::j1939SourceAddress > &pgnAndAddress)
Definition CanJ1939CommunicationController.cpp:418
void bindDTC(std::optional< iv::types::comms::j1939SourceAddress > address, iv::types::comms::dtc data)
Definition CanJ1939CommunicationController.cpp:568
std::mutex m_eraseCommsMutex
Definition CanJ1939CommunicationController.hpp:84
void handleDataTransferMessage(const std::shared_ptr< CMessageCan > &message, const std::pair< iv::types::comms::pgn, iv::types::comms::j1939SourceAddress > &pgnAndAddress)
Definition CanJ1939CommunicationController.cpp:431
bool frame() override
Definition CanJ1939CommunicationController.cpp:67
void handleDm1Packet(std::pair< iv::types::comms::pgn, iv::types::comms::j1939SourceAddress > pgnAndAddress, const std::vector< std::byte > &data)
Definition CanJ1939CommunicationController.cpp:554
CanJ1939CommunicationController & operator=(const CanJ1939CommunicationController &other)=delete
std::map< std::pair< iv::types::comms::spn, std::optional< iv::types::comms::j1939SourceAddress > >, iv::comms::canJ1939::CanJ1939Dm1ChannelBinding > m_dm1ChannelsOrderedBySpnAndAddress
Definition CanJ1939CommunicationController.hpp:76
CanJ1939CommunicationController & operator=(CanJ1939CommunicationController &&other)=delete
void addChannel(const std::shared_ptr< iv::channels::AbstractChannel > &channel) override
Definition CanJ1939CommunicationController.cpp:120
iv::containers::CircularQueue< std::shared_ptr< CMessageCan >, 1000 > m_sendQueue
Definition CanJ1939CommunicationController.hpp:80
void bindToChannel(const std::pair< iv::types::comms::pgn, std::optional< iv::types::comms::j1939SourceAddress > > &pgnAndAddress, const std::vector< std::byte > &data)
Definition CanJ1939CommunicationController.cpp:327
void handleBamProtocolDataTransferMessage(const std::shared_ptr< CMessageCan > &message, onGoingCanJ1939MultiPacketCommunication &comm)
Definition CanJ1939CommunicationController.cpp:498
void trimOnGoingCommunications()
discard communications that have been inactive for too long
Definition CanJ1939CommunicationController.cpp:533
iv::types::timestamp m_lastHeartbeatTime
Definition CanJ1939CommunicationController.hpp:82
void handleDefaultStateDM1Channels()
Definition CanJ1939CommunicationController.cpp:588
void sendMessage(const std::shared_ptr< CMessageCan > &message)
Definition CanJ1939CommunicationController.cpp:243
iv::types::timestamp m_lastTimestampReceived
Definition CanJ1939CommunicationController.hpp:83
void handleBamProtocolConnectionMessage(const std::shared_ptr< CMessageCan > &message, const std::pair< iv::types::comms::pgn, iv::types::comms::j1939SourceAddress > &pgnAndAddress)
Definition CanJ1939CommunicationController.cpp:458
std::shared_ptr< iv::comms::can::ICanCommunicationProtocol > m_canProtocol
Definition CanJ1939CommunicationController.hpp:68
void handleSinglePacketMessage(const std::vector< std::byte > &data, const std::pair< iv::types::comms::pgn, iv::types::comms::j1939SourceAddress > &pgnAndAddress)
Definition CanJ1939CommunicationController.cpp:247
bool sendFrame()
Definition CanJ1939CommunicationController.cpp:168
std::map< iv::types::comms::j1939SourceAddress, onGoingCanJ1939MultiPacketCommunication > m_onGoingMultiPacketCommunications
Definition CanJ1939CommunicationController.hpp:79
CanJ1939CommunicationController(CanJ1939CommunicationController &&other)=delete
void initialize() override
Definition CanJ1939CommunicationController.cpp:154
CanJ1939CommunicationController(const CanJ1939CommunicationController &other)=delete
void receiveFrame()
Definition CanJ1939CommunicationController.cpp:180
Definition CircularQueue.hpp:15
Definition CanJ1939CommunicationController.cpp:13
uint32_t pgn
Definition defines.hpp:25
uint32_t dtc
Definition defines.hpp:27
uint64_t timestamp
Definition types.hpp:21