Change cmd tester to check for Comedi version, and then use

SDF_CMD flag.
This commit is contained in:
David Schleef 2002-05-15 19:53:34 +00:00
parent 515a0d426f
commit 22ae504197
2 changed files with 29 additions and 20 deletions

View file

@ -151,28 +151,35 @@ comedi_range *get_rangeinfo(int fd,unsigned int range_type)
static int do_test_for_cmd(comedi_t *dev,unsigned int subdevice)
{
comedi_cmd it;
int ret;
memset(&it,0,sizeof(it));
it.subdev = subdevice;
it.start_src = TRIG_ANY;
it.scan_begin_src = TRIG_ANY;
it.convert_src = TRIG_ANY;
it.scan_end_src = TRIG_ANY;
it.stop_src = TRIG_ANY;
ret = ioctl(dev->fd,COMEDI_CMDTEST,&it);
if(ret<0 && errno==EIO){
/* SDF_CMD was added in 0.7.57 */
if(dev->devinfo.version_code >= COMEDI_VERSION_CODE(0,7,57)){
if(dev->subdevices[subdevice].subd_flags & SDF_CMD)
return 1;
return 0;
}else{
comedi_cmd it;
int ret;
memset(&it,0,sizeof(it));
it.subdev = subdevice;
it.start_src = TRIG_ANY;
it.scan_begin_src = TRIG_ANY;
it.convert_src = TRIG_ANY;
it.scan_end_src = TRIG_ANY;
it.stop_src = TRIG_ANY;
ret = ioctl(dev->fd,COMEDI_CMDTEST,&it);
if(ret<0 && errno==EIO){
return 0;
}
if(ret<0){
fprintf(stderr,"BUG in do_test_for_cmd()\n");
return 0;
}
return 1;
}
if(ret<0){
fprintf(stderr,"BUG in do_test_for_cmd()\n");
return 0;
}
return 1;
}
static int do_test_for_insnlist(comedi_t *dev)

View file

@ -55,6 +55,8 @@
#define DEBUG(level,format,args...) do{if(__comedi_loglevel>=(level))fprintf(stderr,__FUNCTION__ ": " format, ## args);}while(0)
#define COMEDI_VERSION_CODE(a,b,c) (((a)<<16) | ((b)<<8) | (c))
#define COMEDILIB_MAGIC 0xc001dafe
extern int __comedi_init;