X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=CAN-binder%2Flow-can-binding%2Futils%2Fsocketcan.cpp;h=1f7aaa61e80e9e5e42f532ca0a0a68b16580c51d;hb=016b3b0d2764bccf881558d712decc6e9fe1fadd;hp=4d22654729384bdb3868b44f68fffe21e9c425c6;hpb=7679cd97dc4c20103f8afb364437dbcfd359befc;p=apps%2Fagl-service-can-low-level.git diff --git a/CAN-binder/low-can-binding/utils/socketcan.cpp b/CAN-binder/low-can-binding/utils/socketcan.cpp index 4d226547..1f7aaa61 100644 --- a/CAN-binder/low-can-binding/utils/socketcan.cpp +++ b/CAN-binder/low-can-binding/utils/socketcan.cpp @@ -34,16 +34,16 @@ namespace utils /// @brief Construct a socket by moving an existing one. socketcan_t::socketcan_t(socketcan_t&& s) : socket_{s.socket_} + {} + + socketcan_t& socketcan_t::operator=(const socketcan_t& s) { - s.socket_ = INVALID_SOCKET; + socket_ = std::move(s.socket_); + return *this; } - /// @brief Destruct the socket. socketcan_t::~socketcan_t() - { - if(socket_ != INVALID_SOCKET) - ::close(socket_); - } + {} const struct sockaddr_can& socketcan_t::get_tx_address() const { @@ -89,28 +89,4 @@ namespace utils { return socket_; } - - socketcan_t& operator>>(socketcan_t& s, can_message_t& cm) - { - struct { - struct bcm_msg_head msg_head; - struct can_frame frames; - } msg; - - const struct sockaddr_can& addr = s.get_tx_address(); - socklen_t addrlen = sizeof(addr); - struct ifreq ifr; - - ssize_t nbytes = ::recvfrom(s.socket(), &msg, sizeof(msg), 0, (struct sockaddr*)&addr, &addrlen); - ifr.ifr_ifindex = addr.can_ifindex; - ioctl(s.socket(), SIOCGIFNAME, &ifr); - - DEBUG(binder_interface, "Data available: %i bytes read", (int)nbytes); - DEBUG(binder_interface, "read: Found on bus %s:\n id: %X, length: %X, data %02X%02X%02X%02X%02X%02X%02X%02X", ifr.ifr_name, msg.msg_head.can_id, msg.frames.can_dlc, - msg.frames.data[0], msg.frames.data[1], msg.frames.data[2], msg.frames.data[3], msg.frames.data[4], msg.frames.data[5], msg.frames.data[6], msg.frames.data[7]); - - cm = ::can_message_t::convert_from_frame(msg.frames , nbytes-sizeof(struct bcm_msg_head)); - - return s; - } } \ No newline at end of file