Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • main
  • release_0_1
  • release_1_0_0
  • release_1_0_1
  • release_1_0_2
  • release_1_0_3
  • release_1_0_4
  • release_2_0_0
  • release_2_0_1
  • release_2_0_2
  • release_2_0_4
  • release_2_1_0
  • v0
13 results

Target

Select target project
  • software-control-system/tango-devices/inputoutput/adlink/singleshotao
1 result
Select Git revision
  • main
  • release_0_1
  • release_1_0_0
  • release_1_0_1
  • release_1_0_2
  • release_1_0_3
  • release_1_0_4
  • release_2_0_0
  • release_2_0_1
  • release_2_0_2
  • release_2_0_4
  • release_2_1_0
  • v0
13 results
Show changes
Commits on Source (37)
...@@ -3,7 +3,7 @@ from conan import ConanFile ...@@ -3,7 +3,7 @@ from conan import ConanFile
class SingleShotAORecipe(ConanFile): class SingleShotAORecipe(ConanFile):
name = "singleshotao" name = "singleshotao"
executable = "ds_SingleShotAO" executable = "ds_SingleShotAO"
version = "2.0.4" version = "2.1.0"
package_type = "application" package_type = "application"
user = "soleil" user = "soleil"
python_requires = "base/[>=1.0]@soleil/stable" python_requires = "base/[>=1.0]@soleil/stable"
......
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML> <html>
<HEAD> <head>
<Title> Tango Device Server User's Guide </Title>
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000FF" VLINK="#7F00FF" ALINK="#FF0000">
<P><!-------TITLE------></P> <title> Tango Device Server User's Guide </title>
</head>
<TABLE BORDER="0" WIDTH="100%"> <body>
<TR>
<TD ALIGN="left">
<A HREF="http://www.esrf.fr/" TARGET=new>
<IMG SRC="http://www.esrf.fr/gifs/logo/80.gif" BORDER=0 Height="60"></A>
</Td>
<TD ALIGN="center">
<A HREF="http://www.elettra.trieste.it/" TARGET=new>
<IMG SRC="http://www.esrf.fr/computing/cs/tango/elettra_logo.gif" BORDER=0 Height="60"></A>
</Td>
<TD ALIGN="center">
<A HREF="http://www.synchrotron-soleil.fr/" TARGET=new>
<IMG SRC="http://www.esrf.fr/computing/cs/tango/soleil_logo.gif" BORDER=0 Height="60"></A>
</Td>
<TD ALIGN="right">
<A HREF="http://www.cells.es/" TARGET=new>
<IMG SRC="http://www.esrf.fr/computing/cs/tango/alba.jpg" BORDER=0 Height="54"></A>
</Td>
<TD ALIGN="right">
<A HREF="http://www.desy.de/html/home/index_eng.html" TARGET=new>
<IMG SRC="http://www.esrf.fr/computing/cs/tango/desy.gif" BORDER=0 Height="60"></A>
</Td>
<Td>
<H2><FONT COLOR="#7F00FF">
<Center><A HREF="http://www.tango-controls.org/" TARGET="_top">
TANGO </a> <Br> Device Server
</Center></FONT>
</Td>
</TR>
</TABLE>
<HR WIDTH="100%"></H5>
<Br>
<center> <center>
<h1> <h1>
SingleShotAO Generic Device <Br> SingleShotAO Generic Device <br>
Device Attributes Description <Br> <Br> Device Attributes Description <br><Br>
SingleShotAO Class <Br> SingleShotAO Class <br>
</h1> </h1>
<b> <b>
Revision: - Author: buteau Revision: - Author: buteau
</b> </b>
</center> </center>
<table Border=2 Cellpadding=3 CELLSPACING=0 WIDTH="100%">
<tr BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<td COLSPAN=4>
<font Size=+2><center><b>Scalar Attributes</b></center></font>
</td>
</tr>
<tr BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<td>
<center><b>Attribute name</b></center>
</td>
<td>
<center><b>Data Type</b></center>
</td>
<td>
<center><b>R/W Type</b></center>
</td>
<td>
<center><b>Expert</b></center>
</td>
</tr>
<tr>
<td><b>frequency</b>: <font Size=-1>Sampling frequency for
ramp generation on the board output channels, in
Hz.</font>
</td>
<td>
<center>
<font Size=-1>DEV_DOUBLE</font>
</center>
</td>
<td>
<center>
<font Size=-1>READ_WRITE</font>
</center>
</td>
<td>
<center>
<font Size=-1>Yes</font>
</center>
</td>
</tr>
</table>
<Br>
<Table Border=2 Cellpadding=3 CELLSPACING=0 WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<Td COLSPAN=4> <Font Size=+2><Center><b>Scalar Attributes</b></td></Font></Center>
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<Td><Center><b>Attribute name</b></td></Center>
<Td><Center><b>Data Type</b></td></Center>
<Td><Center><b>R/W Type</b></td></Center>
<Td><Center><b>Expert</b></td></Center>
<Tr><Td><b>frequency</b>: <Font Size=-1>Sampling frequency for ramp generation on the board output channels, in Hz.</Font></Td>
<Td><Center><Font Size=-1>DEV_DOUBLE</Font></Center></Td><Td><Center><Font Size=-1>READ_WRITE</Font></Center></Td><Td><Center><Font Size=-1>Yes</Font></Center></Td></Tr>
</Table>
</Center>
<Br><Br><Br><Br><Br>
<!--- html Footer --->
<Center>
<Font size=-1>
<br> <br>
<br>
<TABLE BORDER="1" WIDTH="100%">
<Tr>
<!--- Hosted by Sourceforge --->
<Td Align="Center">
<Font size=-1>
<b>TANGO</b> is an open source project hosted by :<br>
<A href="http://sourceforge.net" Target="new">
<IMG title="Sourceforge logo"
alt="Sourceforge logo small"
src="http://www.esrf.fr/computing/cs/tango/sourceforge.gif"
border=0> </a>
</Font>
</Td>
<!--- 2 Sourceforge Repositories --->
<Td Align="Center">
<Font size=-1>
Core and Tools :
<a href="http://tango-cs.cvs.sourceforge.net/tango-cs/" Target="new">
CVS repository</a> on
<a href="https://sourceforge.net/projects/tango-cs" Target=new>
tango-cs project</a>
<br> <table Border=2 Cellpadding=3 CELLSPACING=0 WIDTH="100%">
<tr BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<td COLSPAN=4>
<center>
<font Size=+2><b>Dynamic Scalar Attributes</b></font><br>
X is the channel number ranging from 0 to N-1 (<b>MAO_6208</b>: 8 channels, <b>MAO_6216</b>: 10 channels)
</center>
</td>
</tr>
<tr BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<td>
<center><b>Attribute name</b></center>
</td>
<td>
<center><b>Data Type</b></center>
</td>
<td>
<center><b>R/W Type</b></center>
</td>
<td>
<center><b>Description</b></center>
</td>
</tr>
<tr>
<td><b>channelX</b></td>
<td>
<center>
<font Size=-1>DEV_DOUBLE</font>
</center>
</td>
<td>
<center>
<font Size=-1>READ_WRITE</font>
</center>
</td>
<td>
<font Size=-1>Output value for channel X (in V). Valid range: [-10V, +10V]</font>
</td>
</tr>
<tr>
<td><b>speedX</b></td>
<td>
<center>
<font Size=-1>DEV_DOUBLE</font>
</center>
</td>
<td>
<center>
<font Size=-1>READ_WRITE</font>
</center>
</td>
<td>
<font Size=-1>Speed for ramp generation on channel X (in V/s). If speed is 0, no ramp is generated but direct write on channel output.</font>
</td>
</tr>
<tr>
<td><b>initialX</b></td>
<td>
<center>
<font Size=-1>DEV_DOUBLE</font>
</center>
</td>
<td>
<center>
<font Size=-1>READ_WRITE</font>
</center>
</td>
<td>
<font Size=-1>Initial value for ramp function on channel X (in V). Defaults to last written value in channel attribute.</font>
</td>
</tr>
</table>
</center>
Device Servers :
<a href="http://tango-ds.cvs.sourceforge.net/tango-ds/" Target="new">
CVS repository</a> on
<a href="https://sourceforge.net/projects/tango-ds" Target=new>
tango-ds project</a>
</Font>
</Td>
</Tr>
</Table>
</Font>
</Center>
</body> </body>
</html> </html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML> <html>
<HEAD>
<Title> Tango Device Server User s Guide </Title>
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000FF" VLINK="#7F00FF" ALINK="#FF0000">
<P><!-------TITLE------></P> <head>
<TABLE BORDER="0" WIDTH="100%"> <title> Tango Device Server User s Guide </title>
<TR> </head>
<TD ALIGN="left">
<A HREF="http://www.esrf.fr/" TARGET=new>
<IMG SRC="http://www.esrf.fr/gifs/logo/80.gif" BORDER=0 Height="60"></A>
</TD> <body>
<TD ALIGN="center">
<A HREF="http://www.elettra.trieste.it/" TARGET=new>
<IMG SRC="http://www.esrf.fr/computing/cs/tango/elettra_logo.gif" BORDER=0 Height="60"></A>
</TD>
<TD ALIGN="center">
<A HREF="http://www.synchrotron-soleil.fr/" TARGET=new>
<IMG SRC="http://www.esrf.fr/computing/cs/tango/soleil_logo.gif" BORDER=0 Height="60"></A>
</TD>
<TD ALIGN="center">
<A HREF="http://www.cells.es/" TARGET=new>
<IMG SRC="http://www.esrf.fr/computing/cs/tango/alba.jpg" BORDER=0 Height="45"></A>
</TD>
<TD ALIGN="Right">
<H2><FONT COLOR="#7F00FF">
<Br><Center><A HREF="http://www.tango-controls.org/" TARGET="_top"> TANGO </a>
</Center></FONT>
</TD>
</TR>
<TR>
<TD ALIGN="left">
<A HREF="http://www.desy.de/html/home/index_eng.html" TARGET=new>
<IMG SRC="http://www.esrf.fr/computing/cs/tango/desy.gif" BORDER=0 Height="44"></A>
</TD>
<TD ALIGN="center">
<A HREF="http://www.maxlab.lu.se/maxlab/max4/index.html" TARGET=new>
<IMG SRC="http://www.esrf.fr/computing/cs/tango/maxlab.gif" BORDER=0 Height="40"></A>
</TD>
<TD ALIGN="center">
<A HREF="http://www.frm2.tum.de/en/index.html" TARGET=new>
<IMG SRC="http://www.esrf.fr/computing/cs/tango/frm-2.jpg" BORDER=0 Height="45"></A>
</TD>
<TD>
<!-- Empty -->
</TD>
<TD ALIGN="Right">
<H2><FONT COLOR="#7F00FF">
<Center> Device Servers
</Center></FONT>
</TD>
</TR>
</TABLE>
<HR WIDTH="100%"></H5>
<HR WIDTH="100%"></H5>
<Br>
<center> <center>
<h1> <h1>
SingleShotAO Generic Device <Br> SingleShotAO Generic Device <br>
Device Description <Br> <Br> Device Description <br> <br>
SingleShotAO Class <Br> SingleShotAO Class <br>
</h1> </h1>
<b> <b>
Revision: - Author: buteau Revision: - Author: buteau
</b> </b>
</center> </center>
<center>
ADLink boards support for single shot AO operations [PCI-6208 and
compatible boards]
</center>
<Center>
ADLink boards support for single shot AO operations [PCI-6208 and compatible boards]
<Br>
<Br>
</Center>
<!--- html Footer --->
<Center>
<Font size=-1>
<br>
<br>
<TABLE BORDER="1" WIDTH="100%">
<Tr>
<!--- Hosted by Sourceforge --->
<Td Align="Center">
<Font size=-1>
<b>TANGO</b> is an open source project hosted by :<br>
<A href="http://sourceforge.net" Target="new">
<IMG title="Sourceforge logo"
alt="Sourceforge logo small"
src="http://www.esrf.fr/computing/cs/tango/sourceforge.gif"
border=0> </a>
</Font>
</Td>
<!--- 2 Sourceforge Repositories --->
<Td Align="Center">
<Font size=-1>
Core and Tools :
<a href="http://tango-cs.cvs.sourceforge.net/tango-cs/" Target="new">
CVS repository</a> on
<a href="https://sourceforge.net/projects/tango-cs" Target=new>
tango-cs project</a>
<br>
Device Servers :
<a href="http://tango-ds.cvs.sourceforge.net/tango-ds/" Target="new">
CVS repository</a> on
<a href="https://sourceforge.net/projects/tango-ds" Target=new>
tango-ds project</a>
</Font>
</Td>
</Tr>
</Table>
</Font>
</Center>
</body> </body>
</html> </html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML> <HTML>
<HEAD> <HEAD>
<Title> Tango Device Server User's Guide </Title> <Title> Tango Device Server User's Guide </Title>
</HEAD> </HEAD>
<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000FF" VLINK="#7F00FF" ALINK="#FF0000">
<P><!-------TITLE------></P>
<TABLE BORDER="0" WIDTH="100%">
<TR>
<TD ALIGN="left">
<A HREF="http://www.esrf.fr/" TARGET=new>
<IMG SRC="http://www.esrf.fr/gifs/logo/80.gif" BORDER=0 Height="60"></A>
</Td>
<TD ALIGN="center">
<A HREF="http://www.elettra.trieste.it/" TARGET=new>
<IMG SRC="http://www.esrf.fr/computing/cs/tango/elettra_logo.gif" BORDER=0 Height="60"></A>
</Td>
<TD ALIGN="center">
<A HREF="http://www.synchrotron-soleil.fr/" TARGET=new>
<IMG SRC="http://www.esrf.fr/computing/cs/tango/soleil_logo.gif" BORDER=0 Height="60"></A>
</Td>
<TD ALIGN="right">
<A HREF="http://www.cells.es/" TARGET=new>
<IMG SRC="http://www.esrf.fr/computing/cs/tango/alba.jpg" BORDER=0 Height="54"></A>
</Td>
<TD ALIGN="right">
<A HREF="http://www.desy.de/html/home/index_eng.html" TARGET=new>
<IMG SRC="http://www.esrf.fr/computing/cs/tango/desy.gif" BORDER=0 Height="60"></A>
</Td>
<Td>
<H2><FONT COLOR="#7F00FF">
<Center><A HREF="http://www.tango-controls.org/" TARGET="_top">
TANGO </a> <Br> Device Server
</Center></FONT>
</Td>
</TR>
</TABLE>
<HR WIDTH="100%"></H5> <BODY>
<Br>
<center> <center>
<h1> <h1>
SingleShotAO Generic Device <Br> SingleShotAO Generic Device <br>
Device Commands Description <Br> <Br> Device Commands Description <br> <br>
SingleShotAO Class <Br> SingleShotAO Class <br>
</h1> </h1>
<b> <b>
Revision: - Author: buteau Revision: - Author: buteau
</b> </b>
</center> </center>
<Br>
<Br>
<Br>
<A NAME="Init"><!-- --></A>
<A NAME="Init"><!-- --></A>
<h2>1 - Init</h2> <h2>1 - Init</h2>
<ul> <ul>
<Li><Strong>Description: </Strong> This commands re-initialise a device keeping the same network connection.<Br> <Li><Strong>Description: </Strong><br>
After an Init command executed on a device, it is not necessary for client to re-connect to the device.<Br> This command re-initialises a device keeping the same network connection. <br>
This command first calls the device <i> delete_device() </i>method and then execute its <i> init_device()</i> method.<Br> After an Init command executed on a device, it is not necessary for the client to re-connect to the device. <br>
For C++ device server, all the memory allocated in the <i> nit_device() </i> method must be freed in the <i> delete_device() </i> method.<Br> This command first calls the device <i>delete_device()</i> method and then executes its <i>init_device()</i> method. <br>
The language device desctructor automatically calls the <i> delete_device() </i> method.<Br>&nbsp For C++ device server, all the memory allocated in the <i>init_device()</i> method must be freed in the <i>delete_device()</i> method.<br>
<Li><Strong>Argin:<Br>DEV_VOID</Strong> The language device destructor automatically calls the <i>delete_device()</i> method.<br>
: none.<Br>&nbsp </Li>
<Li><Strong>Argout:<Br>DEV_VOID</Strong> <Li><Strong>Argin: DEV_VOID</Strong></Li>
: none.<Br>&nbsp <Li><Strong>Argout: DEV_VOID</Strong></Li>
<Li><Strong>Command allowed for: </Strong><Ul> <Li><Strong>Command allowed for: </Strong>
<Li>Tango::FAULT<Li>Tango::ON<Li>Tango::INIT<Li>Tango::MOVING</Ul> <Ul>
<Br>&nbsp <Li>Tango::FAULT</Li>
</ul><Br> <Li>Tango::ON</Li>
<Br> <Li>Tango::INIT</Li>
<A NAME="State"><!-- --></A> <Li>Tango::MOVING</Li>
<A NAME="State"><!-- --></A> </Ul>
</Li>
</ul>
<h2>2 - State</h2> <h2>2 - State</h2>
<ul> <ul>
<Li><Strong>Description: </Strong> This command gets the device state (stored in its <i>device_state</i> data member) and returns it to the caller.<Br>&nbsp <Li><Strong>Description: </Strong> This command gets the device state (stored in its <i>device_state</i> data member) and returns it to the caller.
<Li><Strong>Argin:<Br>DEV_VOID</Strong> <Li><Strong>Argin: DEV_VOID</Strong></Li>
: none.<Br>&nbsp <Li><Strong>Argout: DEV_STATE</Strong></Li>
<Li><Strong>Argout:<Br>DEV_STATE</Strong> <Li><Strong>Command allowed for: </Strong>
: State Code<Br>&nbsp <Ul>
<Li><Strong>Command allowed for: </Strong><Ul> <Li>Tango::FAULT</Li>
<Li>Tango::FAULT<Li>Tango::ON<Li>Tango::INIT<Li>Tango::MOVING</Ul> <Li>Tango::ON</Li>
<Br>&nbsp <Li>Tango::INIT</Li>
</ul><Br> <Li>Tango::MOVING</Li>
<Br> </Ul>
<A NAME="Status"><!-- --></A> </Li>
<A NAME="Status"><!-- --></A> </ul>
<h2>3 - Status</h2>
<ul>
<Li><Strong>Description: </Strong> This command gets the device status (stored in its <i>device_status</i> data member) and returns it to the caller.<Br>&nbsp
<Li><Strong>Argin:<Br>DEV_VOID</Strong>
: none.<Br>&nbsp
<Li><Strong>Argout:<Br>CONST_DEV_STRING</Strong>
: Status description<Br>&nbsp
<Li><Strong>Command allowed for: </Strong><Ul>
<Li>Tango::FAULT<Li>Tango::ON<Li>Tango::INIT<Li>Tango::MOVING</Ul>
<Br>&nbsp
</ul><Br>
<Br>
<A NAME="Abort"><!-- --></A>
<A NAME="Abort"><!-- --></A>
<h2>4 - Abort</h2>
<ul>
<Li><Strong>Description: </Strong> Aborts ramps in progress.<Br>&nbsp
<Li><Strong>Argin:<Br>DEV_VOID</Strong>
: <Br>&nbsp
<Li><Strong>Argout:<Br>DEV_VOID</Strong>
: <Br>&nbsp
<Li><Strong>Command allowed for: </Strong><Ul>
<Li>Tango::FAULT<Li>Tango::ON<Li>Tango::INIT<Li>Tango::MOVING</Ul>
<Br>&nbsp
</ul><Br>
<Br>
<!--- html Footer --->
<Center> <h2>3 - Status</h2>
<Font size=-1> <ul>
<br> <Li><Strong>Description: </Strong> This command gets the device status (stored in its <i>device_status</i> data member) and returns it to the caller.</Li>
<br> <Li><Strong>Argin: DEV_VOID</Strong></Li>
<TABLE BORDER="1" WIDTH="100%"> <Li><Strong>Argout: CONST_DEV_STRING</Strong></Li>
<Tr> <Li><Strong>Command allowed for: </Strong>
<!--- Hosted by Sourceforge ---> <Ul>
<Td Align="Center"> <Li>Tango::FAULT</Li>
<Font size=-1> <Li>Tango::ON</Li>
<b>TANGO</b> is an open source project hosted by :<br> <Li>Tango::INIT</Li>
<A href="http://sourceforge.net" Target="new"> <Li>Tango::MOVING</Li>
<IMG title="Sourceforge logo" </Ul>
alt="Sourceforge logo small" </Li>
src="http://www.esrf.fr/computing/cs/tango/sourceforge.gif" </ul>
border=0> </a>
</Font>
</Td>
<!--- 2 Sourceforge Repositories --->
<Td Align="Center">
<Font size=-1>
Core and Tools :
<a href="http://tango-cs.cvs.sourceforge.net/tango-cs/" Target="new">
CVS repository</a> on
<a href="https://sourceforge.net/projects/tango-cs" Target=new>
tango-cs project</a>
<br>
Device Servers : <h2>4 - Abort</h2>
<a href="http://tango-ds.cvs.sourceforge.net/tango-ds/" Target="new"> <ul>
CVS repository</a> on <Li><Strong>Description: </Strong> Aborts ramps in progress.</Li>
<a href="https://sourceforge.net/projects/tango-ds" Target=new> <Li><Strong>Argin: DEV_VOID</Strong></Li>
tango-ds project</a> <Li><Strong>Argout: DEV_VOID</Strong></Li>
</Font> <Li><Strong>Command allowed for: </Strong>
</Td> <Ul>
</Tr> <Li>Tango::FAULT</Li>
</Table> <Li>Tango::ON</Li>
</Font> <Li>Tango::INIT</Li>
</Center> <Li>Tango::MOVING</Li>
</Ul>
</Li>
</ul>
</body> </body>
</html> </html>
\ No newline at end of file
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML> <html>
<HEAD> <head>
<Title> Tango Device Server User's Guide </Title> <title> Tango Device Server User's Guide </title>
</HEAD> </head>
<FRAMESET cols="20%,80%"> <frameset cols="20%,80%">
<FRAME src="DevCommandsList.html" name="DevCommandsList"> <frame src="DevCommandsList.html" name="DevCommandsList">
<FRAME src="DevCommands.html" name="DevCommands"> <frame src="DevCommands.html" name="DevCommands">
</FRAMESET> </frameset>
<NOFRAMES> <noframes>
<H2> <h2>
Frame Alert</H2> Frame Alert</h2>
<P> <p>
This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. This document is designed to be viewed using the frames feature. If
<BR> you see this message, you are using a non-frame-capable web client.
Link to <A HREF="DevCommands.html">Non-frame version.</A></NOFRAMES> <br>
</HTML> Link to <a HREF="DevCommands.html">Non-frame version.</a></noframes>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML><HEAD> <html><head>
<TITLE>Commands <title>Commands
</TITLE></HEAD> </title></head>
<BODY BGCOLOR="white"> <body BGCOLOR="white">
<FONT size="+1" ID="FrameHeadingFont"> <font size="+1" ID="FrameHeadingFont">
<B>Commands:</B></FONT> <b>Commands:</b></font>
<Br> <br>
<Br> <br>
<Br> <br>
<A Href="DevCommands.html#Init" TARGET="DevCommands"> Init</a><Br> <a Href="DevCommands.html#Init" TARGET="DevCommands"> Init</a><br>
<A Href="DevCommands.html#State" TARGET="DevCommands"> State</a><Br> <a Href="DevCommands.html#State" TARGET="DevCommands"> State</a><br>
<A Href="DevCommands.html#Status" TARGET="DevCommands"> Status</a><Br> <a Href="DevCommands.html#Status" TARGET="DevCommands"> Status</a><br>
<A Href="DevCommands.html#Abort" TARGET="DevCommands"> Abort</a><Br> <a Href="DevCommands.html#Abort" TARGET="DevCommands"> Abort</a><br>
</body>
</BODY> </html>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML> <html>
<HEAD>
<Title> Tango Device Server User's Guide </Title>
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000FF" VLINK="#7F00FF" ALINK="#FF0000">
<P><!-------TITLE------></P> <head>
<title> Tango Device Server User's Guide </title>
</head>
<TABLE BORDER="0" WIDTH="100%"> <body>
<TR>
<TD ALIGN="left">
<A HREF="http://www.esrf.fr/" TARGET=new>
<IMG SRC="http://www.esrf.fr/gifs/logo/80.gif" BORDER=0 Height="60"></A>
</Td>
<TD ALIGN="center">
<A HREF="http://www.elettra.trieste.it/" TARGET=new>
<IMG SRC="http://www.esrf.fr/computing/cs/tango/elettra_logo.gif" BORDER=0 Height="60"></A>
</Td>
<TD ALIGN="center">
<A HREF="http://www.synchrotron-soleil.fr/" TARGET=new>
<IMG SRC="http://www.esrf.fr/computing/cs/tango/soleil_logo.gif" BORDER=0 Height="60"></A>
</Td>
<TD ALIGN="right">
<A HREF="http://www.cells.es/" TARGET=new>
<IMG SRC="http://www.esrf.fr/computing/cs/tango/alba.jpg" BORDER=0 Height="54"></A>
</Td>
<TD ALIGN="right">
<A HREF="http://www.desy.de/html/home/index_eng.html" TARGET=new>
<IMG SRC="http://www.esrf.fr/computing/cs/tango/desy.gif" BORDER=0 Height="60"></A>
</Td>
<Td>
<H2><FONT COLOR="#7F00FF">
<Center><A HREF="http://www.tango-controls.org/" TARGET="_top">
TANGO </a> <Br> Device Server
</Center></FONT>
</Td>
</TR>
</TABLE>
<HR WIDTH="100%"></H5>
<Br>
<center> <center>
<h1> <h1>
SingleShotAO Generic Device <Br> SingleShotAO Generic Device <br>
Device Commands Description <Br> <Br> Device Commands Description <br><br>
SingleShotAO Class <Br> SingleShotAO Class <br>
</h1> </h1>
<b> <b>
Revision: - Author: buteau Revision: - Author: buteau
</b> </b>
</center> </center>
<center>
<br><a Href="DevCommandsFrame.html"> More Details on commands.... </a><br><br>
<table Border=2 Cellpadding=3 CELLSPACING=0 WIDTH="100%">
<tr BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<td COLSPAN=3>
<font Size=+2><center>
<b>Device Commands for Operator Level</b>
</center></font>
</td>
</tr>
<tr BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<td><b>Command name</b></td>
<td><b>Argument In</b></td>
<td><b>Argument Out</b></td>
</tr>
<tr>
<td><b>Init</b></td>
<td>DEV_VOID</td>
<td>DEV_VOID</td>
</tr>
<tr>
<td><b>State</b></td>
<td>DEV_VOID</td>
<td>DEV_STATE</td>
</tr>
<tr>
<td><b>Status</b></td>
<td>DEV_VOID</td>
<td>CONST_DEV_STRING</td>
</tr>
<tr>
<td><b>Abort</b></td>
<td>DEV_VOID</td>
<td>DEV_VOID</td>
</tr>
</table>
</center>
<Center>
<Br><Br>
<A Href="DevCommandsFrame.html"> More Details on commands.... </a><Br>
<Br> <Br>
<Table Border=2 Cellpadding=3 CELLSPACING=0 WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<Td COLSPAN=3> <Font Size=+2><Center><b>Device Commands for Operator Level</b></td></Font></Center>
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<Td><Center><b>Command name</b></td></Center>
<Td><Center><b>Argument In</b></td></Center>
<Td><Center><b>Argument Out</b></td></Center>
<Tr><Td><b>Init</b></Td>
<Td><Font Size=-1>DEV_VOID</Font></Td>
<Td><Font Size=-1>DEV_VOID</Font></Td>
<Tr><Td><b>State</b></Td>
<Td><Font Size=-1>DEV_VOID</Font></Td>
<Td><Font Size=-1>DEV_STATE</Font></Td>
<Tr><Td><b>Status</b></Td>
<Td><Font Size=-1>DEV_VOID</Font></Td>
<Td><Font Size=-1>CONST_DEV_STRING</Font></Td>
<Tr><Td><b>Abort</b></Td>
<Td><Font Size=-1>DEV_VOID</Font></Td>
<Td><Font Size=-1>DEV_VOID</Font></Td>
</Table></Center>
<!--- html Footer --->
<Center>
<Font size=-1>
<br>
<br>
<TABLE BORDER="1" WIDTH="100%">
<Tr>
<!--- Hosted by Sourceforge --->
<Td Align="Center">
<Font size=-1>
<b>TANGO</b> is an open source project hosted by :<br>
<A href="http://sourceforge.net" Target="new">
<IMG title="Sourceforge logo"
alt="Sourceforge logo small"
src="http://www.esrf.fr/computing/cs/tango/sourceforge.gif"
border=0> </a>
</Font>
</Td>
<!--- 2 Sourceforge Repositories --->
<Td Align="Center">
<Font size=-1>
Core and Tools :
<a href="http://tango-cs.cvs.sourceforge.net/tango-cs/" Target="new">
CVS repository</a> on
<a href="https://sourceforge.net/projects/tango-cs" Target=new>
tango-cs project</a>
<br>
Device Servers :
<a href="http://tango-ds.cvs.sourceforge.net/tango-ds/" Target="new">
CVS repository</a> on
<a href="https://sourceforge.net/projects/tango-ds" Target=new>
tango-ds project</a>
</Font>
</Td>
</Tr>
</Table>
</Font>
</Center>
</body> </body>
</html> </html>
\ No newline at end of file
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML> <HTML>
<HEAD> <HEAD>
<Title> Tango Device Server User's Guide </Title> <Title> Tango Device Server User's Guide </Title>
</HEAD> </HEAD>
<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000FF" VLINK="#7F00FF" ALINK="#FF0000">
<P><!-------TITLE------></P>
<TABLE BORDER="0" WIDTH="100%"> <BODY>
<TR>
<TD ALIGN="left">
<A HREF="http://www.esrf.fr/" TARGET=new>
<IMG SRC="http://www.esrf.fr/gifs/logo/80.gif" BORDER=0 Height="60"></A>
</Td>
<TD ALIGN="center">
<A HREF="http://www.elettra.trieste.it/" TARGET=new>
<IMG SRC="http://www.esrf.fr/computing/cs/tango/elettra_logo.gif" BORDER=0 Height="60"></A>
</Td>
<TD ALIGN="center">
<A HREF="http://www.synchrotron-soleil.fr/" TARGET=new>
<IMG SRC="http://www.esrf.fr/computing/cs/tango/soleil_logo.gif" BORDER=0 Height="60"></A>
</Td>
<TD ALIGN="right">
<A HREF="http://www.cells.es/" TARGET=new>
<IMG SRC="http://www.esrf.fr/computing/cs/tango/alba.jpg" BORDER=0 Height="54"></A>
</Td>
<TD ALIGN="right">
<A HREF="http://www.desy.de/html/home/index_eng.html" TARGET=new>
<IMG SRC="http://www.esrf.fr/computing/cs/tango/desy.gif" BORDER=0 Height="60"></A>
</Td>
<Td>
<H2><FONT COLOR="#7F00FF">
<Center><A HREF="http://www.tango-controls.org/" TARGET="_top">
TANGO </a> <Br> Device Server
</Center></FONT>
</Td>
</TR>
</TABLE>
<HR WIDTH="100%"></H5>
<Br>
<center> <center>
<h1> <h1>
SingleShotAO Generic Device <Br> SingleShotAO Generic Device <Br>
...@@ -54,29 +19,71 @@ Revision: - Author: buteau ...@@ -54,29 +19,71 @@ Revision: - Author: buteau
<Center> <Center>
<Br> <Br> <Br>
<Table Border=2 Cellpadding=3 CELLSPACING=0 WIDTH="100%"> <Table Border=2 Cellpadding=3 CELLSPACING=0 WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<Td COLSPAN=3> <Font Size=+2><Center><b>Device Properties</b></td></Font></Center> <Td COLSPAN=3>
<Font Size=+2>
<Center><b>Device Properties</b>
</td>
</Font>
</Center>
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<Td><Center><b>Property name</b></td></Center> <Td>
<Td><Center><b>Property type</b></td></Center> <Center><b>Property name</b>
<Td><Center><b>Description</b></td></Center> </td>
<Tr><Td><b><a href=#Dev_DefaultValues>BoardNum </a></b></Td> </Center>
<Td><Font Size=-1>Tango::DEV_SHORT</Font></Td> <Td>
<Td><Font Size=-1>The the board identifier in the cPCI crate [valid range is 0...7 - no default value] .</Font></Td></Tr> <Center><b>Property type</b>
</td>
</Center>
<Td>
<Center><b>Description</b>
</td>
</Center>
<Tr>
<Td><b><a href=#Dev_DefaultValues>BoardNum </a></b></Td>
<Td>
<Font Size=-1>Tango::DEV_SHORT</Font>
</Td>
<Td>
<Font Size=-1>The the board identifier in the cPCI crate [valid range is 0...7 - no default value] .</Font>
</Td>
</Tr>
<Tr><Td><b><a href=#Dev_DefaultValues>BoardType </a></b></Td> <Tr>
<Td><Font Size=-1>Tango::DEV_STRING</Font></Td> <Td><b><a href=#Dev_DefaultValues>BoardType </a></b></Td>
<Td><Font Size=-1>The board type [MAO_xxxx - where <xxxx> is the ADlink board identifier - e.g. MAO_6208 - no default value]</Font></Td></Tr> <Td>
<Font Size=-1>Tango::DEV_STRING</Font>
</Td>
<Td>
<Font Size=-1>The board type [MAO_xxxx - where <xxxx> is the ADlink board identifier - e.g. MAO_6208 - no default value]</Font>
</Td>
</Tr>
<Tr>
<Td><b><a href=#Dev_DefaultValues>EnableRamps </a></b></Td>
<Td>
<Font Size=-1>Tango::DEV_BOOLEAN</Font>
</Td>
<Td>
<Font Size=-1>Whether to enable or disable the ramp generation on the board output channels. If false, the speedX and initialX dynamic attributes will not be created for every channel, and the changes will happen instantly. [true/false - default value is true]</Font>
</Td>
</Tr>
<Tr>
<Td><b><a href=#Dev_DefaultValues>OutputMemorizedChannelsAtInit </a></b></Td>
<Td>
<Font Size=-1>Tango::DEV_BOOLEAN</Font>
</Td>
<Td>
<Font Size=-1>Whether to send the memorized values for the channels to the board at the device initialization (the device attribute will show the last memorized value regardless) [true/false - default value is false]</Font>
</Td>
</Tr>
</Table> </Table>
</Center> </Center>
<Br><Br><Br>
<Br><Br><Br>
<A name=Dev_DefaultValues><!--- ---></a>
<Font Size=+1>Device Properties Default Values:</Font><Br> <Font Size=+1>Device Properties Default Values:</Font><Br>
<Table Border=2 Cellpadding=2 CELLSPACING=2> <Table Border=2 Cellpadding=2 CELLSPACING=2>
<tr BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> <tr BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
...@@ -91,6 +98,14 @@ Revision: - Author: buteau ...@@ -91,6 +98,14 @@ Revision: - Author: buteau
<Td>BoardType</Td> <Td>BoardType</Td>
<td>No default value</td> <td>No default value</td>
</Tr> </Tr>
<Tr>
<Td>EnableRamps</Td>
<td>true</td>
</Tr>
<Tr>
<Td>OutputMemorizedChannelsAtInit</Td>
<td>false</td>
</Tr>
</Table> </Table>
<Br><Br><Br> <Br><Br><Br>
...@@ -99,46 +114,7 @@ There is no Class properties.<Br><Br> ...@@ -99,46 +114,7 @@ There is no Class properties.<Br><Br>
</Center></b> </Center></b>
<Br> <Br> <Br> <Br> <Br> <Br>
<!--- html Footer --->
<Center>
<Font size=-1>
<br>
<br>
<TABLE BORDER="1" WIDTH="100%">
<Tr>
<!--- Hosted by Sourceforge --->
<Td Align="Center">
<Font size=-1>
<b>TANGO</b> is an open source project hosted by :<br>
<A href="http://sourceforge.net" Target="new">
<IMG title="Sourceforge logo"
alt="Sourceforge logo small"
src="http://www.esrf.fr/computing/cs/tango/sourceforge.gif"
border=0> </a>
</Font>
</Td>
<!--- 2 Sourceforge Repositories --->
<Td Align="Center">
<Font size=-1>
Core and Tools :
<a href="http://tango-cs.cvs.sourceforge.net/tango-cs/" Target="new">
CVS repository</a> on
<a href="https://sourceforge.net/projects/tango-cs" Target=new>
tango-cs project</a>
<br>
Device Servers :
<a href="http://tango-ds.cvs.sourceforge.net/tango-ds/" Target="new">
CVS repository</a> on
<a href="https://sourceforge.net/projects/tango-ds" Target=new>
tango-ds project</a>
</Font>
</Td>
</Tr>
</Table>
</Font>
</Center>
</body> </body>
</html> </html>
\ No newline at end of file
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML> <html>
<HEAD>
<Title> Tango Device Server User's Guide </Title>
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000FF" VLINK="#7F00FF" ALINK="#FF0000">
<P><!-------TITLE------></P> <head>
<title> Tango Device Server User's Guide </title>
</head>
<TABLE BORDER="0" WIDTH="100%"> <body>
<TR>
<TD ALIGN="left">
<A HREF="http://www.esrf.fr/" TARGET=new>
<IMG SRC="http://www.esrf.fr/gifs/logo/80.gif" BORDER=0 Height="60"></A>
</Td>
<TD ALIGN="center">
<A HREF="http://www.elettra.trieste.it/" TARGET=new>
<IMG SRC="http://www.esrf.fr/computing/cs/tango/elettra_logo.gif" BORDER=0 Height="60"></A>
</Td>
<TD ALIGN="center">
<A HREF="http://www.synchrotron-soleil.fr/" TARGET=new>
<IMG SRC="http://www.esrf.fr/computing/cs/tango/soleil_logo.gif" BORDER=0 Height="60"></A>
</Td>
<TD ALIGN="right">
<A HREF="http://www.cells.es/" TARGET=new>
<IMG SRC="http://www.esrf.fr/computing/cs/tango/alba.jpg" BORDER=0 Height="54"></A>
</Td>
<TD ALIGN="right">
<A HREF="http://www.desy.de/html/home/index_eng.html" TARGET=new>
<IMG SRC="http://www.esrf.fr/computing/cs/tango/desy.gif" BORDER=0 Height="60"></A>
</Td>
<Td>
<H2><FONT COLOR="#7F00FF">
<Center><A HREF="http://www.tango-controls.org/" TARGET="_top">
TANGO </a> <Br> Device Server
</Center></FONT>
</Td>
</TR>
</TABLE>
<HR WIDTH="100%"></H5>
<Br>
<center> <center>
<h1> <h1>
SingleShotAO Generic Device <Br> SingleShotAO Generic Device <br>
Device States Description <Br> <Br> Device States Description <br> <br>
SingleShotAO Class <Br> SingleShotAO Class <br>
</h1> </h1>
<b> <b>
Revision: - Author: buteau Revision: - Author: buteau
</b> </b>
</center> </center>
<center>
<table Border=2 Cellpadding=3 CELLSPACING=0 WIDTH="100%">
<tr BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<td COLSPAN=2>
<font Size=+2><center>
<b>States</b>
</center></font>
</td>
</tr>
<tr BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<td><center><b>Names</b></center></td>
<td><center><b>Descriptions</b></center></td>
</tr>
<tr>
<td><b>FAULT</b></td>
<td><font Size=-1>Hardware / driver failure or fatal error occurred</font></td>
</tr>
<tr>
<td><b>ON</b></td>
<td><font Size=-1>Device ready to execute AO request</font></td>
</tr>
<tr>
<td><b>INIT</b></td>
<td><font Size=-1>Device initialization in progress</font></td>
</tr>
<tr>
<td><b>MOVING</b></td>
<td><font Size=-1>Ramp generation in progress</font></td>
</tr>
</table>
</center>
<Center>
<Br> <Br> <Br>
<Table Border=2 Cellpadding=3 CELLSPACING=0 WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<Td COLSPAN=2> <Font Size=+2><Center><b>States</b></td></Font></Center>
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<Td><Center><b>Names</b></td></Center>
<Td><Center><b>Descriptions</b></td></Center>
<Tr><Td><b>FAULT</b></Td>
<Td><Font Size=-1>Hardware / driver failure or fatal error occurred</Font></Td></Tr>
<Tr><Td><b>ON</b></Td>
<Td><Font Size=-1>Device ready to execute AO request</Font></Td></Tr>
<Tr><Td><b>INIT</b></Td>
<Td><Font Size=-1>Device initialization in progress</Font></Td></Tr>
<Tr><Td><b>MOVING</b></Td>
<Td><Font Size=-1>Ramp generation in progress</Font></Td></Tr>
</Table>
</Center>
<!--- html Footer --->
<Center>
<Font size=-1>
<br>
<br>
<TABLE BORDER="1" WIDTH="100%">
<Tr>
<!--- Hosted by Sourceforge --->
<Td Align="Center">
<Font size=-1>
<b>TANGO</b> is an open source project hosted by :<br>
<A href="http://sourceforge.net" Target="new">
<IMG title="Sourceforge logo"
alt="Sourceforge logo small"
src="http://www.esrf.fr/computing/cs/tango/sourceforge.gif"
border=0> </a>
</Font>
</Td>
<!--- 2 Sourceforge Repositories --->
<Td Align="Center">
<Font size=-1>
Core and Tools :
<a href="http://tango-cs.cvs.sourceforge.net/tango-cs/" Target="new">
CVS repository</a> on
<a href="https://sourceforge.net/projects/tango-cs" Target=new>
tango-cs project</a>
<br>
Device Servers :
<a href="http://tango-ds.cvs.sourceforge.net/tango-ds/" Target="new">
CVS repository</a> on
<a href="https://sourceforge.net/projects/tango-ds" Target=new>
tango-ds project</a>
</Font>
</Td>
</Tr>
</Table>
</Font>
</Center>
</body> </body>
</html> </html>
\ No newline at end of file
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML> <html>
<HEAD>
<Title> Tango Device Server User's Guide </Title>
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000FF" VLINK="#7F00FF" ALINK="#FF0000">
<P><!-------TITLE------></P> <head>
<TABLE BORDER="0" WIDTH="100%"> <title> Tango Device Server User's Guide </title>
<TR> </head>
<TD ALIGN="left">
<A HREF="http://www.esrf.fr/" TARGET=new>
<IMG SRC="http://www.esrf.fr/gifs/logo/80.gif" BORDER=0 Height="60"></A>
</Td>
<TD ALIGN="center">
<A HREF="http://www.elettra.trieste.it/" TARGET=new>
<IMG SRC="http://www.esrf.fr/computing/cs/tango/elettra_logo.gif" BORDER=0 Height="60"></A>
</Td> <body>
<TD ALIGN="center">
<A HREF="http://www.synchrotron-soleil.fr/" TARGET=new>
<IMG SRC="http://www.esrf.fr/computing/cs/tango/soleil_logo.gif" BORDER=0 Height="60"></A>
</Td>
<TD ALIGN="right">
<A HREF="http://www.cells.es/" TARGET=new>
<IMG SRC="http://www.esrf.fr/computing/cs/tango/alba.jpg" BORDER=0 Height="54"></A>
</Td>
<TD ALIGN="right">
<A HREF="http://www.desy.de/html/home/index_eng.html" TARGET=new>
<IMG SRC="http://www.esrf.fr/computing/cs/tango/desy.gif" BORDER=0 Height="60"></A>
</Td>
<Td>
<H2><FONT COLOR="#7F00FF">
<Center><A HREF="http://www.tango-controls.org/" TARGET="_top">
TANGO </a> <Br> Device Server
</Center></FONT>
</Td>
</TR>
</TABLE>
<HR WIDTH="100%"></H5>
<center> <center>
<h1> <h1>
SingleShotAO Generic Device <Br> SingleShotAO Generic Device <br>
User's Guide <Br><Br> User's Guide <br><Br>
SingleShotAO Class<Br> SingleShotAO Class <br>
</h1> </h1>
<b> <b>
Revision: - Author: buteau <Br> Revision: - Author: buteau <br>
Implemented in C++ Implemented in C++
</b> </b>
</center> </center>
<Br>
<Br>
<Br>
<Br>
<h2>Introduction:</h2> <h2>Introduction:</h2>
<ul> <ul>
ADLink boards support for single shot AO operations [PCI-6208 and compatible boards]<Br> <li>ADLink boards support for single shot AO operations [PCI-6208 and compatible boards]</li>
</ul> </ul>
<Br><h2>Class Identification:</h2>
<h2>Class Identification:</h2>
<ul> <ul>
<li><b>Contact :</b> at synchrotron-soleil.fr - buteau <li><b>Contact :</b> at synchrotron-soleil.fr - buteau</li>
<li><b>Class Family :</b> InputOutput <li><b>Class Family :</b> InputOutput</li>
<li><b>Platform :</b> All Platforms <li><b>Platform :</b> All Platforms</li>
<li><b>Bus :</b> Compact PCI <li><b>Bus :</b> Compact PCI</li>
</ul><Br> </ul>
<h2>Class Inheritance:</h2> <h2>Class Inheritance:</h2>
<ul> <ul>
<li> <a href="http://www.esrf.fr/computing/cs/tango/tango_doc/kernel_doc/cpp_doc/"> TANGO_BASE_CLASS</a></li> <li> <a
href="http://www.esrf.fr/computing/cs/tango/tango_doc/kernel_doc/cpp_doc/">
TANGO_BASE_CLASS</a></li>
<ul> <ul>
<li> SingleShotAO</li> <li> SingleShotAO</li>
</ul> </ul>
</ul> </ul>
</ul>
</ul>
<Br>
<Br>
<h2>Class Description:</h2> <h2>Class Description:</h2>
<ul> <ul>
<li> <a href=Description.html> Device description.</a> <li> <a href=Description.html> Device description.</a> </li>
<li> <a href=Properties.html> Properties description</a> <li> <a href=Properties.html> Properties description</a> </li>
<li> <a href=TangoDevStates.html> States description</a> <li> <a href=TangoDevStates.html> States description</a> </li>
<li> <a href=DevCommandsTable.html> Commands description</a> <li> <a href=DevCommandsTable.html> Commands description</a> </li>
<li> <a href=Attributes.html> Attributes description</a> <li> <a href=Attributes.html> Attributes description</a> </li>
</ul> </ul>
<Br>
<Br>
<Br>
<h2>Conclusion:</h2> <h2>Conclusion:</h2>
<ul> <ul>
The device server is ready for distribution application programmers.<Br> <li>The device server is ready for distribution application programmers.</li>
The author will be interested in any feedback which arise from their <li>The author will be interested in any feedback which arise from their usage of this device server.</li>
usage of this device server.
</ul> </ul>
<Br>
<!--- html Footer --->
<Center>
<Font size=-1>
<br>
<br>
<TABLE BORDER="1" WIDTH="100%">
<Tr>
<!--- Hosted by Sourceforge --->
<Td Align="Center">
<Font size=-1>
<b>TANGO</b> is an open source project hosted by :<br>
<A href="http://sourceforge.net" Target="new">
<IMG title="Sourceforge logo"
alt="Sourceforge logo small"
src="http://www.esrf.fr/computing/cs/tango/sourceforge.gif"
border=0> </a>
</Font>
</Td>
<!--- 2 Sourceforge Repositories --->
<Td Align="Center">
<Font size=-1>
Core and Tools :
<a href="http://tango-cs.cvs.sourceforge.net/tango-cs/" Target="new">
CVS repository</a> on
<a href="https://sourceforge.net/projects/tango-cs" Target=new>
tango-cs project</a>
<br>
Device Servers :
<a href="http://tango-ds.cvs.sourceforge.net/tango-ds/" Target="new">
CVS repository</a> on
<a href="https://sourceforge.net/projects/tango-ds" Target=new>
tango-ds project</a>
</Font>
</Td>
</Tr>
</Table>
</Font>
</Center>
</body> </body>
</html> </html>
This diff is collapsed.
...@@ -110,13 +110,37 @@ public : ...@@ -110,13 +110,37 @@ public :
* The board type [MAO_xxxx - where <xxxx> is the ADlink board identifier - e.g. MAO_6208 - no default value] * The board type [MAO_xxxx - where <xxxx> is the ADlink board identifier - e.g. MAO_6208 - no default value]
*/ */
string boardType; string boardType;
/**
* Whether to enable or disable the ramp generation on the board output channels. If false, the speedX and initialX dynamic attributes will not be created for every channel, and the changes will happen instantly. [true/false - default value is true]
*/
Tango::DevBoolean enableRamps;
/**
* Whether to write the memorized values to the board at the device initialization. [true/false - default value is false]
*/
Tango::DevBoolean outputMemorizedChannelsAtInit;
//@} //@}
/** /**
* @name Device properties * @name Device properties default values
* Device property member data. * Device properties default values.
*/ */
//@{ //@{
/**
* Default value for boardNum property
*/
Tango::DevShort boardNum_default;
/**
* Default value for boardType property
*/
string boardType_default;
/**
* Default value for enableRamps property
*/
Tango::DevBoolean enableRamps_default;
/**
* Default value for outputMemorizedChannelsAtInit property
*/
Tango::DevBoolean outputMemorizedChannelsAtInit_default;
//@} //@}
/**@name Constructors /**@name Constructors
...@@ -279,76 +303,13 @@ protected : ...@@ -279,76 +303,13 @@ protected :
//- channel number //- channel number
unsigned short m_nb_chan; unsigned short m_nb_chan;
// To be deleted with Tango 8
//- Template class to store a current value in a Device property.
//- \param value Value to store.
//- \param property_name Name to use.
template <class T>
void store_value_as_property(T value, std::string property_name)
{
Tango::DbDatum current_value(property_name);
current_value << value;
Tango::DbData db_data;
db_data.push_back(current_value);
try void _abort();
{
get_db_device()->put_property(db_data);
}
catch(Tango::DevFailed &df)
{
ERROR_STREAM << df << endl;
RETHROW_DEVFAILED(df,
"SOFTWARE_FAILURE",
"Error while storing properties in database",
"SingleShotAO::store_value_as_property");
}
}
// To be deleted with Tango 8
//- Template class to get a memorized attribute stored as a Device property.
//- \param property_name Name od the property to read.
template <class T>
T get_memorized_attribute(const std::string& property_name)
{
T value;
if (!Tango::Util::instance()->_UseDb)
{
//- throw exception
THROW_DEVFAILED("DEVICE_ERROR",
"No DATA BASE!",
"SingleShotAO::get_memorized_attribute");
}
Tango::DbData dev_prop; // set the write value of a dynamic attribute
dev_prop.push_back(Tango::DbDatum(property_name)); // used to keep read and write values in sync
bool setDynamicAttributeWriteValue(const std::string& attrName, double value);
try
{
get_db_device()->get_property(dev_prop);
}
catch (Tango::DevFailed &df)
{
//- rethrow exception
RETHROW_DEVFAILED(df,
"DEVICE_ERROR",
"could not get Device properties! [caught Tango::DevFailed]",
"SingleShotAO::get_memorized_attribute");
}
if (dev_prop[0].is_empty()==false)
{
dev_prop[0] >> value;
}
else
{
//- throw exception
THROW_DEVFAILED("DATA_ERROR",
"No property stored in database!",
"SingleShotAO::get_memorized_attribute");
}
return value;
}
}; };
} // namespace_ns } // namespace_ns
......
...@@ -87,7 +87,8 @@ __declspec(dllexport) ...@@ -87,7 +87,8 @@ __declspec(dllexport)
#endif #endif
Tango::DeviceClass *_create_SingleShotAO_class(const char *name) { Tango::DeviceClass *_create_SingleShotAO_class(const char *name)
{
return SingleShotAO_ns::SingleShotAOClass::init(name); return SingleShotAO_ns::SingleShotAOClass::init(name);
} }
} }
...@@ -369,12 +370,17 @@ void SingleShotAOClass::set_default_property() ...@@ -369,12 +370,17 @@ void SingleShotAOClass::set_default_property()
string prop_def; string prop_def;
vector<string> vect_data; vector<string> vect_data;
// Set Default Class Properties // Set Default Class Properties
// ...
// Set Default Device Properties // Set Default Device Properties
//- <BoardNum> -----------------------
prop_name = "BoardNum"; prop_name = "BoardNum";
prop_desc = "The the board identifier in the cPCI crate [valid range is 0...7 - no default value] ."; prop_desc = "The board identifier in the cPCI crate [valid range is 0...7 - no default value].";
prop_def = ""; prop_def = "-1";
vect_data.clear(); vect_data.clear();
vect_data.push_back("-1");
if (prop_def.length()>0) if (prop_def.length()>0)
{ {
Tango::DbDatum data(prop_name); Tango::DbDatum data(prop_name);
...@@ -385,10 +391,12 @@ void SingleShotAOClass::set_default_property() ...@@ -385,10 +391,12 @@ void SingleShotAOClass::set_default_property()
else else
add_wiz_dev_prop(prop_name, prop_desc); add_wiz_dev_prop(prop_name, prop_desc);
//- <BoardType> -----------------------
prop_name = "BoardType"; prop_name = "BoardType";
prop_desc = "The board type [MAO_xxxx - where <xxxx> is the ADlink board identifier - e.g. MAO_6208 - no default value]"; prop_desc = "The board type [MAO_xxxx - where <xxxx> is the ADlink board identifier - e.g. MAO_6208 - no default value]";
prop_def = ""; prop_def = "TO_BE_DEFINED";
vect_data.clear(); vect_data.clear();
vect_data.push_back("TO_BE_DEFINED");
if (prop_def.length()>0) if (prop_def.length()>0)
{ {
Tango::DbDatum data(prop_name); Tango::DbDatum data(prop_name);
...@@ -399,7 +407,40 @@ void SingleShotAOClass::set_default_property() ...@@ -399,7 +407,40 @@ void SingleShotAOClass::set_default_property()
else else
add_wiz_dev_prop(prop_name, prop_desc); add_wiz_dev_prop(prop_name, prop_desc);
//- <EnableRamps> -----------------------
prop_name = "EnableRamps";
prop_desc = "Whether to enable or disable the ramp generation on the board output channels. If false, the speedX and initialX dynamic attributes will not be created for every channel, and the changes will happen instantly. [true/false - default value is true]";
prop_def = "true";
vect_data.clear();
vect_data.push_back("true");
if (prop_def.length() > 0)
{
Tango::DbDatum data(prop_name);
data << vect_data;
dev_def_prop.push_back(data);
add_wiz_dev_prop(prop_name, prop_desc, prop_def);
}
else
add_wiz_dev_prop(prop_name, prop_desc);
//- <OutputMemorizedChannelsAtInit> -----------------------
prop_name = "OutputMemorizedChannelsAtInit";
prop_desc = "Whether to send the memorized values for the channels to the board at the device initialization (the device attribute will show the last memorized value regardless) [true/false - default value is false]";
prop_def = "false";
vect_data.clear();
vect_data.push_back("false");
if (prop_def.length() > 0)
{
Tango::DbDatum data(prop_name);
data << vect_data;
dev_def_prop.push_back(data);
add_wiz_dev_prop(prop_name, prop_desc, prop_def);
} }
else
add_wiz_dev_prop(prop_name, prop_desc);
}
//+---------------------------------------------------------------------------- //+----------------------------------------------------------------------------
// //
// method : SingleShotAOClass::write_class_property // method : SingleShotAOClass::write_class_property
...@@ -432,107 +473,6 @@ void SingleShotAOClass::write_class_property() ...@@ -432,107 +473,6 @@ void SingleShotAOClass::write_class_property()
description << str_desc; description << str_desc;
data.push_back(description); data.push_back(description);
// put cvs or svn location
string filename(classname);
filename += "Class.cpp";
// Create a string with the class ID to
// get the string into the binary
string class_id(ClassId);
// check for cvs information
string src_path(CvsPath);
start = src_path.find("/");
if (start!=string::npos)
{
end = src_path.find(filename);
if (end>start)
{
string strloc = src_path.substr(start, end-start);
// Check if specific repository
start = strloc.find("/cvsroot/");
if (start!=string::npos && start>0)
{
string repository = strloc.substr(0, start);
if (repository.find("/segfs/")!=string::npos)
strloc = "ESRF:" + strloc.substr(start, strloc.length()-start);
}
Tango::DbDatum cvs_loc("cvs_location");
cvs_loc << strloc;
data.push_back(cvs_loc);
}
}
// check for svn information
else
{
string src_path(SvnPath);
start = src_path.find("://");
if (start!=string::npos)
{
end = src_path.find(filename);
if (end>start)
{
header = "$HeadURL: ";
start = header.length();
string strloc = src_path.substr(start, (end-start));
Tango::DbDatum svn_loc("svn_location");
svn_loc << strloc;
data.push_back(svn_loc);
}
}
}
// Get CVS or SVN revision tag
// CVS tag
string tagname(TagName);
header = "$Name: ";
start = header.length();
string endstr(" $");
end = tagname.find(endstr);
if (end!=string::npos && end>start)
{
string strtag = tagname.substr(start, end-start);
Tango::DbDatum cvs_tag("cvs_tag");
cvs_tag << strtag;
data.push_back(cvs_tag);
}
// SVN tag
string svnpath(SvnPath);
header = "$HeadURL: ";
start = header.length();
end = svnpath.find(endstr);
if (end!=string::npos && end>start)
{
string strloc = svnpath.substr(start, end-start);
string tagstr ("/tags/");
start = strloc.find(tagstr);
if ( start!=string::npos )
{
start = start + tagstr.length();
end = strloc.find(filename);
string strtag = strloc.substr(start, end-start-1);
Tango::DbDatum svn_tag("svn_tag");
svn_tag << strtag;
data.push_back(svn_tag);
}
}
// Get URL location
string httpServ(HttpServer);
if (httpServ.length()>0)
{
Tango::DbDatum db_doc_url("doc_url");
db_doc_url << httpServ;
data.push_back(db_doc_url);
}
// Put inheritance // Put inheritance
Tango::DbDatum inher_datum("InheritedFrom"); Tango::DbDatum inher_datum("InheritedFrom");
vector<string> inheritance; vector<string> inheritance;
...@@ -540,8 +480,7 @@ void SingleShotAOClass::write_class_property() ...@@ -540,8 +480,7 @@ void SingleShotAOClass::write_class_property()
inher_datum << inheritance; inher_datum << inheritance;
data.push_back(inher_datum); data.push_back(inher_datum);
// Call database and and values // Call database and add values
//--------------------------------------------
get_db_class()->put_property(data); get_db_class()->put_property(data);
} }
......
...@@ -128,7 +128,7 @@ void SingleShotAOManager::write_frequency(double p_frequency) ...@@ -128,7 +128,7 @@ void SingleShotAOManager::write_frequency(double p_frequency)
// ============================================================================ // ============================================================================
// SingleShotAOManager::init () // SingleShotAOManager::init ()
// ============================================================================ // ============================================================================
void SingleShotAOManager::init(asl::SingleShotAO * p_ssao, unsigned short p_nb_chan, double p_frequency) void SingleShotAOManager::init(asl::SingleShotAO * p_ssao, unsigned short p_nb_chan, double p_frequency, bool p_enable_ramps)
{ {
m_ssao = p_ssao; m_ssao = p_ssao;
CHECK_SSAO(); CHECK_SSAO();
...@@ -145,6 +145,8 @@ void SingleShotAOManager::init(asl::SingleShotAO * p_ssao, unsigned short p_nb_c ...@@ -145,6 +145,8 @@ void SingleShotAOManager::init(asl::SingleShotAO * p_ssao, unsigned short p_nb_c
enable_periodic_msg(true); enable_periodic_msg(true);
} }
m_enable_ramps = p_enable_ramps;
// initialize channel indexes (-1 means no ramp in progress) // initialize channel indexes (-1 means no ramp in progress)
// and ramp states // and ramp states
for (unsigned int l_cpt = 0; l_cpt < m_nb_chan; l_cpt++) for (unsigned int l_cpt = 0; l_cpt < m_nb_chan; l_cpt++)
...@@ -180,7 +182,6 @@ void SingleShotAOManager::process_message (yat::Message& msg) ...@@ -180,7 +182,6 @@ void SingleShotAOManager::process_message (yat::Message& msg)
//- THREAD_PERIODIC ------------------ //- THREAD_PERIODIC ------------------
case yat::TASK_PERIODIC: case yat::TASK_PERIODIC:
{ {
//DEBUG_STREAM << "SingleShotAOManager::handle_message::THREAD_PERIODIC" << std::endl;
periodic_job_i(); periodic_job_i();
} }
break; break;
...@@ -191,12 +192,15 @@ void SingleShotAOManager::process_message (yat::Message& msg) ...@@ -191,12 +192,15 @@ void SingleShotAOManager::process_message (yat::Message& msg)
//- not used in this example //- not used in this example
} }
break; break;
//- UNHANDLED MSG -------------------- //- UNHANDLED MSG --------------------
default: default:
{
DEBUG_STREAM << "SingleShotAOManager::handle_message::unhandled msg type received" << std::endl; DEBUG_STREAM << "SingleShotAOManager::handle_message::unhandled msg type received" << std::endl;
break; break;
} }
} }
}
// ============================================================================ // ============================================================================
// SingleShotAOManager::periodic_job_i () // SingleShotAOManager::periodic_job_i ()
...@@ -207,9 +211,12 @@ void SingleShotAOManager::periodic_job_i() ...@@ -207,9 +211,12 @@ void SingleShotAOManager::periodic_job_i()
for (unsigned int l_cpt = 0;l_cpt < m_nb_chan;l_cpt++) for (unsigned int l_cpt = 0;l_cpt < m_nb_chan;l_cpt++)
{ {
// test if a ramp step must occur // test if a ramp step must occur
if (m_currentIndex[l_cpt] != -1) if (m_currentIndex[l_cpt] == -1)
{ {
//DEBUG_STREAM << "Current index for channel" << l_cpt << ": " << m_currentIndex[l_cpt] << endl; m_isRunning[l_cpt] = false;
continue;
}
m_isRunning[l_cpt] = true; m_isRunning[l_cpt] = true;
double l_val = 0; double l_val = 0;
l_val = m_ramps[l_cpt][m_currentIndex[l_cpt]]; l_val = m_ramps[l_cpt][m_currentIndex[l_cpt]];
...@@ -243,16 +250,12 @@ void SingleShotAOManager::periodic_job_i() ...@@ -243,16 +250,12 @@ void SingleShotAOManager::periodic_job_i()
m_currentIndex[l_cpt] += 1; m_currentIndex[l_cpt] += 1;
if (m_currentIndex[l_cpt] == m_ramps[l_cpt].capacity()) if (m_currentIndex[l_cpt] == m_ramps[l_cpt].capacity())
{ {
DEBUG_STREAM << "Ramp finished for channel" << l_cpt << endl;
m_currentIndex[l_cpt] = -1; m_currentIndex[l_cpt] = -1;
m_initials[l_cpt] = m_channels[l_cpt]; m_initials[l_cpt] = m_channels[l_cpt];
m_ramps[l_cpt].clear(); m_ramps[l_cpt].clear();
} }
} }
else
{
m_isRunning[l_cpt] = false;
}
}
} }
// ============================================================================ // ============================================================================
...@@ -264,13 +267,26 @@ double SingleShotAOManager::get_channel(ChannelId_t p_chIdx) ...@@ -264,13 +267,26 @@ double SingleShotAOManager::get_channel(ChannelId_t p_chIdx)
} }
// ============================================================================ // ============================================================================
// SingleShotAOManager::write_channel () // SingleShotAOManager::set_channel ()
// ============================================================================ // ============================================================================
void SingleShotAOManager::write_channel(ChannelId_t p_chIdx, double p_val) void SingleShotAOManager::set_channel(ChannelId_t p_chIdx, double p_val)
{
if (m_isRunning[p_chIdx])
{
THROW_DEVFAILED("DEVICE_FAILURE",
"could not write channel : a ramp is still in progress on this channel",
"SingleShotAOManager::set_channel");
}
else
{ {
DEBUG_STREAM << "write_channel : " << p_chIdx << " : " << p_val << " : " << endl; m_channels[p_chIdx] = p_val;
}
}
if (m_speeds[p_chIdx] == 0.0) // ============================================================================
// SingleShotAOManager::write_channel_direct ()
// ============================================================================
void SingleShotAOManager::write_channel_direct(ChannelId_t p_chIdx, double p_val)
{ {
try try
{ {
...@@ -278,41 +294,33 @@ void SingleShotAOManager::write_channel(ChannelId_t p_chIdx, double p_val) ...@@ -278,41 +294,33 @@ void SingleShotAOManager::write_channel(ChannelId_t p_chIdx, double p_val)
m_ssao->write_scaled_channel((adl::ChanId)p_chIdx, p_val); m_ssao->write_scaled_channel((adl::ChanId)p_chIdx, p_val);
m_channels[p_chIdx] = p_val; m_channels[p_chIdx] = p_val;
m_initials[p_chIdx] = p_val; m_initials[p_chIdx] = p_val;
DEBUG_STREAM << "Writing directly the value" << std::endl;
} }
catch (const asl::DAQException &de) catch (const asl::DAQException &de)
{ {
Tango::DevFailed df = daq_to_tango_exception(de); Tango::DevFailed df = daq_to_tango_exception(de);
ERROR_STREAM << df<< endl; ERROR_STREAM << df << std::endl;
m_state = Tango::FAULT; m_state = Tango::FAULT;
RETHROW_DEVFAILED(df, RETHROW_DEVFAILED(df,
"DRIVER_FAILURE", "DRIVER_FAILURE",
"could not write channel [caught asl::DAQException]", "could not write channel [caught asl::DAQException]",
"SingleShotAOManager::write_channel"); "SingleShotAOManager::write_channel_direct");
} }
catch (...) catch (...)
{ {
ERROR_STREAM << "SingleShotAOManager::write_channel::unknown exception caught"<<std::endl; ERROR_STREAM << "SingleShotAOManager::write_channel_direct::unknown exception caught" << std::endl;
m_state = Tango::FAULT; m_state = Tango::FAULT;
THROW_DEVFAILED("DRIVER_FAILURE", THROW_DEVFAILED("DRIVER_FAILURE",
"could not write channel [unknown error]", "could not write channel [unknown error]",
"SingleShotAOManager::write_channel"); "SingleShotAOManager::write_channel_direct");
}
} }
else
{
// check if a ramp is not running
if (!m_isRunning[p_chIdx])
{
// check if initial = channel
if (m_initials[p_chIdx] != p_val)
{
if (m_frequency == 0)
{
THROW_DEVFAILED("DRIVER_FAILURE",
"could not set a ramp on this channel. The frequency is 0",
"SingleShotAOManager::write_channel");
} }
// ============================================================================
// SingleShotAOManager::start_channel_ramp ()
// ============================================================================
void SingleShotAOManager::start_channel_ramp(ChannelId_t p_chIdx, double p_val)
{
// ramp determination // ramp determination
double l_delta = p_val - m_initials[p_chIdx]; double l_delta = p_val - m_initials[p_chIdx];
bool isDown = false; bool isDown = false;
...@@ -330,18 +338,12 @@ void SingleShotAOManager::write_channel(ChannelId_t p_chIdx, double p_val) ...@@ -330,18 +338,12 @@ void SingleShotAOManager::write_channel(ChannelId_t p_chIdx, double p_val)
l_buffer.force_length(ramp_size); l_buffer.force_length(ramp_size);
// check if ramp step is integer or not // check if ramp step is integer or not
bool isDeltaNotInt = false; bool isDeltaNotInt = (ramp_size != ((size_t)(floor(l_delta))));
if (ramp_size != ((size_t)(floor(l_delta))))
{
isDeltaNotInt = true;
}
DEBUG_STREAM << "Real ramp steps number : " << ramp_size << endl; DEBUG_STREAM << "Real ramp steps number : " << ramp_size << endl;
for (unsigned int l_cpt = 0; l_cpt < ramp_size; l_cpt++) for (unsigned int l_cpt = 0; l_cpt < ramp_size; l_cpt++)
{ {
if ((l_cpt == (ramp_size - 1)) && if ((l_cpt == (ramp_size - 1)) && (isDeltaNotInt))
(isDeltaNotInt))
{ {
// add the setpoint value at the end of table // add the setpoint value at the end of table
l_buffer[l_cpt] = p_val; l_buffer[l_cpt] = p_val;
...@@ -364,16 +366,47 @@ void SingleShotAOManager::write_channel(ChannelId_t p_chIdx, double p_val) ...@@ -364,16 +366,47 @@ void SingleShotAOManager::write_channel(ChannelId_t p_chIdx, double p_val)
m_ramps[p_chIdx].force_length(0); m_ramps[p_chIdx].force_length(0);
m_currentIndex[p_chIdx] = 0; m_currentIndex[p_chIdx] = 0;
m_ramps[p_chIdx] = l_buffer; m_ramps[p_chIdx] = l_buffer;
//m_channels[p_chIdx] = m_ramps[p_chIdx][0]; -- soso on ne met rien ici => à l'application
} }
// ============================================================================
// SingleShotAOManager::write_channel ()
// ============================================================================
void SingleShotAOManager::write_channel(ChannelId_t p_chIdx, double p_val)
{
DEBUG_STREAM << "write_channel " << p_chIdx << " : " << p_val << endl;
// if the speed is 0, write the value directly and skip ramp
if (m_speeds[p_chIdx] == 0.0 || !m_enable_ramps)
{
write_channel_direct(p_chIdx, p_val);
return;
} }
else
// if a ramp is running, error
if (m_isRunning[p_chIdx])
{ {
THROW_DEVFAILED("DEVICE_FAILURE", THROW_DEVFAILED("DEVICE_FAILURE",
"could not write channel : a ramp is still in progress on this channel", "could not write channel : a ramp is still in progress on this channel",
"SingleShotAOManager::write_channel"); "SingleShotAOManager::write_channel");
} }
// if frequency = 0, error
if (m_frequency == 0)
{
THROW_DEVFAILED("DRIVER_FAILURE",
"could not set a ramp on this channel. The frequency is 0",
"SingleShotAOManager::write_channel");
} }
// if initial = channel, skip
if (m_initials[p_chIdx] == p_val)
{
DEBUG_STREAM << "Initial value is the same as the given value, skipping" << endl;
return;
}
// Create and start a ramp
start_channel_ramp(p_chIdx, p_val);
} }
// ============================================================================ // ============================================================================
...@@ -395,6 +428,12 @@ void SingleShotAOManager::set_initial(ChannelId_t p_chIdx, Intial_t p_initial) ...@@ -395,6 +428,12 @@ void SingleShotAOManager::set_initial(ChannelId_t p_chIdx, Intial_t p_initial)
"could not write initial : a ramp is still in progress on this channel", "could not write initial : a ramp is still in progress on this channel",
"SingleShotAOManager::set_initial"); "SingleShotAOManager::set_initial");
} }
else if (!m_enable_ramps)
{
THROW_DEVFAILED("DEVICE_FAILURE",
"could not write initial : ramps are disabled",
"SingleShotAOManager::set_initial");
}
else else
{ {
m_initials[p_chIdx] = p_initial; m_initials[p_chIdx] = p_initial;
...@@ -420,12 +459,26 @@ void SingleShotAOManager::set_speed(ChannelId_t p_chIdx, Intial_t p_speed) ...@@ -420,12 +459,26 @@ void SingleShotAOManager::set_speed(ChannelId_t p_chIdx, Intial_t p_speed)
"could not write speed : a ramp is still in progress on this channel", "could not write speed : a ramp is still in progress on this channel",
"SingleShotAOManager::set_speed"); "SingleShotAOManager::set_speed");
} }
else if (!m_enable_ramps)
{
THROW_DEVFAILED("DEVICE_FAILURE",
"could not write speed : ramps are disabled",
"SingleShotAOManager::set_speed");
}
else else
{ {
m_speeds[p_chIdx] = p_speed; m_speeds[p_chIdx] = p_speed;
} }
} }
// ============================================================================
// SingleShotAOManager::is_running ()
// ============================================================================
bool SingleShotAOManager::is_running(ChannelId_t p_chIdx)
{
return m_isRunning[p_chIdx];
}
// ============================================================================ // ============================================================================
// SingleShotAOManager::abort () // SingleShotAOManager::abort ()
// ============================================================================ // ============================================================================
...@@ -444,5 +497,5 @@ void SingleShotAOManager::abort() ...@@ -444,5 +497,5 @@ void SingleShotAOManager::abort()
} }
} }
} }
} // namespace SingleShotAO_ns
} // namespace SingleShotAO_ns
...@@ -48,21 +48,32 @@ public: ...@@ -48,21 +48,32 @@ public:
std::string get_status (); std::string get_status ();
//- init //- init
void init(asl::SingleShotAO * p_ssao, unsigned short p_nb_chan, double p_frequency); void init(asl::SingleShotAO *p_ssao, unsigned short p_nb_chan, double p_frequency, bool p_enable_ramps);
//- get current channel value //- get current channel value
double get_channel(ChannelId_t p_chIdx); double get_channel(ChannelId_t p_chIdx);
//- set channel
// Updates the value for the channel in the device without sending it to hardware
void set_channel(ChannelId_t p_chIdx, double p_val);
//- write channel //- write channel
// Writes value to the channel to the device and the hardware, with a ramp if speed is not null and EnableRamps property is true
void write_channel(ChannelId_t p_chIdx, double p_val); void write_channel(ChannelId_t p_chIdx, double p_val);
//- write a channel directly (without ramp)
void write_channel_direct(ChannelId_t p_chIdx, double p_val);
//- create and start a ramp for channel
void start_channel_ramp(ChannelId_t p_chIdx, double p_val);
//- change period //- change period
void write_frequency(double p_frequency); void write_frequency(double p_frequency);
//- get inital //- get initial
Intial_t get_initial(ChannelId_t p_chIdx); Intial_t get_initial(ChannelId_t p_chIdx);
//- set inital //- set initial
void set_initial(ChannelId_t p_chIdx, Intial_t p_initial); void set_initial(ChannelId_t p_chIdx, Intial_t p_initial);
//- get speed //- get speed
...@@ -71,6 +82,9 @@ public: ...@@ -71,6 +82,9 @@ public:
//- set speed //- set speed
void set_speed(ChannelId_t p_chIdx, Intial_t p_speed); void set_speed(ChannelId_t p_chIdx, Intial_t p_speed);
//- is running
bool is_running(ChannelId_t p_chIdx);
//- abort //- abort
void abort(); void abort();
...@@ -95,6 +109,9 @@ private: ...@@ -95,6 +109,9 @@ private:
//- frequency //- frequency
double m_frequency; double m_frequency;
//-enable ramps
bool m_enable_ramps;
//- initial buffer for all channels //- initial buffer for all channels
std::map<ChannelId_t, Intial_t> m_initials; std::map<ChannelId_t, Intial_t> m_initials;
......