I've updated the manual in the section configuration and
[comedilib.git] / testing / bufconfig.c
1
2 #include <stdio.h>
3 #include <comedilib.h>
4 #include <fcntl.h>
5 #include <unistd.h>
6 #include <sys/ioctl.h>
7 #include <errno.h>
8 #include <getopt.h>
9 #include <ctype.h>
10 #include <math.h>
11 #include <sys/time.h>
12 #include <string.h>
13 #include "comedi_test.h"
14
15 int test_bufconfig_without_cmd(void);
16 int test_bufconfig_with_cmd(void);
17
18 int test_bufconfig(void)
19 {
20         int flags;
21
22         flags = comedi_get_subdevice_flags(device,subdevice);
23
24         if(flags&SDF_CMD){
25                 return test_bufconfig_with_cmd();
26         }else{
27                 return test_bufconfig_without_cmd();
28         }
29 }
30
31 int test_bufconfig_without_cmd(void)
32 {
33         int ret;
34
35         ret = comedi_get_buffer_size(device,subdevice);
36         if(ret<0){
37                 if(errno==ENODEV){
38                         printf("got ENODEV, good\n");
39                 }else{
40                         printf("E: comedi_get_buffer_size: %s\n",
41                                 strerror(errno));
42                 }
43         }else if(ret==0){
44                 printf("buffer length is 0, good\n");
45         }else{
46                 printf("E: comedi_get_buffer_size returned %d\n",ret);
47         }
48
49         return 0;
50 }
51
52 int test_bufconfig_with_cmd(void)
53 {
54         int ret;
55         int len;
56         int maxlen;
57
58         ret = comedi_get_buffer_size(device,subdevice);
59         if(ret<0){
60                 printf("E: comedi_get_buffer_size: %s\n",strerror(errno));
61         }else{
62                 printf("buffer size %d\n",ret);
63         }
64
65         maxlen = comedi_get_max_buffer_size(device,subdevice);
66         if(maxlen<0){
67                 printf("E: comedi_get_max_buffer_size: %s\n",strerror(errno));
68         }else{
69                 printf("max buffer size %d\n",maxlen);
70         }
71
72         len=4096;
73         printf("setting buffer size to %d\n",len);
74         ret = comedi_set_buffer_size(device,subdevice,len);
75         if(ret<0){
76                 printf("E: comedi_set_buffer_size: %s\n",strerror(errno));
77         }else{
78                 printf("buffer size set to %d\n",ret);
79         }
80
81         ret = comedi_get_buffer_size(device,subdevice);
82         if(ret<0){
83                 printf("E: comedi_get_buffer_size: %s\n",strerror(errno));
84         }else{
85                 printf("buffer size now at %d\n",ret);
86                 if(ret != len){
87                         printf("E: buffer size didn't get set: %d (expected %d)\n",
88                                 ret,len);
89                 }
90         }
91
92         len=maxlen+4096;
93         printf("setting buffer size past limit, %d\n",len);
94         ret = comedi_set_buffer_size(device,subdevice,len);
95         if(ret<0){
96                 if(errno==EPERM){
97                         printf("got EPERM, good\n");
98                 }else{
99                         printf("E: wrong error comedi_set_buffer_size: %s",
100                                 strerror(errno));
101                 }
102         }else{
103                 printf("E: comedi_set_buffer_size: didn't get error\n");
104         }
105
106         len=maxlen;
107         printf("setting buffer size to max, %d\n",len);
108         ret = comedi_set_buffer_size(device,subdevice,len);
109         if(ret<0){
110                 printf("E: comedi_set_buffer_size: %s\n",strerror(errno));
111         }else{
112                 printf("buffer size now at %d\n",ret);
113                 if(ret != len){
114                         printf("E: buffer size didn't get set: %d (expected %d)\n",
115                                 ret,len);
116                 }
117         }
118
119
120         return 0;
121 }
122