X-Git-Url: http://rtime.felk.cvut.cz/gitweb/lincan.git/blobdiff_plain/659b098309c2bca57ac60a35a1b9900d6f28e74d..2827b727d2910a3b48f9de7d67b3a67f59e256c7:/lincan/utils/readburst.c diff --git a/lincan/utils/readburst.c b/lincan/utils/readburst.c index 8a6d552..c0e3ba1 100644 --- a/lincan/utils/readburst.c +++ b/lincan/utils/readburst.c @@ -24,6 +24,8 @@ struct canfilt_t canfilt = { int canfilt_fl; +int query_fl; + int can_wait_sec = 5; char *can_dev_name = "/dev/can0"; @@ -67,6 +69,7 @@ usage(void) printf(" -f, --flags CAN filter flags\n"); printf(" -w, --wait number of seconds to wait in select call\n"); printf(" -p, --prefix string prefix for output\n"); + printf(" -q, --query query driver features\n"); printf(" -V, --version show version\n"); printf(" -h, --help this usage screen\n"); } @@ -81,6 +84,7 @@ int main(int argc, char *argv[]) { "flags", 1, 0, 'f' }, { "wait", 1, 0, 'w' }, { "prefix",1, 0, 'p' }, + { "query" ,0 ,0, 'q' }, { "version",0,0, 'V' }, { "help", 0, 0, 'h' }, { 0, 0, 0, 0} @@ -89,11 +93,15 @@ int main(int argc, char *argv[]) int n,ret; unsigned long i=0; + #ifdef CAN_MSG_VERSION_2 + struct canmsg_t readmsg={0,0,5,{0,0},0,{0,}}; + #else /* CAN_MSG_VERSION_2 */ struct canmsg_t readmsg={0,0,5,0,0,{0,}}; + #endif /* CAN_MSG_VERSION_2 */ struct sigaction act; - while ((opt = getopt_long(argc, argv, "d:m:i:f:w:p:Vh", + while ((opt = getopt_long(argc, argv, "d:m:i:f:w:p:qVh", &long_opts[0], NULL)) != EOF) switch (opt) { case 'd': can_dev_name=optarg; @@ -116,6 +124,9 @@ int main(int argc, char *argv[]) case 'p': prt_prefix_in = optarg; break; + case 'q': + query_fl=1; + break; case 'V': fputs("LinCAN utilities v0.2\n", stdout); exit(0); @@ -139,6 +150,17 @@ int main(int argc, char *argv[]) exit(1); } + if (query_fl) { + n=ioctl(fd, CAN_DRV_QUERY, CAN_DRV_QRY_BRANCH); + printf("CAN driver branch: %c%c%c%c\n",(n>>24)&0xff,(n>>16)&0xff,(n>>8)&0xff,n&0xff); + n=ioctl(fd, CAN_DRV_QUERY, CAN_DRV_QRY_VERSION); + printf("CAN driver version: %d.%d.%d\n",(n>>16)&0xff,(n>>8)&0xff,n&0xff); + n=ioctl(fd, CAN_DRV_QUERY, CAN_DRV_QRY_MSGFORMAT); + printf("CAN message format: %08x\n",n); + close(fd); + return 0; + } + if (canfilt_fl) { ret = ioctl(fd, CANQUE_FILTER, &canfilt); if(ret<0) { @@ -151,7 +173,6 @@ int main(int argc, char *argv[]) while (1) { readmsg.flags=0; readmsg.cob=0; - readmsg.timestamp=0; #if 1 ret=can_fd_wait(fd, can_wait_sec); printf("%scan_fd_wait returned %d\n", prt_prefix, ret);