1#ifndef IV_SRC_COMMS_CAN_CANJ1939COMMUNICATIONCONTROLLER_HPP_
2#define IV_SRC_COMMS_CAN_CANJ1939COMMUNICATIONCONTROLLER_HPP_
19 const std::shared_ptr<iv::model::comms::NetworkData> &networkData);
28 bool frame()
override;
35 void addChannel(
const std::shared_ptr<iv::channels::AbstractChannel> &channel)
override;
38 void sendMessage(
const std::shared_ptr<CMessageCan> &message);
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);
51 const std::pair<
iv::types::comms::pgn, std::optional<iv::types::comms::j1939SourceAddress>> &pgnAndAddress,
52 const std::vector<std::byte> &data);
54 void handleDm1Packet(std::pair<iv::types::comms::pgn, iv::types::comms::j1939SourceAddress> pgnAndAddress,
55 const std::vector<std::byte> &data);
62 const std::shared_ptr<CMessageCan> &message,
63 const std::pair<iv::types::comms::pgn, iv::types::comms::j1939SourceAddress> &pgnAndAddress);
68 std::shared_ptr<iv::comms::can::ICanCommunicationProtocol>
m_canProtocol;
70 std::map<std::pair<iv::types::comms::pgn, std::optional<iv::types::comms::j1939SourceAddress>>,
71 std::vector<iv::comms::canJ1939::CanJ1939ChannelBinding>>
74 std::map<std::pair<iv::types::comms::spn, std::optional<iv::types::comms::j1939SourceAddress>>,
78 std::map<iv::types::comms::j1939SourceAddress, onGoingCanJ1939MultiPacketCommunication>
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
CanJ1939CommunicationController()=delete
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
~CanJ1939CommunicationController() override=default
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
Definition structs.hpp:71
Definition structs.hpp:77