diff options
Diffstat (limited to 'low-can-binding/can')
-rw-r--r-- | low-can-binding/can/message-definition.cpp | 5 | ||||
-rw-r--r-- | low-can-binding/can/message-definition.hpp | 1 | ||||
-rw-r--r-- | low-can-binding/can/message/can-message.cpp | 5 | ||||
-rw-r--r-- | low-can-binding/can/message/can-message.hpp | 11 | ||||
-rw-r--r-- | low-can-binding/can/message/j1939-message.cpp | 6 | ||||
-rw-r--r-- | low-can-binding/can/message/j1939-message.hpp | 1 | ||||
-rw-r--r-- | low-can-binding/can/message/message.cpp | 13 | ||||
-rw-r--r-- | low-can-binding/can/message/message.hpp | 10 |
8 files changed, 45 insertions, 7 deletions
diff --git a/low-can-binding/can/message-definition.cpp b/low-can-binding/can/message-definition.cpp index 407ad750..a875dafa 100644 --- a/low-can-binding/can/message-definition.cpp +++ b/low-can-binding/can/message-definition.cpp @@ -77,6 +77,11 @@ bool message_definition_t::is_j1939() const return (flags_&J1939_PROTOCOL); } +bool message_definition_t::is_isotp() const +{ + return (flags_&ISOTP_PROTOCOL); +} + std::vector<std::shared_ptr<signal_t>>& message_definition_t::get_signals() { return signals_; diff --git a/low-can-binding/can/message-definition.hpp b/low-can-binding/can/message-definition.hpp index 13ae2289..f46d3adb 100644 --- a/low-can-binding/can/message-definition.hpp +++ b/low-can-binding/can/message-definition.hpp @@ -82,6 +82,7 @@ public: uint32_t get_id() const; bool is_fd() const; bool is_j1939() const; + bool is_isotp() const; std::vector<std::shared_ptr<signal_t>>& get_signals(); uint32_t get_length() const; uint32_t get_flags() const; diff --git a/low-can-binding/can/message/can-message.cpp b/low-can-binding/can/message/can-message.cpp index 0ef693c7..b274206b 100644 --- a/low-can-binding/can/message/can-message.cpp +++ b/low-can-binding/can/message/can-message.cpp @@ -55,6 +55,11 @@ uint32_t can_message_t::get_id() const } +void can_message_t::set_id(const canid_t id) +{ + id_ = id; +} + /// @brief Control whether the object is correctly initialized /// to be sent over the CAN bus /// diff --git a/low-can-binding/can/message/can-message.hpp b/low-can-binding/can/message/can-message.hpp index 769899ea..acc3bfc1 100644 --- a/low-can-binding/can/message/can-message.hpp +++ b/low-can-binding/can/message/can-message.hpp @@ -39,8 +39,16 @@ class can_message_t : public message_t { public: can_message_t(); - can_message_t(uint32_t maxdlen, uint32_t id, uint32_t length, bool rtr_flag_, uint32_t flags, std::vector<uint8_t>& data, uint64_t timestamp); + can_message_t( uint32_t maxdlen, + uint32_t id, + uint32_t length, + bool rtr_flag_, + uint32_t flags, + std::vector<uint8_t>& data, + uint64_t timestamp); + uint32_t get_id() const; + void set_id(const canid_t id); static std::shared_ptr<can_message_t> convert_from_frame(const canfd_frame& frame, size_t nbytes, uint64_t timestamp); struct canfd_frame convert_to_canfd_frame(); @@ -53,5 +61,4 @@ class can_message_t : public message_t { void set_bcm_msg(struct bcm_msg bcm_msg); std::string get_debug_message(); - }; diff --git a/low-can-binding/can/message/j1939-message.cpp b/low-can-binding/can/message/j1939-message.cpp index ec65cba4..8e056c17 100644 --- a/low-can-binding/can/message/j1939-message.cpp +++ b/low-can-binding/can/message/j1939-message.cpp @@ -159,6 +159,12 @@ uint32_t j1939_message_t::get_id() const return get_pgn(); } +void j1939_message_t::set_id(const canid_t id) +{ + pgn_ = id; +} + + /** * @brief Return the sockname of the message * diff --git a/low-can-binding/can/message/j1939-message.hpp b/low-can-binding/can/message/j1939-message.hpp index 9e9cea4a..a513e94e 100644 --- a/low-can-binding/can/message/j1939-message.hpp +++ b/low-can-binding/can/message/j1939-message.hpp @@ -75,6 +75,7 @@ class j1939_message_t : public message_t bool is_set(); std::string get_debug_message(); uint32_t get_id() const; + void set_id(const canid_t id); struct sockaddr_can get_sockname(); void set_sockname(struct sockaddr_can sockname); void set_sockname(pgn_t pgn, name_t name, uint8_t addr); diff --git a/low-can-binding/can/message/message.cpp b/low-can-binding/can/message/message.cpp index aaab99f5..2496b672 100644 --- a/low-can-binding/can/message/message.cpp +++ b/low-can-binding/can/message/message.cpp @@ -135,7 +135,7 @@ uint32_t message_t::get_length() const * * @param data A vector of data */ -void message_t::set_data(std::vector<uint8_t> &data) +void message_t::set_data(std::vector<uint8_t> data) { data_ = data; } @@ -170,13 +170,22 @@ void message_t::set_flags(uint32_t flags) flags_ = flags_ | flags; } +void message_t::erase_flags() +{ + flags_ = 0; +} + uint32_t message_t::get_maxdlen() { return maxdlen_; } - void message_t::set_maxdlen(uint32_t maxdlen) { maxdlen_ = maxdlen; +} + +void message_t::set_length(uint32_t length) +{ + length_ = length; }
\ No newline at end of file diff --git a/low-can-binding/can/message/message.hpp b/low-can-binding/can/message/message.hpp index 6cef0185..db06eb38 100644 --- a/low-can-binding/can/message/message.hpp +++ b/low-can-binding/can/message/message.hpp @@ -29,6 +29,7 @@ #define CAN_MESSAGE_SIZE 8 #define MAX_BCM_CAN_FRAMES 257 +#define MAX_ISOTP_FRAMES 4096 /** @@ -42,6 +43,8 @@ #define J1939_PROTOCOL 0x0010 #define J1939_ADDR_CLAIM_PROTOCOL 0x0020 #define ISOTP_PROTOCOL 0x0040 +#define ISOTP_SEND 0x0080 +#define ISOTP_RECEIVE 0x0100 #define FD_FRAME 0x0800 /// @class message_t @@ -69,16 +72,17 @@ public: uint32_t get_length() const; uint64_t get_timestamp() const; - void set_data(std::vector<uint8_t> &data); + void set_data(std::vector<uint8_t> data); void set_sub_id(int sub_id); void set_timestamp(uint64_t timestamp); virtual bool is_set() = 0; virtual std::string get_debug_message() = 0; virtual uint32_t get_id() const = 0; + virtual void set_id(canid_t id) = 0; uint32_t get_flags(); void set_flags(uint32_t flags); + void erase_flags(); uint32_t get_maxdlen(); void set_maxdlen(uint32_t maxdlen); - - + void set_length(uint32_t length); }; |