Provided by: libxdffileio-dev_0.3-1_amd64 bug

NAME

       xdf_set_chconf, xdf_get_chconf - set or get the configuration of a channel descriptor handle

SYNOPSIS

       #include <xdfio.h>

       int xdf_set_chconf(struct xdfch* ch, enum xdffield field, ...);
       int xdf_get_chconf(const struct xdfch* ch, enum xdffield field, ...);

DESCRIPTION

       xdf_set_chconf() sets the configuration of the channel referenced by ch according to the variable list of
       argument. This list is composed of successive couple grouping one variable of type enum xdffield defining
       the  feature to be set and a value whose type depends on the previous field type. The list must finish by
       XDF_NOF.

       xdf_get_chconf() gets the configuration of the channel referenced by ch according to the variable list of
       argument. The variable list is the same list terminated by XDF_NOF as for xdf_set_chconf() excepting that
       the second part of the couple is not that value but a pointer to the value.

       Both functions process the argument list from left to right.  This  means  that  if  a  particular  field
       request  provokes  an  error,  none  of  the  field requests on its right will be processed. The order of
       processing is also important for  field  requests  that  influences  the  value  of  other  fields  (like
       XDF_CF_STOTYPE).

       Here  is  the  list  of  admissible value. The expected type of value is provided in the parenthesis (the
       expected type of the value for xdf_set_chconf(), or a pointer to this  type  for  xdf_get_chconf()).  The
       default  value of each field is provided in squared brackets (however these defaults can be overridden by
       a call to xdf_set_conf(3) if the file is open for writing. If the file is opened for reading, the default
       are  meaningful  only  for  the  fields  XDF_CF_ARR*).   If  a  list of data formats is specified in curl
       brackets, it means that the field is supported only in those formats (no  list  means  that  all  formats
       support the field):

       XDF_CF_ARRINDEX (int) [0]
              Specify the array from/to which the channel value should be transfered. If the mode of the file is
              XDF_READ and the value is negative, the channel will not be read. If the mode is XDF_WRITE and the
              value is negative, the function will fail.

       XDF_CF_ARROFFSET (int) [0 for channel 0, packed channels for the rest]
              Specify the offset in the array from/to which the channel value should be transfered.

       XDF_CF_ARRDIGITAL (int) [0 if writing, 1 if reading]
              Indicate  that  the  data  in  the  array  from/to which the channel value should be transfered is
              provided in digital unit. This means in practice that no scaling is performed during the  transfer
              from/to the disk (non zero indicate no scaling).

       XDF_CF_ARRTYPE (enum xdftype) [same as XDF_CF_STOTYPE]
              specify the type in the channel should casted to/from when accessed in the array.

       XDF_CF_PMIN (double) [min of XDF_CF_ARRTYPE]
              Set/get the minimal value that a physical value can get. Cannot be set if XDF_READ.

       XDF_CF_PMAX (double) [max of XDF_CF_ARRTYPE]
              Set/get the maximal value that a physical value can get. Cannot be set if XDF_READ.

       XDF_CF_STOTYPE (enum xdftype) [any datatype supported by file type]
              Specify  the  type  stored  in  the  file of the channel value. If the XDF file has been opened in
              XDF_READ, this field cannot be set. If this field is successfully set, it will  set  as  well  the
              digital  minimum  (XDF_CF_DMIN)  and  the  digital maximum (XDF_CF_MAX) to the minimum and maximum
              values allowed by the data type.

       XDF_CF_DMIN (double) [min of XDF_CF_STOTYPE]
              Set/get the minimal value that a digital value can get. Cannot be set if XDF_READ.  This  is  also
              automatically set by XDF_CF_STOTYPE.

       XDF_CF_DMAX (double) [min of XDF_CF_STOTYPE]
              Set/get  the  maximal  value that a digital value can get. Cannot be set if XDF_READ. This is also
              automatically set by XDF_CF_STOTYPE.

       XDF_CF_LABEL (const char*) [""]
              Set/get the label of the channel. Cannot be set if XDF_READ.

       XDF_CF_UNIT (const char*) [""] {EDF BDF GDF}
              Set/get the unit of the channel. Cannot be set if XDF_READ.

       XDF_CF_TRANSDUCTER (const char*) [""] {EDF BDF GDF}
              Set/get the type of sensor used for this channel. Cannot be set if XDF_READ.

       XDF_CF_PREFILTERING (const char*) [""] {EDF BDF GDF}
              Set/get the information about the filters already applied on  channel  data.   Cannot  be  set  if
              XDF_READ.

       XDF_CF_ELECPOS (double[3]) [0,0,0] {GDF}
              Position of the sensor/electrode expressed in X,Y,Z components Cannot be set if XDF_READ.

       XDF_CF_IMPEDANCE (double) [0] {GDF}
              Impedance of the sensor/electrode. Cannot be set if XDF_READ.

RETURN VALUE

       The two functions returns 0 in case of success. Otherwise -1 is returned and errno is set appropriately.

ERROR

       EINVAL ch is NULL or field is not a proper value of the enumeration xdffield

       EPERM  The request submitted to xdf_set_chconf() is not allowed for this channel or is forbidden for file
              opened with the mode XDF_READ.

       EDOM   The value set in xdf_set_chconf() as digital or physical  min/max  (fields  XDF_CF_{D/P}{MIN/MAX})
              goes beyond the limits of respectively the stored or array data type.

EXAMPLES

       Example of usage of xdf_set_chconf():

              /* Assume xdf referenced an XDF file opened for writing */
              unsigned int iarray = 2, offset = 0;
              const char label[] = "Channel EEG";

              hchxdf ch = xdf_add_channel(xdf);
              xdf_set_chconf(ch, XDF_CF_ARRINDEX, iarray,
                                      XDF_CF_ARROFFSET, offset,
                                      XDF_CF_LABEL, label,
                                      XDF_NOF);

       Example of usage of xdf_get_chconf():

              /* Assume xdf referenced an XDF file opened for reading */
              unsigned int iarray, offset;
              const char label[128];

              hchxdf ch = xdf_get_channel(xdf, 1);
              xdf_get_chconf(ch, XDF_CF_ARRINDEX, &iarray,
                                      XDF_CF_ARROFFSET, &offset,
                                      XDF_CF_LABEL, &label,
                                      XDF_NOF);

              printf("iarray = %u\n", iarray);
              printf("offset = %u\n", offset);
              printf("label = %s\n", label);

SEE ALSO

       xdf_copy_chconf(3)