From: David Schleef Date: Thu, 15 Jun 2000 06:42:49 +0000 (+0000) Subject: more sign bit fixes X-Git-Tag: r0_7_45~2 X-Git-Url: http://git.tremily.us/gitweb.cgi?a=commitdiff_plain;h=5acad7200b77c3375cc1779e753f4b1d9a085d35;p=comedi.git more sign bit fixes --- diff --git a/comedi/drivers/ni_mio_common.c b/comedi/drivers/ni_mio_common.c index 038b9bbe..340c22e0 100644 --- a/comedi/drivers/ni_mio_common.c +++ b/comedi/drivers/ni_mio_common.c @@ -398,8 +398,10 @@ static void ni_handle_fifo_half_full(comedi_device *dev) static void ni_handle_fifo_dregs(comedi_device *dev) { comedi_subdevice *s=dev->subdevices+0; - sampl_t *data; + sampl_t *data,d; int i,n; + int j; + unsigned int mask; /* Too bad NI didn't have the foresight to return a @@ -411,6 +413,8 @@ static void ni_handle_fifo_dregs(comedi_device *dev) This would save a lot of time. */ + mask=(1<ai_chanlistptr; data=((void *)s->cur_trig.data)+s->buf_int_ptr; while(1){ n=(s->cur_trig.data_len-s->buf_int_ptr)/sizeof(sampl_t); @@ -418,7 +422,12 @@ static void ni_handle_fifo_dregs(comedi_device *dev) if(ni_readw(AI_Status_1)&AI_FIFO_Empty_St){ return; } - *data=ni_readw(ADC_FIFO_Data_Register); + d=ni_readw(ADC_FIFO_Data_Register); + d^=devpriv->ai_xorlist[j]; + d&=mask; + *data=d; + j++; + if(j>=s->cur_trig.n_chan)j=0; data++; s->buf_int_ptr+=sizeof(sampl_t); s->buf_int_count+=sizeof(sampl_t); @@ -427,6 +436,7 @@ static void ni_handle_fifo_dregs(comedi_device *dev) data=s->cur_trig.data; comedi_eobuf(dev,s); } + devpriv->ai_chanlistptr=j; } /*