X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=low-can-binding%2Futils%2Fsocketcan-bcm.hpp;h=478a52927bfb561cf965e49c64929845cabdd66a;hb=ea35eabeadce57e4f5015797fea530c5bb219fff;hp=22927cb61325ef8ce1ccbd8c73e6a7996e23bcc9;hpb=b049485873e1692cc9e7857e91e017f86dd91218;p=apps%2Fagl-service-can-low-level.git 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& obj); + socketcan_bcm_t& operator<<(socketcan_bcm_t& s, const struct bcm_msg& obj); }