#include <comedi.h>
#include <string.h>
-#include <libinternal.h>
+#include "libinternal.h"
/* these functions download information from the comedi module. */
s=malloc(sizeof(comedi_subdinfo)*it->n_subdevices);
debug_ptr(s);
- ret = ioctl(it->fd, COMEDI_SUBDINFO, s);
+ ret = comedi_ioctl(it->fd, COMEDI_SUBDINFO, (unsigned long)s);
debug_int(ret);
r=it->subdevices=realloc(it->subdevices,
ci.flaglist = r[i].flags_list;
ci.rangelist = r[i].range_type_list;
ci.maxdata_list = r[i].maxdata_list;
- ret = ioctl(it->fd, COMEDI_CHANINFO, &ci);
+ ret = comedi_ioctl(it->fd, COMEDI_CHANINFO, (unsigned long)&ci);
debug_int(ret);
if(r[i].subd_flags&SDF_RANGETYPE){
ri.range_type = range_type;
ri.range_ptr = kr;
- ret = ioctl(fd, COMEDI_RANGEINFO, &ri);
+ ret = comedi_ioctl(fd, COMEDI_RANGEINFO, (unsigned long)&ri);
if(ret<0){
fprintf(stderr,"ioctl(%d,COMEDI_RANGEINFO,0x%08x,%p)\n",fd,range_type,kr);
}
static int do_test_for_cmd(comedi_t *dev,unsigned int subdevice)
{
- comedi_cmd it;
- int ret;
+ /* 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));
+ 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;
+ 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);
+ ret = comedi_ioctl(dev->fd, COMEDI_CMDTEST, (unsigned long)&it);
- if(ret<0 && errno==EIO){
- return 0;
- }
- if(ret<0){
- fprintf(stderr,"BUG in do_test_for_cmd()\n");
- return 0;
+ if(ret<0 && errno==EIO){
+ return 0;
+ }
+ if(ret<0){
+ fprintf(stderr,"BUG in do_test_for_cmd()\n");
+ return 0;
+ }
+ return 1;
}
- return 1;
}
static int do_test_for_insnlist(comedi_t *dev)
insn.n = 2;
insn.data = data;
- ret = ioctl(dev->fd,COMEDI_INSNLIST,&il);
+ ret = comedi_ioctl(dev->fd, COMEDI_INSNLIST, (unsigned long)&il);
if(ret<0){
if(errno!=EIO){
insn.n = 2;
insn.data = data;
- ret = ioctl(dev->fd,COMEDI_INSN,&insn);
+ ret = comedi_ioctl(dev->fd, COMEDI_INSN, (unsigned long)&insn);
if(ret<0){
if(errno!=EIO){