From: David Schleef Date: Mon, 28 May 2001 02:36:03 +0000 (+0000) Subject: added cmd related functions X-Git-Tag: r0_7_16~87 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=64b3584ff79239eeaba8e3126b7b664dd23b6181;p=comedilib.git added cmd related functions --- diff --git a/lib/cmd.c b/lib/cmd.c new file mode 100644 index 0000000..82fbe9a --- /dev/null +++ b/lib/cmd.c @@ -0,0 +1,90 @@ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +int comedi_get_cmd_src_mask(comedi_t *it,unsigned int s,comedi_cmd *cmd) +{ + memset(cmd,0,sizeof(*cmd)); + + cmd->subdev = s; + + cmd->flags = 0; + + cmd->start_src = TRIG_ANY; + cmd->scan_begin_src = TRIG_ANY; + cmd->convert_src = TRIG_ANY; + cmd->scan_end_src = TRIG_ANY; + cmd->stop_src = TRIG_ANY; + + return comedi_command_test(it,cmd); +} + + +int comedi_get_cmd_generic_timed(comedi_t *it,unsigned int s,comedi_cmd *cmd) +{ + int ret; + + ret = comedi_get_cmd_src_mask(it,s,cmd); + if(ret<0)return ret; + + if(cmd->start_src&TRIG_NOW){ + cmd->start_src=TRIG_NOW; + cmd->start_arg=0; + }else if(cmd->start_src&TRIG_FOLLOW){ + cmd->start_src=TRIG_FOLLOW; + cmd->start_arg=0; + } + /* hmmm... don't know what to do */ + return -1; + } + + if(cmd->convert_src&TRIG_TIMER){ + if(cmd->scan_begin_src&TRIG_FOLLOW){ + cmd->convert_src = TRIG_TIMER; + cmd->scan_begin_src = TRIG_FOLLOW; + }else{ + cmd->convert_src = TRIG_TIMER; + cmd->scan_begin_src = TRIG_TIMER; + } + }else{ + //printf("can't do timed?!?\n"); + return -1; + } + + cmd->scan_end_src = TRIG_COUNT; + cmd->scan_end_arg = 1; + + if(cmd->stop_src&TRIG_COUNT){ + cmd->stop_src=TRIG_COUNT; + cmd->stop_arg=2; + }else if(cmd->stop_src&TRIG_NONE){ + cmd->stop_src=TRIG_NONE; + cmd->stop_arg=0; + }else{ + printf("can't find a good stop_src\n"); + return -1; + } + + cmd->chanlist_len = 1; + + ret=comedi_command_test(it,cmd); + if(ret==3){ + /* good */ + ret=comedi_command_test(it,cmd); + } + if(ret==4 || ret==0){ + return 0; + } + return -1; +} +