~ubuntu-branches/ubuntu/intrepid/comedilib/intrepid

« back to all changes in this revision

Viewing changes to comedi_calibrate/comedi_calibrate.c

  • Committer: Bazaar Package Importer
  • Author(s): David Schleef
  • Date: 2004-11-04 11:43:51 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20041104114351-a50kaei5yamka8r6
Tags: 0.7.22-2
It helps if the shared library is actually in the package.

Show diffs side-by-side

added added

removed removed

Lines of Context:
257
257
                }
258
258
        }
259
259
        if(verbose>=0){
260
 
                char *s = "$Id: comedi_calibrate.c,v 1.89 2003/08/08 17:38:59 fmhess Exp $";
 
260
                char *s = "$Id: comedi_calibrate.c,v 1.92 2004/03/29 01:34:15 fmhess Exp $";
261
261
 
262
262
                printf("%.*s\n",(int)strlen(s)-2,s+1);
263
263
                printf("Driver name: %s\n", options.driver_name);
319
319
        return retval;
320
320
}
321
321
 
322
 
void set_target( calibration_setup_t *setup, int obs,double target)
 
322
void set_target( calibration_setup_t *setup, int obs, double target)
323
323
{
324
324
        comedi_range *range;
325
325
        lsampl_t maxdata, data;
397
397
        lsampl_t ref_data[ 2 ];
398
398
 
399
399
        // setup reference source
400
 
        memset( &reference_source_config, 0, sizeof(reference_source_config) );
401
 
        reference_source_config.insn = INSN_CONFIG;
402
 
        reference_source_config.n = 2;
403
 
        reference_source_config.subdev = setup->ad_subdev;
404
 
        reference_source_config.data = ref_data;
405
 
        reference_source_config.data[ 0 ] = INSN_CONFIG_ALT_SOURCE;
406
 
        reference_source_config.data[ 1 ] = setup->observables[obs].reference_source;
 
400
        if(setup->observables[obs].reference_source >= 0)
 
401
        {
 
402
                memset( &reference_source_config, 0, sizeof(reference_source_config) );
 
403
                reference_source_config.insn = INSN_CONFIG;
 
404
                reference_source_config.n = 2;
 
405
                reference_source_config.subdev = setup->ad_subdev;
 
406
                reference_source_config.data = ref_data;
 
407
                reference_source_config.data[ 0 ] = INSN_CONFIG_ALT_SOURCE;
 
408
                reference_source_config.data[ 1 ] = setup->observables[obs].reference_source;
407
409
 
408
 
        retval = comedi_do_insn( setup->dev, &reference_source_config );
409
 
        /* ignore errors for now since older ni driver doesn't
410
 
         * support reference config insn */
411
 
        if( retval < 0 )
412
 
                perror("preobserve() ignoring reference config error" );
 
410
                retval = comedi_do_insn( setup->dev, &reference_source_config );
 
411
                /* ignore errors for now since older ni driver doesn't
 
412
                * support reference config insn */
 
413
                if( retval < 0 )
 
414
                        perror("preobserve() ignoring reference config error" );
 
415
        }
413
416
        retval = 0;
414
417
 
415
418
        if( setup->observables[obs].preobserve_insn.n != 0){
914
917
        }
915
918
 
916
919
        // XXX check subdevice type is really calibration
917
 
        // XXX check we dont exceed max number of allowable caldacs
918
920
 
919
921
        n_chan = comedi_get_n_channels( setup->dev, caldac_subdev );
 
922
        assert(n_chan >= 0);
 
923
        assert(setup->n_caldacs + n_chan < N_CALDACS);
920
924
 
921
925
        for(i = 0; i < n_chan; i++){
922
926
                setup->caldacs[ setup->n_caldacs + i ].subdev = caldac_subdev;
923
927
                setup->caldacs[ setup->n_caldacs + i ].chan = i;
924
 
                setup->caldacs[ setup->n_caldacs + i ].maxdata = comedi_get_maxdata( setup->dev, caldac_subdev, i);
 
928
                setup->caldacs[ setup->n_caldacs + i ].maxdata = comedi_get_maxdata(setup->dev, caldac_subdev, i);
 
929
                assert(setup->caldacs[ setup->n_caldacs + i ].maxdata > 0);
925
930
                setup->caldacs[ setup->n_caldacs + i ].current=0;
926
931
        }
927
932
 
1177
1182
        for(i=0;i<n_ranges;i++){
1178
1183
                range = comedi_get_range(dev,subdev,0,i);
1179
1184
                if( is_bipolar( dev, subdev, 0, i ) == 0 ) continue;
 
1185
                if(range->unit == UNIT_none ) continue;
1180
1186
                if(range->max>max){
1181
1187
                        ret = i;
1182
1188
                        max=range->max;
1197
1203
        for(i=0;i<n_ranges;i++){
1198
1204
                range = comedi_get_range(dev,subdev,0,i);
1199
1205
                if( is_bipolar( dev, subdev, 0, i ) == 0 ) continue;
 
1206
                if(range->unit == UNIT_none ) continue;
1200
1207
                if(range->max<min){
1201
1208
                        ret = i;
1202
1209
                        min=range->max;
1217
1224
        for(i=0;i<n_ranges;i++){
1218
1225
                range = comedi_get_range(dev,subdev,0,i);
1219
1226
                if( is_unipolar( dev, subdev, 0, i ) == 0 ) continue;
 
1227
                if(range->unit == UNIT_none ) continue;
1220
1228
                if(range->max>max){
1221
1229
                        ret = i;
1222
1230
                        max=range->max;
1237
1245
        for(i=0;i<n_ranges;i++){
1238
1246
                range = comedi_get_range(dev,subdev,0,i);
1239
1247
                if( is_unipolar( dev, subdev, 0, i ) == 0 ) continue;
 
1248
                if(range->unit == UNIT_none ) continue;
1240
1249
                if(range->max < max){
1241
1250
                        ret = i;
1242
1251
                        max=range->max;
1457
1466
                l->sxx+=x*x;
1458
1467
        }
1459
1468
        sxp=l->sxx-l->sx*l->sx/l->s1;
1460
 
        
 
1469
 
1461
1470
        l->ave_x=l->sx/l->s1;
1462
1471
        l->ave_y=l->sy/l->s1;
1463
1472
        l->slope=(l->s1*l->sxy-l->sx*l->sy)/(l->s1*l->sxx-l->sx*l->sx);