Nix (Dev) 3.5.10
dev - 3.5.10 - 1af9301
Loading...
Searching...
No Matches
CMessageCan.hpp
Go to the documentation of this file.
1#ifndef LIBS_CAN_CMESSAGECAN_HPP_
2#define LIBS_CAN_CMESSAGECAN_HPP_
3
5#include "comms/can/enums.hpp"
9#include "structs.hpp"
10#include <linux/can.h>
11
13{
14public:
15 void getValuesDataMessageAlarm(iv::types::indexChannel *indexChannelOpt, uint8_t *idGroupForLomsOpt,
16 uint8_t *typeAlarmOpt, float *valueAlarmOpt) const;
17 void getValuesDataMessageAlarmTimestamp(iv::types::indexChannel *indexChannelOpt, uint16_t *numDaysSince1984Opt,
18 uint32_t *millisecondsOpt) const;
19 void getValuesDataMessageTimestamp(uint16_t *numDaysSince1984Opt, uint32_t *numMilliseconds1984Opt) const;
21 uint8_t *typeDataOpt, uint32_t *valueOpt) const;
23 std::string *valueStringOpt, uint8_t *segmentPositionOpt, bool *isFirstSegmentOpt,
24 bool *isLastSegmentOpt) const;
25 void getValuesDataMessageCommand(iv::types::unitId *idUnitLocalDestOpt, iv::types::indexChannel *indexChannelOpt,
26 uint8_t *commandOpt, uint32_t *valueOpt) const;
28 iv::types::indexChannel *indexChannelOpt, uint8_t *commandOpt,
29 bool *valueOpt) const;
31 iv::types::indexChannel *indexChannelOpt, uint8_t *commandOpt,
32 uint8_t *valueOpt) const;
33 void getValuesDataMessageGmtSync(iv::types::unitId *idUnitStationOpt, int8_t *offsetGMTOpt,
34 uint32_t *timeUTCOpt) const;
35 void getValuesDataMessageHeartbeat(iv::comms::eHeartbeatState *heartbeatStateOpt, uint8_t *heartbeatTypeOpt) const;
36 void getValuesDataMessageHistorySync(uint32_t *idStationOpt, iv::types::indexChannel *indexChannelOpt,
37 uint8_t *typeAlarmAndStatusOpt, iv::types::timestamp *timeOpt) const;
38
40
41 CMessageCan() = default;
42 CMessageCan(std::string_view source, uint32_t msgId, const uint8_t bytes_[8], uint32_t timeStamp,
43 uint32_t lengthData, bool isRTR, iv::types::subnetwork idSubnetwork, uint32_t lengthDataExtra,
44 uint8_t **bytesDataExtra, bool isExtended);
45 CMessageCan(const CMessageCan &other) = default;
46 CMessageCan(CMessageCan &&other) = default;
47 ~CMessageCan() override;
48
49 CMessageCan &operator=(const CMessageCan &other) = delete;
50 CMessageCan &operator=(CMessageCan &&other) = delete;
51
52 [[nodiscard]] uint64_t lengthMessage() const;
53 [[nodiscard]] iv::comms::IMessageComm *clone() const;
54
55 [[nodiscard]] const std::string &getMessageSource() const;
56 [[nodiscard]] iv::comms::can::eMessageType getMessageType() const;
57
58 void getData(uint8_t *bytes_, uint32_t *lengthData) const;
59 const uint8_t *getDataExtra(uint32_t *lengthDataExtra) const;
60 [[nodiscard]] uint32_t getId() const;
61 [[nodiscard]] uint32_t getIdUnit() const;
62 [[nodiscard]] uint16_t getIdUnitLocal() const;
63 [[nodiscard]] uint16_t getIdSubnetwork() const;
64 [[nodiscard]] std::shared_ptr<iv::streams::IInputStream> getInputData() const;
65 [[nodiscard]] std::shared_ptr<iv::streams::IInputStream> getInputStream() const;
66 [[nodiscard]] uint32_t getLengthData() const;
67 [[nodiscard]] bool getRtr() const;
68 [[nodiscard]] bool getIsExtended() const;
69 [[nodiscard]] uint32_t getTimeStamp() const;
70 bool getTextInfo(bool &isInit, bool &isFinish, uint8_t &position) const;
71
72 [[nodiscard]] bool isCan() const;
73 [[nodiscard]] bool isCommand() const;
74 [[nodiscard]] bool isCommandAck() const;
75 bool isEqual(const iv::comms::IMessageComm *message) const;
76 [[nodiscard]] bool isOkMessage() const;
77
78 [[nodiscard]] std::vector<std::byte> toPcanGatewayPacket() const;
79 bool deserialize(const std::vector<std::byte> &buffer) override;
80 [[nodiscard]] std::vector<std::byte> serialize() const override
81 {
82 return {};
83 };
84 bool fromCanFrame(can_frame canFrame);
85 [[nodiscard]] std::string toString() const;
86
87 void getDigitalInputs(std::vector<bool> &inputs, uint32_t numBytes = 8) const;
88
89 std::string m_sourceRef;
91};
92
93#endif /* LIBS_CAN_CMESSAGECAN_HPP_ */
Definition CMessageCan.hpp:13
uint32_t getId() const
Definition CMessageCan.cpp:418
uint16_t getIdUnitLocal() const
Definition CMessageCan.cpp:430
bool getIsExtended() const
Definition CMessageCan.cpp:466
bool isCommand() const
Definition CMessageCan.cpp:481
bool isCommandAck() const
Definition CMessageCan.cpp:487
bool isOkMessage() const
Definition CMessageCan.cpp:504
uint32_t getTimeStamp() const
Definition CMessageCan.cpp:471
uint64_t lengthMessage() const
Definition CMessageCan.cpp:356
void getValuesDataMessageText(iv::types::unitId *idUnitOpt, iv::types::indexChannel *indexChannelOpt, std::string *valueStringOpt, uint8_t *segmentPositionOpt, bool *isFirstSegmentOpt, bool *isLastSegmentOpt) const
Definition CMessageCan.cpp:128
uint16_t getIdSubnetwork() const
Definition CMessageCan.cpp:437
void getValuesDataMessageCommand(iv::types::unitId *idUnitLocalDestOpt, iv::types::indexChannel *indexChannelOpt, uint8_t *commandOpt, uint32_t *valueOpt) const
Definition CMessageCan.cpp:172
void getDigitalInputs(std::vector< bool > &inputs, uint32_t numBytes=8) const
Definition CMessageCan.cpp:388
std::vector< std::byte > serialize() const override
Definition CMessageCan.hpp:80
const std::string & getMessageSource() const
Definition CMessageCan.cpp:393
CMessageCan & operator=(const CMessageCan &other)=delete
bool isEqual(const iv::comms::IMessageComm *message) const
Definition CMessageCan.cpp:496
bool deserialize(const std::vector< std::byte > &buffer) override
Definition CMessageCan.cpp:623
const uint8_t * getDataExtra(uint32_t *lengthDataExtra) const
Definition CMessageCan.cpp:411
iv::comms::can::CanDataMessage * m_messageDataCan
Definition CMessageCan.hpp:90
void getValuesDataMessageCommandBool(iv::types::unitId *idUnitLocalDestOpt, iv::types::indexChannel *indexChannelOpt, uint8_t *commandOpt, bool *valueOpt) const
Definition CMessageCan.cpp:205
CMessageCan & operator=(CMessageCan &&other)=delete
void getValuesDataMessageAlarmTimestamp(iv::types::indexChannel *indexChannelOpt, uint16_t *numDaysSince1984Opt, uint32_t *millisecondsOpt) const
Definition CMessageCan.cpp:47
void getValuesDataMessageAnalogInput(iv::types::unitId *idUnitOpt, iv::types::indexChannel *indexChannelOpt, uint8_t *typeDataOpt, uint32_t *valueOpt) const
Definition CMessageCan.cpp:92
void getValuesDataMessageAlarm(iv::types::indexChannel *indexChannelOpt, uint8_t *idGroupForLomsOpt, uint8_t *typeAlarmOpt, float *valueAlarmOpt) const
Definition CMessageCan.cpp:15
~CMessageCan() override
Definition CMessageCan.cpp:350
iv::comms::can::eMessageType getMessageType() const
Definition CMessageCan.cpp:398
uint32_t getIdUnit() const
Definition CMessageCan.cpp:423
CMessageCan()=default
std::string toString() const
Definition CMessageCan.cpp:377
void getData(uint8_t *bytes_, uint32_t *lengthData) const
Definition CMessageCan.cpp:403
std::shared_ptr< iv::streams::IInputStream > getInputStream() const
Definition CMessageCan.cpp:448
void getValuesDataMessageHeartbeat(iv::comms::eHeartbeatState *heartbeatStateOpt, uint8_t *heartbeatTypeOpt) const
Definition CMessageCan.cpp:297
bool isCan() const
Definition CMessageCan.cpp:476
bool getTextInfo(bool &isInit, bool &isFinish, uint8_t &position) const
gets text segment msg info
Definition CMessageCan.cpp:585
void getValuesDataMessageTimestamp(uint16_t *numDaysSince1984Opt, uint32_t *numMilliseconds1984Opt) const
Definition CMessageCan.cpp:73
void getValuesDataMessageHistorySync(uint32_t *idStationOpt, iv::types::indexChannel *indexChannelOpt, uint8_t *typeAlarmAndStatusOpt, iv::types::timestamp *timeOpt) const
Definition CMessageCan.cpp:318
bool getRtr() const
Definition CMessageCan.cpp:461
CMessageCan(CMessageCan &&other)=default
std::shared_ptr< iv::streams::IInputStream > getInputData() const
Definition CMessageCan.cpp:442
iv::comms::IMessageComm * clone() const
Definition CMessageCan.cpp:361
bool fromCanFrame(can_frame canFrame)
Definition CMessageCan.cpp:676
void getValuesDataMessageGmtSync(iv::types::unitId *idUnitStationOpt, int8_t *offsetGMTOpt, uint32_t *timeUTCOpt) const
Definition CMessageCan.cpp:271
uint32_t getLengthData() const
Definition CMessageCan.cpp:456
void getValuesDataMessageCommandChar(iv::types::unitId *idUnitLocalDestOpt, iv::types::indexChannel *indexChannelOpt, uint8_t *commandOpt, uint8_t *valueOpt) const
Definition CMessageCan.cpp:238
CMessageCan(const CMessageCan &other)=default
std::vector< std::byte > toPcanGatewayPacket() const
Definition CMessageCan.cpp:638
std::string m_sourceRef
Definition CMessageCan.hpp:89
Definition IMessageComm.hpp:11
eMessageType
Definition enums.hpp:8
eHeartbeatState
Definition enums.hpp:297
uint64_t timestamp
Definition types.hpp:21
uint32_t indexChannel
Definition types.hpp:87
uint16_t subnetwork
Definition types.hpp:76
uint16_t unitId
Definition types.hpp:77
Definition structs.hpp:14