Benjamin,
This is from the online documentation at:
http://www.slac.stanford.edu/comp/unix/package/epics/sequencer/manual/Manual-6.html#pgfId-691616
pvPut
int pvPut( variable_name )
int pvPut( variable_name , SYNC )
int pvPut( variable_name , ASYNC )
This function puts (or writes) the value of an SNL variable to the underlying control system variable. The function returns the status from the PV layer ( e.g. pvStatOK for success).
By default, pvPut does not wait for the put to be complete; completion must be inferred by other means. The optional SYNC argument causes it to block on completion with a hard-coded timeout of 10s. The optional ASYNC argument allows completion to be checked via a subsequent call to pvPutComplete (typically in a when clause).
Note that, when using channel access, the SYNC and ASYNC arguments result in use of ca_put_callback ; if neither optional argument is specified, ca_put is called as with previous versions.
pvPutComplete
int pvPutComplete( variable_name )
int pvPutComplete( array_name )
int pvPutComplete( array_name , long any )
int pvPutComplete( array_name , long any , long * pComplete )
This function returns TRUE if the last put of this control system variable has completed. This call is appropriate only if pvPut 's optional ASYNC argument was used.
The first form is appropriate when the SNL variable is a scalar. However, it can also be an array (each of whose elements may be assigned to a different control system variable). In this case, the single argument form returns TRUE if the last puts of all the elements of the array have completed (the missing arguments are implicitly 0 and NULL respectively). If any is TRUE , then the function returns TRUE if any put has completed since the last call. If pComplete is non-NULL, it should be a long array of the same length as the SNL variable and its elements will be set to TRUE if and only if the corresponding put has completed.
***********************************************
So pvPutComplete is documented.
Mark
________________________________
From: Benjamin Franksen [mailto:[email protected]]
Sent: Mon 2/12/2007 8:22 AM
To: [email protected]
Subject: Re: Sequencer problem
On Monday 12 February 2007 14:38, Benjamin Franksen wrote:
> being in the final stages of the process to convert an application from
> 3.13 to 3.14, I have just noted that the latest version of the sequencer
> (2.0.11) does not contain the built-in routines pvPutAsync,
> pvPutComplete, and pvPutWait, which have been added to the 3.13
> compatible branch around version 1.9.6 or so.
After taking a closer look, I see that at least pvPutComplete seems to exist
in seq-2.0.11, although it is undocumented.
> Have they been renamed to something else? Or have they never been in the
> 2.0 branch? If the latter, how do other people solve the problem of
> finding out reliably whether and when a pvPut has been completely
> executed?
So am I right in assuming that the standard solution is to pvPutComplete
inside the condition of a when-clause? (This could become tedious if you
want to issue many such pvPuts in sequence, where each one should only be
issued after teh one before is complete -- you'd need as many additional
states as pvPut actions in the sequence, right?)
Ben
--
"Programming = Mathematics + Murphy's Law" (Dijkstra in EWD1008)
- Replies:
- Re: Sequencer problem Benjamin Franksen
- References:
- Sequencer problem Benjamin Franksen
- Re: Sequencer problem Benjamin Franksen
- Navigate by Date:
- Prev:
Re: Sequencer problem Benjamin Franksen
- Next:
VxWorks SSH server Lawrence T. Hoff
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
<2007>
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
Re: Sequencer problem Benjamin Franksen
- Next:
Re: Sequencer problem Benjamin Franksen
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
<2007>
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
|