diff options
author | Romain Forlot <romain.forlot@iot.bzh> | 2017-05-03 17:52:34 +0200 |
---|---|---|
committer | Romain Forlot <romain.forlot@iot.bzh> | 2017-05-03 17:52:34 +0200 |
commit | 71798df5325efe6005fb87dad8a3489e656021f0 (patch) | |
tree | 58cbafa903642012e5d4376de606ca786c885f23 /CAN-binder/low-can-binding/utils/socketcan.hpp | |
parent | 82642e99f93cc62329f34a5f7b3656a5331f1c43 (diff) |
Derivate socketcan to multiple child depending upon socket CAN type.
Use to initialize raw, bcm and later isotp socket. Now we should have,
1 BCM socket by signal to make filter on them. 1 raw socket by devices is kept
to use diagnostic manager as is.
Change-Id: Icb2daddf67039479f72bc487d53971adc9aba638
Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
Diffstat (limited to 'CAN-binder/low-can-binding/utils/socketcan.hpp')
-rw-r--r-- | CAN-binder/low-can-binding/utils/socketcan.hpp | 24 |
1 files changed, 3 insertions, 21 deletions
diff --git a/CAN-binder/low-can-binding/utils/socketcan.hpp b/CAN-binder/low-can-binding/utils/socketcan.hpp index 8a71d3a8..391fb460 100644 --- a/CAN-binder/low-can-binding/utils/socketcan.hpp +++ b/CAN-binder/low-can-binding/utils/socketcan.hpp @@ -30,42 +30,27 @@ namespace utils { - struct simple_bcm_msg - { - struct bcm_msg_head msg_head; - struct can_frame frames; - }; - - struct canfd_bcm_msg - { - struct bcm_msg_head msg_head; - struct canfd_frame frames; - canfd_bcm_msg() { msg_head.flags |= CAN_FD_FRAME; } - }; - class socketcan_t { public: socketcan_t(); socketcan_t(const socketcan_t&) = delete; socketcan_t(socketcan_t&&); - ~socketcan_t(); + virtual ~socketcan_t(); const struct sockaddr_can& get_tx_address() const; explicit operator bool() const; int socket() const; - int open(std::string device_name); + virtual int open(std::string device_name) = 0; int setopt(int level, int optname, const void* optval, socklen_t optlen); int close(); - private: + protected: int socket_; struct sockaddr_can tx_address_; int open(int domain, int type, int protocol); - int bind(const struct sockaddr* addr, socklen_t len); - int connect(const struct sockaddr* addr, socklen_t len); }; template <typename T> @@ -83,9 +68,6 @@ namespace utils ERROR(binder_interface, "%s: Error sending : %i %s", __FUNCTION__, errno, ::strerror(errno)); return s; } - - socketcan_t& operator<<(socketcan_t& s, const struct simple_bcm_msg& obj); - socketcan_t& operator<<(socketcan_t& s, const struct canfd_bcm_msg& obj); socketcan_t& operator>>(socketcan_t& s, can_message_t& cm); } |