added comedi_dio_get_config()
authorFrank Mori Hess <fmhess@speakeasy.net>
Sun, 6 Mar 2005 17:42:56 +0000 (17:42 +0000)
committerFrank Mori Hess <fmhess@speakeasy.net>
Sun, 6 Mar 2005 17:42:56 +0000 (17:42 +0000)
doc/funcref
include/comedilib.h
lib/dio.c
lib/version_script

index 04e25e1798f42db63999537b6c3abaf120914ad3..fb68ca00675b3277455c29139d0ca2ee36b08946 100644 (file)
@@ -576,6 +576,22 @@ Description:
 
  If sucessful, 1 is returned, otherwise -1.
 
+Function: comedi_dio_get_config -- query input/output properties of channel
+Retval: int
+Param: comedi_t * device
+Param: unsigned int subdevice
+Param: unsigned int channel
+Param: unsigned int * direction
+Description:
+ The function comedi_dio_get_config() querys the configuration of
+ an individual channel
+ in a digital I/O subdevice (see comedi_dio_config()).
+ On success, the variable specified by the "direction" pointer will
+ be set to either COMEDI_INPUT or COMEDI_OUTPUT.
+
+ If sucessful, 0 is returned, otherwise -1.
+
+
 Function: comedi_dio_read -- read single bit from digital channel
 Retval: int
 Param: comedi_t * device
index f5ab0ae3fd6ca0f4b938dace8444a4400602b95f..b4905b5109848baf0144a84116afb65e4667aa81 100644 (file)
@@ -141,6 +141,8 @@ int comedi_data_write(comedi_t *it,unsigned int subd,unsigned int chan,
        unsigned int range,unsigned int aref,lsampl_t data);
 int comedi_dio_config(comedi_t *it,unsigned int subd,unsigned int chan,
        unsigned int dir);
+int comedi_dio_get_config(comedi_t *it,unsigned int subd,unsigned int chan,
+       unsigned int *dir);
 int comedi_dio_read(comedi_t *it,unsigned int subd,unsigned int chan,
        unsigned int *bit);
 int comedi_dio_write(comedi_t *it,unsigned int subd,unsigned int chan,
index 3aabb10e5f9fd50f2ff24d55d4aff3b391f3cdf2..def2aba1f79db96a903719638e2dca5b5c8cbcc5 100644 (file)
--- a/lib/dio.c
+++ b/lib/dio.c
@@ -79,6 +79,38 @@ int _comedi_dio_config(comedi_t *it,unsigned int subdev,unsigned int chan,unsign
        }
 }
 
+EXPORT_ALIAS_DEFAULT(_comedi_dio_get_config, comedi_dio_get_config, 0.7.23);
+int _comedi_dio_get_config(comedi_t *it,unsigned int subdev, unsigned int chan, unsigned int *io)
+{
+       subdevice *s;
+       comedi_insn insn;
+       lsampl_t data[2];
+       int retval;
+       
+       if(!valid_chan(it,subdev,chan))
+               return -1;
+       
+       s=it->subdevices+subdev;
+       if(s->type!=COMEDI_SUBD_DIO)
+               return -1;
+
+       if(it->has_insnlist_ioctl == 0)
+               return -1;
+       
+       memset(&insn,0,sizeof(insn));
+       insn.insn = INSN_CONFIG;
+       insn.n = sizeof(data) / sizeof(data[0]);
+       insn.data = data;
+       insn.subdev = subdev;
+       insn.chanspec = CR_PACK(chan,0,0);
+       data[0] = INSN_CONFIG_DIO_QUERY;
+
+       retval = comedi_do_insn(it,&insn);
+       if(retval < 0) return retval;
+       *io = data[1];
+       return 0;
+}
+
 EXPORT_ALIAS_DEFAULT(_comedi_dio_read,comedi_dio_read,0.7.18);
 int _comedi_dio_read(comedi_t *it,unsigned int subdev,unsigned int chan,
        unsigned int *val)
index 0a67f04d2ab7350b78a85a234b1b40a3be27109d..52aba8f591ed7716976011f5e27bdbfacf024684 100644 (file)
@@ -83,5 +83,6 @@ v0.7.20 {
 
 v0.7.23 {
        global:
+               comedi_dio_get_config;
                comedi_mark_buffer_written;
 } v0.7.20;