1 /**************************************************************/
2 /* CAN system calls example */
3 /* Author: Michal Sojka, Czech Technical University in Prague */
4 /* License: Public domain */
5 /**************************************************************/
15 #include <sys/ioctl.h>
17 int init_write_socket(const char *dev)
20 struct sockaddr_can addr;
23 sock = CHECK(socket(PF_CAN, SOCK_RAW, CAN_RAW));
25 strncpy(ifr.ifr_name, dev, sizeof(ifr.ifr_name));
26 if (-1 == ioctl(sock, SIOCGIFINDEX, &ifr)) {
31 addr.can_family = AF_CAN;
32 addr.can_ifindex = ifr.ifr_ifindex;
34 CHECK(bind(sock, (struct sockaddr *)&addr, sizeof(addr)));
39 void can_write(int sock, struct can_frame *cf)
41 int ret = write(sock, cf, sizeof(*cf));
43 if (ret != sizeof(*cf)) {
49 int main(int argc, char *argv[])
53 struct can_frame cf[100];
55 dev = cansend_parse_args(argc, argv, &count, cf, 100);
57 sock = init_write_socket(dev);
59 for (i = 0; i < count; i++)
60 can_write(sock, &cf[i]);