Added more INSN_CONFIG wrappers: comedi_get_clock_source(),
comedi_get_gate_source(), and comedi_get_routing(). Added "channel" parameter to some of the INSN_CONFIG wrappers.
This commit is contained in:
parent
76791bfeed
commit
a06bba542a
8 changed files with 202 additions and 29 deletions
|
@ -78,13 +78,13 @@ int ni_gpct_configure_buffered_event_counting(comedi_t *device, unsigned subdevi
|
||||||
|
|
||||||
#if 1
|
#if 1
|
||||||
// PFI gate select works for e and m series
|
// PFI gate select works for e and m series
|
||||||
retval = comedi_set_gate_source(device, subdevice, 0, NI_GPCT_PFI_GATE_SELECT(gate_pfi_channel) /*| CR_EDGE*/);
|
retval = comedi_set_gate_source(device, subdevice, 0, 0, NI_GPCT_PFI_GATE_SELECT(gate_pfi_channel) /*| CR_EDGE*/);
|
||||||
#else
|
#else
|
||||||
// gate pin gate select works for 660x
|
// gate pin gate select works for 660x
|
||||||
retval = comedi_set_gate_source(device, subdevice, 0, NI_GPCT_GATE_PIN_i_GATE_SELECT /*| CR_EDGE*/);
|
retval = comedi_set_gate_source(device, subdevice, 0, 0, NI_GPCT_GATE_PIN_i_GATE_SELECT /*| CR_EDGE*/);
|
||||||
#endif
|
#endif
|
||||||
if(retval < 0) return retval;
|
if(retval < 0) return retval;
|
||||||
retval = comedi_set_gate_source(device, subdevice, 1, NI_GPCT_DISABLED_GATE_SELECT | CR_EDGE);
|
retval = comedi_set_gate_source(device, subdevice, 0, 1, NI_GPCT_DISABLED_GATE_SELECT | CR_EDGE);
|
||||||
if(retval < 0)
|
if(retval < 0)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Failed to set second gate source. This is expected for older boards (e-series, etc.)\n"
|
fprintf(stderr, "Failed to set second gate source. This is expected for older boards (e-series, etc.)\n"
|
||||||
|
@ -106,7 +106,7 @@ int ni_gpct_configure_buffered_event_counting(comedi_t *device, unsigned subdevi
|
||||||
counter_mode |= NI_GPCT_STOP_ON_GATE_BITS;
|
counter_mode |= NI_GPCT_STOP_ON_GATE_BITS;
|
||||||
// don't disarm on terminal count or gate signal
|
// don't disarm on terminal count or gate signal
|
||||||
counter_mode |= NI_GPCT_NO_HARDWARE_DISARM_BITS;
|
counter_mode |= NI_GPCT_NO_HARDWARE_DISARM_BITS;
|
||||||
retval = comedi_set_counter_mode(device, subdevice, counter_mode);
|
retval = comedi_set_counter_mode(device, subdevice, 0, counter_mode);
|
||||||
if(retval < 0) return retval;
|
if(retval < 0) return retval;
|
||||||
|
|
||||||
/* Set initial counter value by writing to channel 0.*/
|
/* Set initial counter value by writing to channel 0.*/
|
||||||
|
|
|
@ -43,11 +43,11 @@ int ni_gpct_start_encoder(comedi_t *device, unsigned subdevice,
|
||||||
/* set "load b" register to initial_value by writing to channel 2 */
|
/* set "load b" register to initial_value by writing to channel 2 */
|
||||||
retval = comedi_data_write(device, subdevice, 2, 0, 0, initial_value);
|
retval = comedi_data_write(device, subdevice, 2, 0, 0, initial_value);
|
||||||
|
|
||||||
comedi_set_gate_source(device, subdevice, 0, NI_GPCT_DISABLED_GATE_SELECT);
|
comedi_set_gate_source(device, subdevice, 0, 0, NI_GPCT_DISABLED_GATE_SELECT);
|
||||||
comedi_set_gate_source(device, subdevice, 1, NI_GPCT_DISABLED_GATE_SELECT);
|
comedi_set_gate_source(device, subdevice, 0, 1, NI_GPCT_DISABLED_GATE_SELECT);
|
||||||
comedi_set_other_source(device, subdevice, NI_GPCT_SOURCE_ENCODER_A, a);
|
comedi_set_other_source(device, subdevice, 0, NI_GPCT_SOURCE_ENCODER_A, a);
|
||||||
comedi_set_other_source(device, subdevice, NI_GPCT_SOURCE_ENCODER_B, b);
|
comedi_set_other_source(device, subdevice, 0, NI_GPCT_SOURCE_ENCODER_B, b);
|
||||||
comedi_set_other_source(device, subdevice, NI_GPCT_SOURCE_ENCODER_Z, z);
|
comedi_set_other_source(device, subdevice, 0, NI_GPCT_SOURCE_ENCODER_Z, z);
|
||||||
|
|
||||||
counter_mode = (NI_GPCT_COUNTING_MODE_QUADRATURE_X4_BITS |
|
counter_mode = (NI_GPCT_COUNTING_MODE_QUADRATURE_X4_BITS |
|
||||||
NI_GPCT_COUNTING_DIRECTION_HW_UP_DOWN_BITS);
|
NI_GPCT_COUNTING_DIRECTION_HW_UP_DOWN_BITS);
|
||||||
|
@ -55,7 +55,7 @@ int ni_gpct_start_encoder(comedi_t *device, unsigned subdevice,
|
||||||
counter_mode |= (NI_GPCT_INDEX_ENABLE_BIT |
|
counter_mode |= (NI_GPCT_INDEX_ENABLE_BIT |
|
||||||
NI_GPCT_INDEX_PHASE_HIGH_A_HIGH_B_BITS);
|
NI_GPCT_INDEX_PHASE_HIGH_A_HIGH_B_BITS);
|
||||||
}
|
}
|
||||||
retval = comedi_set_counter_mode(device, subdevice, counter_mode);
|
retval = comedi_set_counter_mode(device, subdevice, 0, counter_mode);
|
||||||
if(retval < 0) return retval;
|
if(retval < 0) return retval;
|
||||||
|
|
||||||
retval = comedi_arm(device, subdevice, NI_GPCT_ARM_IMMEDIATE);
|
retval = comedi_arm(device, subdevice, NI_GPCT_ARM_IMMEDIATE);
|
||||||
|
|
|
@ -45,9 +45,9 @@ int ni_gpct_start_pulse_generator(comedi_t *device, unsigned subdevice, unsigned
|
||||||
retval = comedi_reset(device, subdevice);
|
retval = comedi_reset(device, subdevice);
|
||||||
if(retval < 0) return retval;
|
if(retval < 0) return retval;
|
||||||
|
|
||||||
retval = comedi_set_gate_source(device, subdevice, 0, NI_GPCT_DISABLED_GATE_SELECT | CR_EDGE);
|
retval = comedi_set_gate_source(device, subdevice, 0, 0, NI_GPCT_DISABLED_GATE_SELECT | CR_EDGE);
|
||||||
if(retval < 0) return retval;
|
if(retval < 0) return retval;
|
||||||
retval = comedi_set_gate_source(device, subdevice, 1, NI_GPCT_DISABLED_GATE_SELECT | CR_EDGE);
|
retval = comedi_set_gate_source(device, subdevice, 0, 1, NI_GPCT_DISABLED_GATE_SELECT | CR_EDGE);
|
||||||
if(retval < 0)
|
if(retval < 0)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Failed to set second gate source. This is expected for older boards (e-series, etc.)\n"
|
fprintf(stderr, "Failed to set second gate source. This is expected for older boards (e-series, etc.)\n"
|
||||||
|
@ -69,7 +69,7 @@ int ni_gpct_start_pulse_generator(comedi_t *device, unsigned subdevice, unsigned
|
||||||
counter_mode |= NI_GPCT_STOP_ON_GATE_BITS;
|
counter_mode |= NI_GPCT_STOP_ON_GATE_BITS;
|
||||||
// don't disarm on terminal count or gate signal
|
// don't disarm on terminal count or gate signal
|
||||||
counter_mode |= NI_GPCT_NO_HARDWARE_DISARM_BITS;
|
counter_mode |= NI_GPCT_NO_HARDWARE_DISARM_BITS;
|
||||||
retval = comedi_set_counter_mode(device, subdevice, counter_mode);
|
retval = comedi_set_counter_mode(device, subdevice, 0, counter_mode);
|
||||||
if(retval < 0) return retval;
|
if(retval < 0) return retval;
|
||||||
|
|
||||||
/* 20MHz clock */
|
/* 20MHz clock */
|
||||||
|
|
|
@ -39,9 +39,9 @@ int ni_gpct_start_simple_event_counting(comedi_t *device, unsigned subdevice)
|
||||||
retval = comedi_reset(device, subdevice);
|
retval = comedi_reset(device, subdevice);
|
||||||
if(retval < 0) return retval;
|
if(retval < 0) return retval;
|
||||||
|
|
||||||
retval = comedi_set_gate_source(device, subdevice, 0, NI_GPCT_GATE_PIN_GATE_SELECT(0) /* NI_GPCT_GATE_PIN_i_GATE_SELECT *//*| CR_EDGE*/);
|
retval = comedi_set_gate_source(device, subdevice, 0, 0, NI_GPCT_GATE_PIN_GATE_SELECT(0) /* NI_GPCT_GATE_PIN_i_GATE_SELECT *//*| CR_EDGE*/);
|
||||||
if(retval < 0) return retval;
|
if(retval < 0) return retval;
|
||||||
retval = comedi_set_gate_source(device, subdevice, 1, NI_GPCT_DISABLED_GATE_SELECT | CR_EDGE);
|
retval = comedi_set_gate_source(device, subdevice, 0, 1, NI_GPCT_DISABLED_GATE_SELECT | CR_EDGE);
|
||||||
if(retval < 0)
|
if(retval < 0)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Failed to set second gate source. This is expected for older boards (e-series, etc.)\n"
|
fprintf(stderr, "Failed to set second gate source. This is expected for older boards (e-series, etc.)\n"
|
||||||
|
@ -61,7 +61,7 @@ int ni_gpct_start_simple_event_counting(comedi_t *device, unsigned subdevice)
|
||||||
counter_mode |= NI_GPCT_STOP_ON_GATE_BITS;
|
counter_mode |= NI_GPCT_STOP_ON_GATE_BITS;
|
||||||
// don't disarm on terminal count or gate signal
|
// don't disarm on terminal count or gate signal
|
||||||
counter_mode |= NI_GPCT_NO_HARDWARE_DISARM_BITS;
|
counter_mode |= NI_GPCT_NO_HARDWARE_DISARM_BITS;
|
||||||
retval = comedi_set_counter_mode(device, subdevice, counter_mode);
|
retval = comedi_set_counter_mode(device, subdevice, 0, counter_mode);
|
||||||
if(retval < 0) return retval;
|
if(retval < 0) return retval;
|
||||||
|
|
||||||
/* set initial counter value by writing to channel 0. The "load a" and "load b" registers can be
|
/* set initial counter value by writing to channel 0. The "load a" and "load b" registers can be
|
||||||
|
|
|
@ -14,6 +14,80 @@ Description:
|
||||||
Returns:
|
Returns:
|
||||||
0 on success, -1 on error.
|
0 on success, -1 on error.
|
||||||
|
|
||||||
|
Function: comedi_get_clock_source -- get master clock for a subdevice
|
||||||
|
Retval: int
|
||||||
|
Param: comedi_t * device
|
||||||
|
Param: unsigned int subdevice
|
||||||
|
Param: unsigned int *clock
|
||||||
|
Param: unsigned int *period_ns
|
||||||
|
Status: alpha
|
||||||
|
Description:
|
||||||
|
This function queries the master clock for a subdevice, as
|
||||||
|
set by
|
||||||
|
<link linkend="func-ref-comedi-set-clock-source">comedi_set_clock_source()</link>.
|
||||||
|
The currently configured master clock
|
||||||
|
will be written to *<parameter>clock</parameter>.
|
||||||
|
The possible values and their corresponding clocks are
|
||||||
|
driver-dependant.
|
||||||
|
The frequency of the clock in nanoseconds (or zero if it is unknown)
|
||||||
|
will be written to
|
||||||
|
*<parameter>period_ns</parameter>.
|
||||||
|
|
||||||
|
It is safe to pass NULL pointers as the <parameter>clock</parameter> or
|
||||||
|
<parameter>period_ns</parameter>
|
||||||
|
parameters. This function is only useable
|
||||||
|
on subdevices that provide support for the INSN_CONFIG_GET_CLOCK_SOURCE
|
||||||
|
configuration instruction.
|
||||||
|
Returns:
|
||||||
|
0 on success, -1 on error.
|
||||||
|
|
||||||
|
Function: comedi_get_gate_source -- get gate for a subdevice
|
||||||
|
Retval: int
|
||||||
|
Param: comedi_t * device
|
||||||
|
Param: unsigned int subdevice
|
||||||
|
Param: unsigned int channel
|
||||||
|
Param: unsigned int gate_index
|
||||||
|
Param: unsigned int *gate_source
|
||||||
|
Status: alpha
|
||||||
|
Description:
|
||||||
|
This function queries the gate for a subdevice, as
|
||||||
|
set by
|
||||||
|
<link linkend="func-ref-comedi-set-gate-source">comedi_set_gate_source()</link>.
|
||||||
|
The currently configured gate source
|
||||||
|
will be written to *<parameter>gate_source</parameter>.
|
||||||
|
The possible values and their corresponding gates are
|
||||||
|
driver-dependant. If the subdevice does not
|
||||||
|
support configuring its gates on a per-channel basis, then the
|
||||||
|
<parameter>channel</parameter> parameter will be ignored.
|
||||||
|
|
||||||
|
This function is only useable
|
||||||
|
on subdevices that provide support for the INSN_CONFIG_GET_GATE_SOURCE
|
||||||
|
configuration instruction.
|
||||||
|
Returns:
|
||||||
|
0 on success, -1 on error.
|
||||||
|
|
||||||
|
Function: comedi_get_routing -- get routing for an output
|
||||||
|
Retval: int
|
||||||
|
Param: comedi_t * device
|
||||||
|
Param: unsigned int subdevice
|
||||||
|
Param: unsigned int channel
|
||||||
|
Param: unsigned int *routing
|
||||||
|
Status: alpha
|
||||||
|
Description:
|
||||||
|
This function queries the routing for an output, as
|
||||||
|
set by
|
||||||
|
<link linkend="func-ref-comedi-set-routing">comedi_set_routing()</link>.
|
||||||
|
The currently configured routing
|
||||||
|
will be written to *<parameter>routing</parameter>.
|
||||||
|
The possible values and their corresponding routings are
|
||||||
|
driver-dependant.
|
||||||
|
|
||||||
|
This function is only useable
|
||||||
|
on subdevices that provide support for the INSN_CONFIG_GET_ROUTING
|
||||||
|
configuration instruction.
|
||||||
|
Returns:
|
||||||
|
0 on success, -1 on error.
|
||||||
|
|
||||||
Function: comedi_reset -- reset a subdevice
|
Function: comedi_reset -- reset a subdevice
|
||||||
Retval: int
|
Retval: int
|
||||||
Param: comedi_t * device
|
Param: comedi_t * device
|
||||||
|
@ -45,6 +119,9 @@ Description:
|
||||||
the driver to support TRIG_TIMER sources in commands while
|
the driver to support TRIG_TIMER sources in commands while
|
||||||
using the external clock.
|
using the external clock.
|
||||||
|
|
||||||
|
The clock may be queried with the <link linkend="func-ref-comedi-get-clock-source">comedi_get_clock_source()</link>
|
||||||
|
function.
|
||||||
|
|
||||||
This function is only useable
|
This function is only useable
|
||||||
on subdevices that provide support for the INSN_CONFIG_SET_CLOCK_SOURCE
|
on subdevices that provide support for the INSN_CONFIG_SET_CLOCK_SOURCE
|
||||||
configuration instruction.
|
configuration instruction.
|
||||||
|
@ -55,11 +132,18 @@ Function: comedi_set_counter_mode -- change mode of a counter subdevice
|
||||||
Retval: int
|
Retval: int
|
||||||
Param: comedi_t * device
|
Param: comedi_t * device
|
||||||
Param: unsigned int subdevice
|
Param: unsigned int subdevice
|
||||||
|
Param: unsigned int channel
|
||||||
Param: unsigned int mode
|
Param: unsigned int mode
|
||||||
Status: alpha
|
Status: alpha
|
||||||
Description:
|
Description:
|
||||||
This function configures a counter subdevice. The meaning of the
|
This function configures a counter subdevice. The meaning of the
|
||||||
<parameter>mode</parameter> parameter is driver-dependent. It is only useable
|
<parameter>mode</parameter> parameter is driver-dependent.
|
||||||
|
If the subdevice does not
|
||||||
|
support configuring its mode on a per-channel basis, then the
|
||||||
|
<parameter>channel</parameter>
|
||||||
|
parameter will be ignored.
|
||||||
|
|
||||||
|
It is only useable
|
||||||
on subdevices that provide support for the INSN_CONFIG_SET_COUNTER_MODE
|
on subdevices that provide support for the INSN_CONFIG_SET_COUNTER_MODE
|
||||||
configuration instruction.
|
configuration instruction.
|
||||||
Returns:
|
Returns:
|
||||||
|
@ -91,6 +175,8 @@ Returns:
|
||||||
Function: comedi_set_gate_source -- select gate source for a subdevice
|
Function: comedi_set_gate_source -- select gate source for a subdevice
|
||||||
Retval: int
|
Retval: int
|
||||||
Param: comedi_t * device
|
Param: comedi_t * device
|
||||||
|
Param: unsigned int subdevice
|
||||||
|
Param: unsigned int channel
|
||||||
Param: unsigned int gate_index
|
Param: unsigned int gate_index
|
||||||
Param: unsigned int gate_source
|
Param: unsigned int gate_source
|
||||||
Status: alpha
|
Status: alpha
|
||||||
|
@ -101,8 +187,12 @@ Description:
|
||||||
from 0 to N-1 for a subdevice with N different gates.
|
from 0 to N-1 for a subdevice with N different gates.
|
||||||
The <parameter>gate_source</parameter> parameter selects which signal you wish to
|
The <parameter>gate_source</parameter> parameter selects which signal you wish to
|
||||||
use as
|
use as
|
||||||
the gate, and is also driver-dependent.
|
the gate, and is also driver-dependent. If the subdevice does not
|
||||||
|
support configuring its gates on a per-channel basis, then the
|
||||||
|
<parameter>channel</parameter> parameter will be ignored.
|
||||||
|
|
||||||
|
You may query the gate source with the <link linkend="func-ref-comedi-get-gate-source">comedi_get_gate_source()</link>
|
||||||
|
function.
|
||||||
This function is only useable
|
This function is only useable
|
||||||
on subdevices that provide support for the INSN_CONFIG_SET_GATE_SOURCE
|
on subdevices that provide support for the INSN_CONFIG_SET_GATE_SOURCE
|
||||||
configuration instruction.
|
configuration instruction.
|
||||||
|
@ -113,6 +203,7 @@ Function: comedi_set_other_source -- select source signal for something other th
|
||||||
Retval: int
|
Retval: int
|
||||||
Param: comedi_t * device
|
Param: comedi_t * device
|
||||||
Param: unsigned int subdevice
|
Param: unsigned int subdevice
|
||||||
|
Param: unsigned int channel
|
||||||
Param: unsigned int other
|
Param: unsigned int other
|
||||||
Param: unsigned int source
|
Param: unsigned int source
|
||||||
Status: alpha
|
Status: alpha
|
||||||
|
@ -122,7 +213,10 @@ Description:
|
||||||
comedi_set_clock_source()). The <parameter>other</parameter> parameter selects
|
comedi_set_clock_source()). The <parameter>other</parameter> parameter selects
|
||||||
which "other" we are configuring, and is driver-dependent. The
|
which "other" we are configuring, and is driver-dependent. The
|
||||||
<parameter>source</parameter> selects the source we which to use for the
|
<parameter>source</parameter> selects the source we which to use for the
|
||||||
"other".
|
"other". If the subdevice does not
|
||||||
|
support configuring its "other" sources on a per-channel basis, then the
|
||||||
|
<parameter>channel</parameter>
|
||||||
|
parameter will be ignored.
|
||||||
|
|
||||||
As an example, this function is used to select which PFI digital input channels
|
As an example, this function is used to select which PFI digital input channels
|
||||||
should be used as the A/B/Z signals when running a counter on an NI M-Series board as
|
should be used as the A/B/Z signals when running a counter on an NI M-Series board as
|
||||||
|
@ -137,7 +231,7 @@ Description:
|
||||||
Returns:
|
Returns:
|
||||||
0 on success, -1 on error.
|
0 on success, -1 on error.
|
||||||
|
|
||||||
Function: comedi_set_routing -- select a signal for an output
|
Function: comedi_set_routing -- select a routing for an output
|
||||||
Retval: int
|
Retval: int
|
||||||
Param: comedi_t * device
|
Param: comedi_t * device
|
||||||
Param: unsigned int subdevice
|
Param: unsigned int subdevice
|
||||||
|
@ -151,6 +245,8 @@ Description:
|
||||||
parameter selects which signal should be routed to appear on the
|
parameter selects which signal should be routed to appear on the
|
||||||
selected output channel, and is driver-dependant.
|
selected output channel, and is driver-dependant.
|
||||||
|
|
||||||
|
The routing may be queried with the
|
||||||
|
<link linkend="func-ref-comedi-get-routing">comedi_get_routing()</link> function.
|
||||||
This function is only useable
|
This function is only useable
|
||||||
on subdevices that provide support for the INSN_CONFIG_SET_ROUTING
|
on subdevices that provide support for the INSN_CONFIG_SET_ROUTING
|
||||||
configuration instruction.
|
configuration instruction.
|
||||||
|
|
|
@ -275,11 +275,15 @@ int comedi_internal_trigger(comedi_t *dev, unsigned subd, unsigned trignum);
|
||||||
/* INSN_CONFIG wrappers */
|
/* INSN_CONFIG wrappers */
|
||||||
int comedi_arm(comedi_t *device, unsigned subdevice, unsigned source);
|
int comedi_arm(comedi_t *device, unsigned subdevice, unsigned source);
|
||||||
int comedi_reset(comedi_t *device, unsigned subdevice);
|
int comedi_reset(comedi_t *device, unsigned subdevice);
|
||||||
int comedi_set_counter_mode(comedi_t *device, unsigned subdevice, unsigned mode_bits);
|
int comedi_get_clock_source(comedi_t *device, unsigned subdevice, unsigned *clock, unsigned *period_ns);
|
||||||
|
int comedi_get_gate_source(comedi_t *device, unsigned subdevice, unsigned channel,
|
||||||
|
unsigned gate, unsigned *source);
|
||||||
|
int comedi_get_routing(comedi_t *device, unsigned subdevice, unsigned channel, unsigned *routing);
|
||||||
|
int comedi_set_counter_mode(comedi_t *device, unsigned subdevice, unsigned channel, unsigned mode_bits);
|
||||||
int comedi_set_clock_source(comedi_t *device, unsigned subdevice, unsigned clock, unsigned period_ns);
|
int comedi_set_clock_source(comedi_t *device, unsigned subdevice, unsigned clock, unsigned period_ns);
|
||||||
int comedi_set_filter(comedi_t *device, unsigned subdevice, unsigned channel, unsigned filter);
|
int comedi_set_filter(comedi_t *device, unsigned subdevice, unsigned channel, unsigned filter);
|
||||||
int comedi_set_gate_source(comedi_t *device, unsigned subdevice, unsigned gate_index, unsigned gate_source);
|
int comedi_set_gate_source(comedi_t *device, unsigned subdevice, unsigned channel, unsigned gate_index, unsigned gate_source);
|
||||||
int comedi_set_other_source(comedi_t *device, unsigned subdevice,
|
int comedi_set_other_source(comedi_t *device, unsigned subdevice, unsigned channel,
|
||||||
unsigned other, unsigned source);
|
unsigned other, unsigned source);
|
||||||
int comedi_set_routing(comedi_t *device, unsigned subdevice, unsigned channel, unsigned routing);
|
int comedi_set_routing(comedi_t *device, unsigned subdevice, unsigned channel, unsigned routing);
|
||||||
|
|
||||||
|
|
|
@ -63,8 +63,77 @@ int _comedi_arm(comedi_t *device, unsigned subdevice, unsigned target)
|
||||||
else return -1;
|
else return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EXPORT_ALIAS_DEFAULT(_comedi_get_clock_source,comedi_get_clock_source,0.9.0);
|
||||||
|
int _comedi_get_clock_source(comedi_t *device, unsigned subdevice, unsigned *clock, unsigned *period_ns)
|
||||||
|
{
|
||||||
|
comedi_insn insn;
|
||||||
|
lsampl_t data[3];
|
||||||
|
int retval;
|
||||||
|
|
||||||
|
memset(&insn, 0, sizeof(comedi_insn));
|
||||||
|
insn.insn = INSN_CONFIG;
|
||||||
|
insn.subdev = subdevice;
|
||||||
|
insn.chanspec = 0;
|
||||||
|
insn.data = data;
|
||||||
|
insn.n = sizeof(data) / sizeof(data[0]);
|
||||||
|
memset(data, 0, insn.n * sizeof(data[0]));
|
||||||
|
data[0] = INSN_CONFIG_GET_CLOCK_SRC;
|
||||||
|
|
||||||
|
retval = comedi_do_insn(device, &insn);
|
||||||
|
if(retval < 0) return -1;
|
||||||
|
if(clock) *clock = insn.data[1];
|
||||||
|
if(period_ns) *period_ns = insn.data[2];
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
EXPORT_ALIAS_DEFAULT(_comedi_get_gate_source,comedi_get_gate_source,0.9.0);
|
||||||
|
int _comedi_get_gate_source(comedi_t *device, unsigned subdevice, unsigned channel,
|
||||||
|
unsigned gate, unsigned *source)
|
||||||
|
{
|
||||||
|
comedi_insn insn;
|
||||||
|
lsampl_t data[3];
|
||||||
|
int retval;
|
||||||
|
|
||||||
|
memset(&insn, 0, sizeof(comedi_insn));
|
||||||
|
insn.insn = INSN_CONFIG;
|
||||||
|
insn.subdev = subdevice;
|
||||||
|
insn.chanspec = channel;
|
||||||
|
insn.data = data;
|
||||||
|
insn.n = sizeof(data) / sizeof(data[0]);
|
||||||
|
memset(insn.data, 0, insn.n * sizeof(insn.data[0]));
|
||||||
|
data[0] = INSN_CONFIG_GET_GATE_SRC;
|
||||||
|
data[1] = gate;
|
||||||
|
|
||||||
|
retval = comedi_do_insn(device, &insn);
|
||||||
|
if(retval < 0) return -1;
|
||||||
|
if(source) *source = insn.data[2];
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
EXPORT_ALIAS_DEFAULT(_comedi_get_routing,comedi_get_routing,0.9.0);
|
||||||
|
int _comedi_get_routing(comedi_t *device, unsigned subdevice, unsigned channel, unsigned *routing)
|
||||||
|
{
|
||||||
|
comedi_insn insn;
|
||||||
|
lsampl_t data[2];
|
||||||
|
int retval;
|
||||||
|
|
||||||
|
memset(&insn, 0, sizeof(comedi_insn));
|
||||||
|
insn.insn = INSN_CONFIG;
|
||||||
|
insn.subdev = subdevice;
|
||||||
|
insn.chanspec = channel;
|
||||||
|
insn.data = data;
|
||||||
|
insn.n = sizeof(data) / sizeof(data[0]);
|
||||||
|
memset(insn.data, 0, insn.n * sizeof(insn.data[0]));
|
||||||
|
data[0] = INSN_CONFIG_GET_ROUTING;
|
||||||
|
|
||||||
|
retval = comedi_do_insn(device, &insn);
|
||||||
|
if(retval < 0) return -1;
|
||||||
|
if(routing) *routing = insn.data[1];
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
EXPORT_ALIAS_DEFAULT(_comedi_set_counter_mode,comedi_set_counter_mode,0.9.0);
|
EXPORT_ALIAS_DEFAULT(_comedi_set_counter_mode,comedi_set_counter_mode,0.9.0);
|
||||||
int _comedi_set_counter_mode(comedi_t *device, unsigned subdevice, unsigned mode_bits)
|
int _comedi_set_counter_mode(comedi_t *device, unsigned subdevice, unsigned channel, unsigned mode_bits)
|
||||||
{
|
{
|
||||||
comedi_insn insn;
|
comedi_insn insn;
|
||||||
lsampl_t data[2];
|
lsampl_t data[2];
|
||||||
|
@ -72,7 +141,7 @@ int _comedi_set_counter_mode(comedi_t *device, unsigned subdevice, unsigned mode
|
||||||
memset(&insn, 0, sizeof(comedi_insn));
|
memset(&insn, 0, sizeof(comedi_insn));
|
||||||
insn.insn = INSN_CONFIG;
|
insn.insn = INSN_CONFIG;
|
||||||
insn.subdev = subdevice;
|
insn.subdev = subdevice;
|
||||||
insn.chanspec = 0;
|
insn.chanspec = channel;
|
||||||
insn.data = data;
|
insn.data = data;
|
||||||
insn.n = sizeof(data) / sizeof(data[0]);
|
insn.n = sizeof(data) / sizeof(data[0]);
|
||||||
data[0] = INSN_CONFIG_SET_COUNTER_MODE;
|
data[0] = INSN_CONFIG_SET_COUNTER_MODE;
|
||||||
|
@ -122,7 +191,8 @@ int _comedi_set_filter(comedi_t *device, unsigned subdevice, unsigned channel, u
|
||||||
}
|
}
|
||||||
|
|
||||||
EXPORT_ALIAS_DEFAULT(_comedi_set_gate_source,comedi_set_gate_source,0.9.0);
|
EXPORT_ALIAS_DEFAULT(_comedi_set_gate_source,comedi_set_gate_source,0.9.0);
|
||||||
int _comedi_set_gate_source(comedi_t *device, unsigned subdevice, unsigned gate_index, unsigned gate_source)
|
int _comedi_set_gate_source(comedi_t *device, unsigned subdevice, unsigned channel,
|
||||||
|
unsigned gate_index, unsigned gate_source)
|
||||||
{
|
{
|
||||||
comedi_insn insn;
|
comedi_insn insn;
|
||||||
lsampl_t data[3];
|
lsampl_t data[3];
|
||||||
|
@ -130,7 +200,7 @@ int _comedi_set_gate_source(comedi_t *device, unsigned subdevice, unsigned gate_
|
||||||
memset(&insn, 0, sizeof(comedi_insn));
|
memset(&insn, 0, sizeof(comedi_insn));
|
||||||
insn.insn = INSN_CONFIG;
|
insn.insn = INSN_CONFIG;
|
||||||
insn.subdev = subdevice;
|
insn.subdev = subdevice;
|
||||||
insn.chanspec = 0;
|
insn.chanspec = channel;
|
||||||
insn.data = data;
|
insn.data = data;
|
||||||
insn.n = sizeof(data) / sizeof(data[0]);
|
insn.n = sizeof(data) / sizeof(data[0]);
|
||||||
data[0] = INSN_CONFIG_SET_GATE_SRC;
|
data[0] = INSN_CONFIG_SET_GATE_SRC;
|
||||||
|
@ -161,7 +231,7 @@ int comedi_internal_trigger(comedi_t *dev, unsigned subd, unsigned trignum)
|
||||||
|
|
||||||
EXPORT_ALIAS_DEFAULT(_comedi_set_other_source,comedi_set_other_source,0.9.0);
|
EXPORT_ALIAS_DEFAULT(_comedi_set_other_source,comedi_set_other_source,0.9.0);
|
||||||
int _comedi_set_other_source(comedi_t *device, unsigned subdevice,
|
int _comedi_set_other_source(comedi_t *device, unsigned subdevice,
|
||||||
unsigned other, unsigned source)
|
unsigned channel, unsigned other, unsigned source)
|
||||||
{
|
{
|
||||||
comedi_insn insn;
|
comedi_insn insn;
|
||||||
lsampl_t data[3];
|
lsampl_t data[3];
|
||||||
|
@ -170,7 +240,7 @@ int _comedi_set_other_source(comedi_t *device, unsigned subdevice,
|
||||||
memset(&insn, 0, sizeof(comedi_insn));
|
memset(&insn, 0, sizeof(comedi_insn));
|
||||||
insn.insn = INSN_CONFIG;
|
insn.insn = INSN_CONFIG;
|
||||||
insn.subdev = subdevice;
|
insn.subdev = subdevice;
|
||||||
insn.chanspec = 0;
|
insn.chanspec = channel;
|
||||||
insn.data = data;
|
insn.data = data;
|
||||||
insn.n = sizeof(data) / sizeof(data[0]);
|
insn.n = sizeof(data) / sizeof(data[0]);
|
||||||
data[0] = INSN_CONFIG_SET_OTHER_SRC;
|
data[0] = INSN_CONFIG_SET_OTHER_SRC;
|
||||||
|
|
|
@ -98,6 +98,9 @@ v0.9.0 {
|
||||||
comedi_get_cmd_generic_timed;
|
comedi_get_cmd_generic_timed;
|
||||||
comedi_reset;
|
comedi_reset;
|
||||||
comedi_arm;
|
comedi_arm;
|
||||||
|
comedi_get_clock_source;
|
||||||
|
comedi_get_gate_source;
|
||||||
|
comedi_get_routing;
|
||||||
comedi_set_counter_mode;
|
comedi_set_counter_mode;
|
||||||
comedi_set_clock_source;
|
comedi_set_clock_source;
|
||||||
comedi_set_filter;
|
comedi_set_filter;
|
||||||
|
|
Loading…
Add table
Reference in a new issue