/* This demo reads information about a comedi device and displays the information in a human-readable form. */ #include #include #include #include #include #include #include #include "examples.h" void get_command_stuff(comedi_t *it,int s); void help(void) { fprintf(stderr,"info \n"); exit(0); } char *tobinary(char *s,int bits,int n); char *subdevice_types[]={ "unused", "analog input", "analog output", "digital input", "digital output", "digital I/O", "counter", "timer", "memory", "calibration", "processor", "serial digital I/O" }; comedi_t *it; extern char *filename; int main(int argc,char *argv[]) { int i,j; int n_subdevices,type; int chan,n_chans; int n_ranges; comedi_range *rng; parse_options(argc,argv); it=comedi_open(filename); if(!it){ fprintf(stderr,"cannot open %s\n",filename); exit(0); } printf("overall info:\n"); printf(" version code: 0x%06x\n",comedi_get_version_code(it)); printf(" driver name: %s\n",comedi_get_driver_name(it)); printf(" board name: %s\n",comedi_get_board_name(it)); printf(" number of subdevices: %d\n",n_subdevices=comedi_get_n_subdevices(it)); for(i=0;imin,rng->max); } printf("\n"); }else{ for(chan=0;chanmin,rng->max); } printf("\n"); } } printf(" command:\n"); get_command_stuff(it,i); } return 0; } char *tobinary(char *s,int bits,int n) { int bit=1<>=1) *t++=(bits&bit)?'1':'0'; *t=0; return s; } void probe_max_1chan(comedi_t *it,int s); void get_command_stuff(comedi_t *it,int s) { comedi_cmd cmd; char buf[100]; if(comedi_get_cmd_src_mask(it,s,&cmd)<0){ printf(" not supported\n"); }else{ printf(" start: %s\n",cmd_src(cmd.start_src,buf)); printf(" scan_begin: %s\n",cmd_src(cmd.scan_begin_src,buf)); printf(" convert: %s\n",cmd_src(cmd.convert_src,buf)); printf(" scan_end: %s\n",cmd_src(cmd.scan_end_src,buf)); printf(" stop: %s\n",cmd_src(cmd.stop_src,buf)); probe_max_1chan(it,s); } } void probe_max_1chan(comedi_t *it,int s) { comedi_cmd cmd; char buf[100]; printf(" command fast 1chan:\n"); if(comedi_get_cmd_generic_timed(it,s,&cmd,1)<0){ printf(" not supported\n"); }else{ printf(" start: %s %d\n", cmd_src(cmd.start_src,buf),cmd.start_arg); printf(" scan_begin: %s %d\n", cmd_src(cmd.scan_begin_src,buf),cmd.scan_begin_arg); printf(" convert: %s %d\n", cmd_src(cmd.convert_src,buf),cmd.convert_arg); printf(" scan_end: %s %d\n", cmd_src(cmd.scan_end_src,buf),cmd.scan_end_arg); printf(" stop: %s %d\n", cmd_src(cmd.stop_src,buf),cmd.stop_arg); } }