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)