Commit | Line | Data |
---|---|---|
0b8f754a | 1 | #include "../comedidev.h" |
27020ffe HS |
2 | |
3 | #include "comedi_fc.h" | |
0b8f754a BP |
4 | #include "pcm_common.h" |
5 | ||
0b8f754a BP |
6 | int comedi_pcm_cmdtest(struct comedi_device *dev, |
7 | struct comedi_subdevice *s, struct comedi_cmd *cmd) | |
8 | { | |
9 | int err = 0; | |
0b8f754a | 10 | |
27020ffe | 11 | /* Step 1 : check if triggers are trivially valid */ |
0b8f754a | 12 | |
27020ffe HS |
13 | err |= cfc_check_trigger_src(&cmd->start_src, TRIG_NOW | TRIG_INT); |
14 | err |= cfc_check_trigger_src(&cmd->scan_begin_src, TRIG_EXT); | |
15 | err |= cfc_check_trigger_src(&cmd->convert_src, TRIG_NOW); | |
16 | err |= cfc_check_trigger_src(&cmd->scan_end_src, TRIG_COUNT); | |
17 | err |= cfc_check_trigger_src(&cmd->stop_src, TRIG_COUNT | TRIG_NONE); | |
0b8f754a BP |
18 | |
19 | if (err) | |
20 | return 1; | |
21 | ||
27020ffe | 22 | /* Step 2a : make sure trigger sources are unique */ |
0b8f754a | 23 | |
27020ffe HS |
24 | err |= cfc_check_trigger_is_unique(cmd->start_src); |
25 | err |= cfc_check_trigger_is_unique(cmd->stop_src); | |
26 | ||
27 | /* Step 2b : and mutually compatible */ | |
0b8f754a BP |
28 | |
29 | if (err) | |
30 | return 2; | |
31 | ||
c563065b | 32 | /* Step 3: check if arguments are trivially valid */ |
0b8f754a | 33 | |
c563065b HS |
34 | err |= cfc_check_trigger_arg_is(&cmd->start_arg, 0); |
35 | err |= cfc_check_trigger_arg_is(&cmd->scan_begin_arg, 0); | |
36 | err |= cfc_check_trigger_arg_is(&cmd->convert_arg, 0); | |
37 | err |= cfc_check_trigger_arg_is(&cmd->scan_end_arg, cmd->chanlist_len); | |
0b8f754a BP |
38 | |
39 | switch (cmd->stop_src) { | |
40 | case TRIG_COUNT: | |
41 | /* any count allowed */ | |
42 | break; | |
43 | case TRIG_NONE: | |
c563065b | 44 | err |= cfc_check_trigger_arg_is(&cmd->stop_arg, 0); |
0b8f754a BP |
45 | break; |
46 | default: | |
47 | break; | |
48 | } | |
49 | ||
50 | if (err) | |
51 | return 3; | |
52 | ||
53 | /* step 4: fix up any arguments */ | |
54 | ||
55 | /* if (err) return 4; */ | |
56 | ||
57 | return 0; | |
58 | } | |
0b8f754a | 59 | EXPORT_SYMBOL(comedi_pcm_cmdtest); |
90f703d3 AT |
60 | |
61 | MODULE_AUTHOR("Comedi http://www.comedi.org"); | |
62 | MODULE_DESCRIPTION("Comedi low-level driver"); | |
63 | MODULE_LICENSE("GPL"); |