Class: RubyCan::CanSocket
- Inherits:
-
Socket
- Object
- Socket
- RubyCan::CanSocket
- Defined in:
- lib/ruby_can/can_socket.rb
Constant Summary collapse
- PF_CAN =
29- AF_CAN =
PF_CAN- CAN_RAW =
1- SIOCGIFINDEX =
0x8933
Instance Method Summary collapse
-
#initialize(can_interface_name) ⇒ CanSocket
constructor
A new instance of CanSocket.
Constructor Details
#initialize(can_interface_name) ⇒ CanSocket
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# 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 |