class RubyCan::CanSocket
Constants
- AF_CAN
- CAN_RAW
- PF_CAN
- SIOCGIFINDEX
Public Class Methods
new( can_interface_name )
click to toggle source
Calls superclass method
# File lib/ruby_can/can_socket.rb, line 11 def initialize( can_interface_name ) super(PF_CAN, Socket::SOCK_RAW, CAN_RAW) # struct ifreq in net/if.h if_idx_req = can_interface_name.ljust(16,"\0")+[0].pack("L") ioctl(SIOCGIFINDEX, if_idx_req ) if_name,if_index = if_idx_req.unpack("A16L") # sockaddr_can from linux/can.h #struct sockaddr_can { # __kernel_sa_family_t can_family; S # int can_ifindex; l # union { # /* transport protocol class address information (e.g. ISOTP) */ # struct { canid_t rx_id, tx_id; } tp; LL # # /* reserved for future CAN protocols address information */ # } can_addr; #}; # align on 16 byte -> pad with 2 bytes exta S sockaddr_can = [AF_CAN,if_index,0,0,0].pack("SlLLS") bind(sockaddr_can) end