在本地回环功能开启的情况下,所有的发送帧都会被回环到在相应CAN接口上注册了同样CAN-ID(和发送帧的相同)的套接字上。发送CAN帧的套接字被假设不想接收自己发送的CAN帧,因此在发送套接字上的回环功能默认是关闭的。可以在需要的时候改变这一默认行为:
int recv_own_msgs = 1; /* 0 = disabled (default), 1 = enabled */
setsockopt(s, SOL_CAN_RAW, CAN_RAW_RECV_OWN_MSGS, &recv_own_msgs, sizeof(recv_own_msgs));
(yll:下面三小节没有内容)
4.2 广播管理协议套接字 (SOCK_DGRAM)
-----------------------------------------------
4.3 面向连接的传输协议 (SOCK_SEQPACKET) ----------------------------------------------------
4.4 无连接的传输协议 (SOCK_DGRAM)
---------------------------------------------
5. Socket CAN核心模块 ==============
CAN套接字的核心模块实现了PF_CAN协议族。CAN协议模块在核心模块运行后加载。CAN核心模块为协议模块提供了申请需要的ID的接口(参考3.1小节)。
5.1 can.ko模块的参数 -------------------------
- stats_timer: 为了计算CAN套接字的统计信息(比如最近一秒的帧数和每秒最大的帧数),can.ko调用一个定时间隔为1秒的定时器