2 lib/insn_config_wrappers.c
3 wrappers for various INSN_CONFIG instructions
5 COMEDILIB - Linux Control and Measurement Device Interface Library
6 Copyright (C) 1997-2001 David A. Schleef <ds@schleef.org>
7 Copyright (C) 2008 Frank Mori Hess <fmhess@users.sourceforge.net>
9 This library is free software; you can redistribute it and/or
10 modify it under the terms of the GNU Lesser General Public
11 License as published by the Free Software Foundation; either
12 version 2.1 of the License, or (at your option) any later version.
14 This library is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 Lesser General Public License for more details.
19 You should have received a copy of the GNU Lesser General Public
20 License along with this library; if not, write to the Free Software
21 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
27 #include "libinternal.h"
29 EXPORT_ALIAS_DEFAULT(_comedi_reset,comedi_reset,0.9.0);
30 int _comedi_reset(comedi_t *device, unsigned subdevice)
35 memset(&insn, 0, sizeof(comedi_insn));
36 insn.insn = INSN_CONFIG;
37 insn.subdev = subdevice;
40 insn.n = sizeof(data) / sizeof(data[0]);
41 data[0] = INSN_CONFIG_RESET;
43 if(comedi_do_insn(device, &insn) >= 0) return 0;
47 EXPORT_ALIAS_DEFAULT(_comedi_arm,comedi_arm,0.9.0);
48 int _comedi_arm(comedi_t *device, unsigned subdevice, unsigned target)
53 memset(&insn, 0, sizeof(comedi_insn));
54 insn.insn = INSN_CONFIG;
55 insn.subdev = subdevice;
58 insn.n = sizeof(data) / sizeof(data[0]);
59 data[0] = INSN_CONFIG_ARM;
62 if(comedi_do_insn(device, &insn) >= 0) return 0;
66 EXPORT_ALIAS_DEFAULT(_comedi_set_counter_mode,comedi_set_counter_mode,0.9.0);
67 int _comedi_set_counter_mode(comedi_t *device, unsigned subdevice, unsigned mode_bits)
72 memset(&insn, 0, sizeof(comedi_insn));
73 insn.insn = INSN_CONFIG;
74 insn.subdev = subdevice;
77 insn.n = sizeof(data) / sizeof(data[0]);
78 data[0] = INSN_CONFIG_SET_COUNTER_MODE;
81 if(comedi_do_insn(device, &insn) >= 0) return 0;
85 EXPORT_ALIAS_DEFAULT(_comedi_set_clock_source,comedi_set_clock_source,0.9.0);
86 int _comedi_set_clock_source(comedi_t *device, unsigned subdevice, unsigned clock, unsigned period_ns)
91 memset(&insn, 0, sizeof(comedi_insn));
92 insn.insn = INSN_CONFIG;
93 insn.subdev = subdevice;
96 insn.n = sizeof(data) / sizeof(data[0]);
97 data[0] = INSN_CONFIG_SET_CLOCK_SRC;
101 if(comedi_do_insn(device, &insn) >= 0) return 0;
105 EXPORT_ALIAS_DEFAULT(_comedi_set_filter,comedi_set_filter,0.9.0);
106 int _comedi_set_filter(comedi_t *device, unsigned subdevice, unsigned channel, unsigned filter)
111 memset(&insn, 0, sizeof(comedi_insn));
112 insn.insn = INSN_CONFIG;
113 insn.subdev = subdevice;
114 insn.chanspec = channel;
116 insn.n = sizeof(data) / sizeof(data[0]);
117 data[0] = INSN_CONFIG_FILTER;
120 if(comedi_do_insn(device, &insn) >= 0) return 0;
124 EXPORT_ALIAS_DEFAULT(_comedi_set_gate_source,comedi_set_gate_source,0.9.0);
125 int _comedi_set_gate_source(comedi_t *device, unsigned subdevice, unsigned gate_index, unsigned gate_source)
130 memset(&insn, 0, sizeof(comedi_insn));
131 insn.insn = INSN_CONFIG;
132 insn.subdev = subdevice;
135 insn.n = sizeof(data) / sizeof(data[0]);
136 data[0] = INSN_CONFIG_SET_GATE_SRC;
137 data[1] = gate_index;
138 data[2] = gate_source;
140 if(comedi_do_insn(device, &insn) >= 0) return 0;
144 EXPORT_ALIAS_DEFAULT(_comedi_internal_trigger,comedi_internal_trigger,0.9.0);
145 int comedi_internal_trigger(comedi_t *dev, unsigned subd, unsigned trignum)
150 memset(&insn, 0, sizeof(comedi_insn));
151 insn.insn = INSN_INTTRIG;
158 if(comedi_do_insn(dev, &insn) >= 0) return 0;
162 EXPORT_ALIAS_DEFAULT(_comedi_set_other_source,comedi_set_other_source,0.9.0);
163 int _comedi_set_other_source(comedi_t *device, unsigned subdevice,
164 unsigned other, unsigned source)
170 memset(&insn, 0, sizeof(comedi_insn));
171 insn.insn = INSN_CONFIG;
172 insn.subdev = subdevice;
175 insn.n = sizeof(data) / sizeof(data[0]);
176 data[0] = INSN_CONFIG_SET_OTHER_SRC;
180 retval = comedi_do_insn(device, &insn);
183 fprintf(stderr, "%s: error:\n", __FUNCTION__);
184 comedi_perror("comedi_do_insn");
187 if(comedi_do_insn(device, &insn) >= 0) return 0;
191 EXPORT_ALIAS_DEFAULT(_comedi_set_routing,comedi_set_routing,0.9.0);
192 int _comedi_set_routing(comedi_t *device, unsigned subdevice, unsigned channel, unsigned routing)
197 memset(&insn, 0, sizeof(comedi_insn));
198 insn.insn = INSN_CONFIG;
199 insn.subdev = subdevice;
200 insn.chanspec = channel;
202 insn.n = sizeof(data) / sizeof(data[0]);
203 data[0] = INSN_CONFIG_SET_ROUTING;
206 if(comedi_do_insn(device, &insn) >= 0) return 0;