some more additions so flags don't cause invalid channel error
authorFrank Mori Hess <fmhess@speakeasy.net>
Tue, 30 Apr 2002 23:07:00 +0000 (23:07 +0000)
committerFrank Mori Hess <fmhess@speakeasy.net>
Tue, 30 Apr 2002 23:07:00 +0000 (23:07 +0000)
lib/data.c

index 68d97f4e3c412d0f508593a1329f45f2f42a9011..72930d1ae91d41ede2b26a47a1aedfb542c8db48 100644 (file)
@@ -89,6 +89,9 @@ static inline int comedi_internal_data_read_n(comedi_t *it, unsigned int subdev,
                unsigned int aref, unsigned int flags, lsampl_t *data, unsigned int n)
 {
        subdevice *s;
+       
+       flags &= CR_FLAGS_MASK;
+       chan &= ~CR_FLAGS_MASK;
 
        if(!valid_chan(it,subdev,chan))
                return -1;
@@ -186,6 +189,9 @@ int comedi_data_read_delayed( comedi_t *it, unsigned int subdev, unsigned int ch
        comedi_insnlist ilist;
        comedi_insn insn[3];
        lsampl_t delay = nano_sec;
+       unsigned int flags = chan & CR_FLAGS_MASK;
+       
+       chan &= ~CR_FLAGS_MASK;
 
        if( !valid_chan( it, subdev, chan ) )
                return -1;
@@ -200,7 +206,7 @@ int comedi_data_read_delayed( comedi_t *it, unsigned int subdev, unsigned int ch
        insn[0].n = 0;
        insn[0].data = data;
        insn[0].subdev = subdev;
-       insn[0].chanspec = CR_PACK_FLAGS( chan, range, aref, chan );
+       insn[0].chanspec = CR_PACK_FLAGS( chan, range, aref, flags );
        // delay
        insn[1].insn = INSN_WAIT;
        insn[1].n = 1;
@@ -210,7 +216,7 @@ int comedi_data_read_delayed( comedi_t *it, unsigned int subdev, unsigned int ch
        insn[2].n = 1;
        insn[2].data = data;
        insn[2].subdev = subdev;
-       insn[2].chanspec = CR_PACK_FLAGS( chan, range, aref, chan );
+       insn[2].chanspec = CR_PACK_FLAGS( chan, range, aref, flags );
 
        ilist.insns = insn;
        ilist.n_insns = sizeof(insn) / sizeof(insn[0]);