s->subdev_flags &= ~SDF_RUNNING;
}
+void comedi_error_done(comedi_device *dev,comedi_subdevice *s)
+{
+#if 0
+ DPRINTK("comedi_error_done\n");
+#endif
+
+ if(!(s->cur_trig.flags&TRIG_RT))
+ wake_up_interruptible(&dev->wait);
+ else if(s->cb_mask&(COMEDI_CB_ERROR|COMEDI_CB_EOA))
+ s->cb_func(COMEDI_CB_ERROR|COMEDI_CB_EOA,s->cb_arg);
+
+ s->subdev_flags &= ~SDF_RUNNING;
+}
+
void comedi_bufcheck(comedi_device *dev,comedi_subdevice *s)
{
#if 0
(s->buf_int_count-s->buf_user_count >= 16))
wake_up_interruptible(&dev->wait);
#else
- if(!(s->cur_trig.flags&TRIG_RT))
+ if(!(s->cur_trig.flags&TRIG_RT)) {
wake_up_interruptible(&dev->wait);
+ }else{
+ if(s->cb_mask&COMEDI_CB_BLOCK)
+ s->cb_func(COMEDI_CB_BLOCK,s->cb_arg);
+ }
#endif
}
EXPORT_SYMBOL(comedi_driver_unregister);
EXPORT_SYMBOL(comedi_bufcheck);
EXPORT_SYMBOL(comedi_done);
+EXPORT_SYMBOL(comedi_error_done);
EXPORT_SYMBOL(comedi_error);
EXPORT_SYMBOL(do_pack);
EXPORT_SYMBOL(di_unpack);
void comedi_error(comedi_device *dev,const char *s);
void comedi_done(comedi_device *dev,comedi_subdevice *s);
+void comedi_error_done(comedi_device *dev,comedi_subdevice *s);
void comedi_eos(comedi_device *dev,comedi_subdevice *s);
void comedi_eobuf(comedi_device *dev,comedi_subdevice *s);
void comedi_bufcheck(comedi_device *dev,comedi_subdevice *s);
#define COMEDI_CB_EOA 2 /* end of acquisition */
#define COMEDI_CB_BLOCK 4 /* convenient block size */
#define COMEDI_CB_EOBUF 8 /* end of buffer */
+#define COMEDI_CB_ERROR 16 /* card error during acquisition */
/* exported functions */