4.3.  Instructions for configuration

Section 4.2 explains how instructions are used to do acquisition on channels. This section explains how they are used to configure a subdevice. There are various sorts of configurations, and the specific information for each different configuration possibility is to be specified via the data buffer of the instruction data structure. (So, the pointer to a lsampl_t is misused as a pointer to an array with board-specific information.)

Using INSN_CONFIG as the insn member in an instruction data structure indicates that the instruction will not perform acquisition on a channel, but will configure that channel. The chanspec member in the comedi_insn data structure, contains the channel to be configured. The zeroth element of the data array is always an id that specifies what type of configuration instruction is being performed. The meaning of rest of the elements in the data array depend on the configuration instruction id. Some of the possible ids are summarised in the table below, along with the meanings of the data array elements for each type of configuration instruction.

data[0]Descriptionn (number of elements in data array)Meanings of data[1], ..., data[n-1]
INSN_CONFIG_DIO_INPUT Configure a DIO line as input. It is easier to use comedi_dio_config than to use this configuration instruction directly. 1 n/a
INSN_CONFIG_DIO_OUTPUT Configure a DIO line as output. It is easier to use comedi_dio_config than to use this configuration instruction directly. 1 n/a
INSN_CONFIG_ALT_SOURCE Select an alternate input source. This instruction is used by calibration programs to configure analog input channels which can be redirected to read internal calibration references. You need to set the CR_ALT_SOURCE flag in the chanspec when reading to actually read from the configured alternate input source. If you are using comedi_data_read, then the channel parameter can be bitwise or'd with the CR_ALT_SOURCE flag. 2 data[1]: alternate input source.
INSN_CONFIG_BLOCK_SIZE Specify block size for asynchonous command data. When performing streaming input, many boards accumulate samples in internal fifos and transfer them to the host computer in chunks. Some drivers let you suggest a size in bytes for how big a the chunks should be. This lets you tune how often the host computer is interrupted with a new chunk of data. 2 data[1]: The desired block size in bytes. The actual configured block size is writen back to data[1] after the instruction completes. This instruction acts purely as a query if the block size is set to zero.
INSN_CONFIG_DIO_QUERY Queries the configuration of a DIO line to see if it is an input or output. It is probably easier to use the comedilib function comedi_dio_get_config than to use this instruction directly. 2 data[1]: The instruction sets this element to either COMEDI_INPUT or COMEDI_OUTPUT.

See the comedilib demo program demo/choose_clock.c for an example of using a configuration instruction.