added comedi_data_read_n()
This commit is contained in:
parent
bf5d20bb9f
commit
e73c24b951
2 changed files with 27 additions and 3 deletions
|
@ -118,6 +118,8 @@ lsampl_t comedi_from_phys(double data,comedi_range *rng,lsampl_t maxdata);
|
|||
/* syncronous stuff */
|
||||
int comedi_data_read(comedi_t *it,unsigned int subd,unsigned int chan,
|
||||
unsigned int range,unsigned int aref,lsampl_t *data);
|
||||
int comedi_data_read_n(comedi_t *it,unsigned int subd,unsigned int chan,
|
||||
unsigned int range,unsigned int aref,lsampl_t *data, unsigned int n);
|
||||
int comedi_data_read_hint(comedi_t *it,unsigned int subd,unsigned int chan,
|
||||
unsigned int range,unsigned int aref);
|
||||
int comedi_data_read_delayed(comedi_t *it,unsigned int subd,unsigned int chan,
|
||||
|
|
28
lib/data.c
28
lib/data.c
|
@ -85,7 +85,7 @@ int comedi_data_write(comedi_t *it,unsigned int subdev,unsigned int chan,unsigne
|
|||
}
|
||||
}
|
||||
|
||||
int comedi_data_read_n(comedi_t *it, unsigned int subdev, unsigned int chan, unsigned int range,
|
||||
static inline int comedi_internal_data_read_n(comedi_t *it, unsigned int subdev, unsigned int chan, unsigned int range,
|
||||
unsigned int aref, lsampl_t *data, unsigned int n)
|
||||
{
|
||||
subdevice *s;
|
||||
|
@ -144,17 +144,39 @@ int comedi_data_read_n(comedi_t *it, unsigned int subdev, unsigned int chan, uns
|
|||
}
|
||||
}
|
||||
|
||||
int comedi_data_read_n(comedi_t *it, unsigned int subdev, unsigned int chan, unsigned int range,
|
||||
unsigned int aref, lsampl_t *data, unsigned int n)
|
||||
{
|
||||
static const int max_chunk_size = 100;
|
||||
unsigned int chunk_size;
|
||||
unsigned int sample_count = 0;
|
||||
int retval;
|
||||
|
||||
while( n )
|
||||
{
|
||||
if( n > max_chunk_size)
|
||||
chunk_size = max_chunk_size;
|
||||
else
|
||||
chunk_size = n;
|
||||
retval = comedi_internal_data_read_n( it, subdev, chan, range, aref, &data[sample_count], chunk_size);
|
||||
if( retval < 0 ) return retval;
|
||||
n -= chunk_size;
|
||||
sample_count += chunk_size;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int comedi_data_read(comedi_t *it, unsigned int subdev, unsigned int chan, unsigned int range,
|
||||
unsigned int aref, lsampl_t *data)
|
||||
{
|
||||
return comedi_data_read_n(it, subdev, chan, range, aref, data, 1);
|
||||
return comedi_internal_data_read_n(it, subdev, chan, range, aref, data, 1);
|
||||
}
|
||||
|
||||
int comedi_data_read_hint(comedi_t *it,unsigned int subdev,unsigned int chan,unsigned int range,
|
||||
unsigned int aref)
|
||||
{
|
||||
lsampl_t dummy_data;
|
||||
return comedi_data_read_n(it, subdev, chan, range, aref, &dummy_data, 0);
|
||||
return comedi_internal_data_read_n(it, subdev, chan, range, aref, &dummy_data, 0);
|
||||
}
|
||||
|
||||
int comedi_data_read_delayed( comedi_t *it, unsigned int subdev, unsigned int chan, unsigned int range,
|
||||
|
|
Loading…
Add table
Reference in a new issue