+ return cm;
+ }
+
+ int socketcan_bcm_t::write_message(message_t& m)
+ {
+
+ can_message_t& cm = reinterpret_cast<can_message_t&>(m);
+ struct bcm_msg obj = cm.get_bcm_msg();
+ size_t size = (obj.msg_head.flags & CAN_FD_FRAME) ?
+ (size_t)((char*)&obj.fd_frames[obj.msg_head.nframes] - (char*)&obj):
+ (size_t)((char*)&obj.frames[obj.msg_head.nframes] - (char*)&obj);
+ if (::sendto(socket(), &obj, size, 0, (const struct sockaddr*)&get_tx_address(), sizeof(get_tx_address())) < 0)
+ {
+ AFB_ERROR("Error sending : %i %s", errno, ::strerror(errno));
+ return -1;
+ }
+ return 0;