X-Git-Url: http://rtime.felk.cvut.cz/gitweb/lincan.git/blobdiff_plain/c316aed80a2047f337dc0cff35e2458c4cb13eca..2827b727d2910a3b48f9de7d67b3a67f59e256c7:/lincan/utils/readburst.c diff --git a/lincan/utils/readburst.c b/lincan/utils/readburst.c index ca67257..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} @@ -97,7 +101,7 @@ int main(int argc, char *argv[]) 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; @@ -120,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); @@ -143,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) {