diff options
Diffstat (limited to 'low-can-binding/utils/socketcan-bcm.hpp')
-rw-r--r-- | low-can-binding/utils/socketcan-bcm.hpp | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/low-can-binding/utils/socketcan-bcm.hpp b/low-can-binding/utils/socketcan-bcm.hpp index 22927cb6..478a5292 100644 --- a/low-can-binding/utils/socketcan-bcm.hpp +++ b/low-can-binding/utils/socketcan-bcm.hpp @@ -20,24 +20,20 @@ #include "socketcan.hpp" #include "../can/can-message.hpp" +#define MAX_BCM_CAN_FRAMES 257 + namespace utils { - struct simple_bcm_msg - { - struct bcm_msg_head msg_head; - struct can_frame frames; - }; - -#ifdef KERNEL_MINIMAL_VERSION_OK - struct canfd_bcm_msg + struct bcm_msg { struct bcm_msg_head msg_head; - struct canfd_frame frames; - canfd_bcm_msg() { msg_head.flags |= CAN_FD_FRAME; } + union { + struct canfd_frame fd_frames[MAX_BCM_CAN_FRAMES]; + struct can_frame frames[MAX_BCM_CAN_FRAMES]; + }; }; -#endif - /// @brief derivated socketcan class specialized for BCM CAN socket. + /// @brief derivated socketcan class specialized for BCM CAN socket.make_bcm_head class socketcan_bcm_t : public socketcan_t { public: @@ -50,6 +46,7 @@ namespace utils }; socketcan_bcm_t& operator>>(socketcan_bcm_t& s, can_message_t& cm); -// socketcan_bcm_t& operator<<(socketcan_bcm_t& s, const struct simple_bcm_msg& obj); -// socketcan_bcm_t& operator<<(socketcan_bcm_t& s, const struct canfd_bcm_msg& obj); + + socketcan_bcm_t& operator<<(socketcan_bcm_t& s, const std::vector<struct bcm_msg>& obj); + socketcan_bcm_t& operator<<(socketcan_bcm_t& s, const struct bcm_msg& obj); } |