X-Git-Url: http://rtime.felk.cvut.cz/gitweb/lincan.git/blobdiff_plain/11132ea490f9e860744ee4f851c67e7fb4444231..2827b727d2910a3b48f9de7d67b3a67f59e256c7:/lincan/src/ioctl.c diff --git a/lincan/src/ioctl.c b/lincan/src/ioctl.c index 40a4204..4cf3ca5 100644 --- a/lincan/src/ioctl.c +++ b/lincan/src/ioctl.c @@ -7,13 +7,8 @@ * Version lincan-0.2 9 Jul 2003 */ -#include - -#include -#include -#include -#include - +#include "../include/can.h" +#include "../include/can_sysdep.h" #include "../include/main.h" #include "../include/ioctl.h" #include "../include/i82527.h" @@ -29,7 +24,7 @@ int can_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned struct canque_ends_t *qends; if(!canuser || (canuser->magic != CAN_USER_MAGIC)){ - CANMSG("can_close: bad canuser magic\n"); + CANMSG("can_ioctl: bad canuser magic\n"); return -ENODEV; } @@ -48,6 +43,9 @@ int can_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned } switch (cmd) { + case CAN_DRV_QUERY: { + return can_ioctl_query(canuser, arg); + } case STAT: { for (i=0x0; i<0x100; i++) CANMSG("0x%x is 0x%x\n",i,can_read_reg(chip,i)); @@ -63,6 +61,10 @@ int can_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned return -1; break; } + case CANQUE_FLUSH: { + canque_flush(canuser->rx_edge0); + break; + } case CONF_FILTER: { #if 0 if (!strcmp(chip->chip_type,"i82527")) { @@ -83,19 +85,17 @@ int can_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned /* In- and output buffer re-initialization */ if(canuser->rx_edge0){ - canque_set_filt(canuser->rx_edge0, arg, ~0); - canque_flush(canuser->rx_edge0); + canque_set_filt(canuser->rx_edge0, arg, ~0, 0); } break; } - case CONF_FILTER_QUE0: { + case CANQUE_FILTER: { struct canfilt_t canfilt; copy_from_user(&canfilt, (void*)arg, sizeof(struct canfilt_t)); if(canuser->rx_edge0){ - canque_set_filt(canuser->rx_edge0, canfilt.id, canfilt.mask); - canque_flush(canuser->rx_edge0); + canque_set_filt(canuser->rx_edge0, canfilt.id, canfilt.mask, canfilt.flags); } break; }