Skip to content
Snippets Groups Projects
Commit a840d08a authored by Stephane LE's avatar Stephane LE
Browse files

initial import

parent f6ff0ec5
Branches
Tags
No related merge requests found
Showing
with 5812 additions and 0 deletions
File added
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<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>
<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></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></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></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></A>
</Td>
<Td>
<H2><FONT COLOR="#7F00FF">
<Center><A HREF="http://www.esrf.fr/Infrastructure/Computing/tango/" TARGET="_top">
TANGO </a> <Br> Device Server
</Center></FONT>
</Td>
</TR>
</TABLE>
<HR WIDTH="100%"></H5>
<Br>
<center>
<h1>
Pulse Generation <Br>
Device Attributes Description <Br> <Br>
PulseGeneration Class <Br>
</h1>
<b>
Revision: - Author: abeilleg
</b>
</center>
<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>
<Font Size=-1>
<Tr><Td><b>counter0Enable</b>: <Font Size=-1>counter 0 is disable if 0, enable otherwise.</Font></Td>
<Td><Center><Font Size=-1>DEV_BOOLEAN</Font></Center></Td><Td><Center><Font Size=-1>READ_WRITE</Font></Center></Td><Td><Center><Font Size=-1>No</Font></Center></Td></Tr>
<Font Size=-1>
<Tr><Td><b>delayCounter0</b>: <Font Size=-1>Delay in milliseconds for counter 0.</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>No</Font></Center></Td></Tr>
<Font Size=-1>
<Tr><Td><b>pulseWidthCounter0</b>: <Font Size=-1>The pulse width in milliseconds of pulses generated by counter 0.</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>No</Font></Center></Td></Tr>
<Font Size=-1>
<Tr><Td><b>counter1Enable</b>: <Font Size=-1>counter 1 is disable if 0, enable otherwise.</Font></Td>
<Td><Center><Font Size=-1>DEV_BOOLEAN</Font></Center></Td><Td><Center><Font Size=-1>READ_WRITE</Font></Center></Td><Td><Center><Font Size=-1>No</Font></Center></Td></Tr>
<Font Size=-1>
<Tr><Td><b>delayCounter1</b>: <Font Size=-1>Delay in milliseconds for counter 1.</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>No</Font></Center></Td></Tr>
<Font Size=-1>
<Tr><Td><b>pulseWidthCounter1</b>: <Font Size=-1>The pulse width in milliseconds of pulses generated by counter 1.</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>No</Font></Center></Td></Tr>
<Font Size=-1>
<Tr><Td><b>counter2Enable</b>: <Font Size=-1>counter 2 is disable if 0, enable otherwise.</Font></Td>
<Td><Center><Font Size=-1>DEV_BOOLEAN</Font></Center></Td><Td><Center><Font Size=-1>READ_WRITE</Font></Center></Td><Td><Center><Font Size=-1>No</Font></Center></Td></Tr>
<Font Size=-1>
<Tr><Td><b>delayCounter2</b>: <Font Size=-1>Delay in milliseconds for counter 2.</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>No</Font></Center></Td></Tr>
<Font Size=-1>
<Tr><Td><b>pulseWidthCounter2</b>: <Font Size=-1>The pulse width in milliseconds of pulses generated by counter 2.</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>No</Font></Center></Td></Tr>
<Font Size=-1>
<Tr><Td><b>counter3Enable</b>: <Font Size=-1>counter 3 is disable if 0, enable otherwise.</Font></Td>
<Td><Center><Font Size=-1>DEV_BOOLEAN</Font></Center></Td><Td><Center><Font Size=-1>READ_WRITE</Font></Center></Td><Td><Center><Font Size=-1>No</Font></Center></Td></Tr>
<Font Size=-1>
<Tr><Td><b>delayCounter3</b>: <Font Size=-1>Delay in milliseconds for counter 3.</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>No</Font></Center></Td></Tr>
<Font Size=-1>
<Tr><Td><b>pulseWidthCounter3</b>: <Font Size=-1>The pulse width in milliseconds of pulses generated by counter 3.</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>No</Font></Center></Td></Tr>
<Font Size=-1>
<Tr><Td><b>counter4Enable</b>: <Font Size=-1>counter 4 is disable if 0, enable otherwise.</Font></Td>
<Td><Center><Font Size=-1>DEV_BOOLEAN</Font></Center></Td><Td><Center><Font Size=-1>READ_WRITE</Font></Center></Td><Td><Center><Font Size=-1>No</Font></Center></Td></Tr>
<Font Size=-1>
<Tr><Td><b>delayCounter4</b>: <Font Size=-1>Delay in milliseconds for counter 4.</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>No</Font></Center></Td></Tr>
<Font Size=-1>
<Tr><Td><b>pulseWidthCounter4</b>: <Font Size=-1>The pulse width in milliseconds of pulses generated by counter 4.</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>No</Font></Center></Td></Tr>
<Font Size=-1>
<Tr><Td><b>counter5Enable</b>: <Font Size=-1>counter 5 is disable if 0, enable otherwise.</Font></Td>
<Td><Center><Font Size=-1>DEV_BOOLEAN</Font></Center></Td><Td><Center><Font Size=-1>READ_WRITE</Font></Center></Td><Td><Center><Font Size=-1>No</Font></Center></Td></Tr>
<Font Size=-1>
<Tr><Td><b>delayCounter5</b>: <Font Size=-1>Delay in milliseconds for counter 5.</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>No</Font></Center></Td></Tr>
<Font Size=-1>
<Tr><Td><b>pulseWidthCounter5</b>: <Font Size=-1>The pulse width in milliseconds of pulses generated by counter 5.</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>No</Font></Center></Td></Tr>
<Font Size=-1>
<Tr><Td><b>counter6Enable</b>: <Font Size=-1>counter 6 is disable if 0, enable otherwise.</Font></Td>
<Td><Center><Font Size=-1>DEV_BOOLEAN</Font></Center></Td><Td><Center><Font Size=-1>READ_WRITE</Font></Center></Td><Td><Center><Font Size=-1>No</Font></Center></Td></Tr>
<Font Size=-1>
<Tr><Td><b>delayCounter6</b>: <Font Size=-1>Delay in milliseconds for counter 6.</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>No</Font></Center></Td></Tr>
<Font Size=-1>
<Tr><Td><b>pulseWidthCounter6</b>: <Font Size=-1>The pulse width in milliseconds of pulses generated by counter 6.</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>No</Font></Center></Td></Tr>
<Font Size=-1>
<Tr><Td><b>counter7Enable</b>: <Font Size=-1>counter 7 is enable if true, disable otherwise.</Font></Td>
<Td><Center><Font Size=-1>DEV_BOOLEAN</Font></Center></Td><Td><Center><Font Size=-1>READ_WRITE</Font></Center></Td><Td><Center><Font Size=-1>No</Font></Center></Td></Tr>
<Font Size=-1>
<Tr><Td><b>delayCounter7</b>: <Font Size=-1>Delay in milliseconds for counter 7.</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>No</Font></Center></Td></Tr>
<Font Size=-1>
<Tr><Td><b>pulseWidthCounter7</b>: <Font Size=-1>The pulse width in milliseconds of pulses generated by counter 7.</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>No</Font></Center></Td></Tr>
</Table>
</Center>
<Br><Br><Br><Br><Br>
<Center>
<Br>
<HR WIDTH="100%"></H5>
<H3> ESRF - Software Engineering Group </H3>
</Center>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<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>
<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></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></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></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></A>
</Td>
<Td>
<H2><FONT COLOR="#7F00FF">
<Center><A HREF="http://www.esrf.fr/Infrastructure/Computing/tango/" TARGET="_top">
TANGO </a> <Br> Device Servers
</Center></FONT>
</Td>
</TR>
</TABLE>
<Br>
<HR WIDTH="100%"></H5>
<Br>
<center>
<h1>
Retriggerable Single Pulse Generation <Br>
Device Description <Br> <Br>
PulseGeneration Class <Br>
</h1>
<b>
Revision: - Author: abeilleg
</b>
</center>
<Center>
Generate a single pulse on 8 counters each time a trigger is received. The delay
and the width of each pulse is configurable.
<Br>
<Br>
</Center>
<Center>
<Br>
<HR WIDTH="100%"></H5>
<H3> ESRF - Software Engineering Group </H3>
</Center>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<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>
<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></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></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></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></A>
</Td>
<Td>
<H2><FONT COLOR="#7F00FF">
<Center><A HREF="http://www.esrf.fr/Infrastructure/Computing/tango/" TARGET="_top">
TANGO </a> <Br> Device Server
</Center></FONT>
</Td>
</TR>
</TABLE>
<HR WIDTH="100%"></H5>
<Br>
<center>
<h1>
Pulse Generation <Br>
Device Commands Description <Br> <Br>
PulseGeneration Class <Br>
</h1>
<b>
Revision: - Author: abeilleg
</b>
</center>
<Br>
<Br>
<Br>
<A NAME="Init"><!-- --></A>
<A NAME="Init"><!-- --></A>
<h2>1 - Init</h2>
<ul>
<Li><Strong>Description: </Strong> This commands re-initialise a device keeping the same network connection.<Br>
After an Init command executed on a device, it is not necessary for client to re-connect to the device.<Br>
This command first calls the device <i> delete_device() </i>method and then execute its <i> init_device()</i> method.<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>
The language device desctructor automatically calls the <i> delete_device() </i> method.<Br>&nbsp
<Li><Strong>Argin:<Br>DEV_VOID</Strong>
: none.<Br>&nbsp
<Li><Strong>Argout:<Br>DEV_VOID</Strong>
: none.<Br>&nbsp
<Li><Strong>Command allowed for: </Strong><Ul>
<Li>Tango::UNKNOWN<Li>Tango::STANDBY<Li>Tango::RUNNING</Ul>
<Br>&nbsp
</ul><Br>
<Br>
<A NAME="State"><!-- --></A>
<A NAME="State"><!-- --></A>
<h2>2 - State</h2>
<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>Argin:<Br>DEV_VOID</Strong>
: none.<Br>&nbsp
<Li><Strong>Argout:<Br>DEV_STATE</Strong>
: State Code<Br>&nbsp
<Li><Strong>Command allowed for: </Strong><Ul>
<Li>Tango::UNKNOWN<Li>Tango::STANDBY<Li>Tango::RUNNING</Ul>
<Br>&nbsp
</ul><Br>
<Br>
<A NAME="Status"><!-- --></A>
<A NAME="Status"><!-- --></A>
<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::UNKNOWN<Li>Tango::STANDBY<Li>Tango::RUNNING</Ul>
<Br>&nbsp
</ul><Br>
<Br>
<A NAME="Start"><!-- --></A>
<A NAME="Start"><!-- --></A>
<h2>4 - Start</h2>
<ul>
<Li><Strong>Description: </Strong> Start generations of pulses.<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::STANDBY</Ul>
<Br>&nbsp
</ul><Br>
<Br>
<A NAME="Stop"><!-- --></A>
<A NAME="Stop"><!-- --></A>
<h2>5 - Stop</h2>
<ul>
<Li><Strong>Description: </Strong> Stop generations of pulses.<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::RUNNING</Ul>
<Br>&nbsp
</ul><Br>
<Br>
<A NAME="Abort"><!-- --></A>
<A NAME="Abort"><!-- --></A>
<h2>6 - Abort</h2>
<ul>
<Li><Strong>Description: </Strong> Abort generations.<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::RUNNING</Ul>
<Br>&nbsp
</ul><Br>
<Br>
<A NAME="ResetBoard"><!-- --></A>
<A NAME="ResetBoard"><!-- --></A>
<h2>7 - ResetBoard</h2>
<ul>
<Li><Strong>Description: </Strong> Reset the physical board. After this command, the board is in an unknown state
(no more configured). The device must be initialized.<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::UNKNOWN<Li>Tango::STANDBY<Li>Tango::RUNNING</Ul>
<Br>&nbsp
</ul><Br>
<Br>
<A NAME="GetDriverVersion"><!-- --></A>
<A NAME="GetDriverVersion"><!-- --></A>
<h2>8 - GetDriverVersion (for expert only)</h2>
<ul>
<Li><Strong>Description: </Strong> Get the current version of the driver installed for NI counter boards.<Br>&nbsp
<Li><Strong>Argin:<Br>DEV_VOID</Strong>
: <Br>&nbsp
<Li><Strong>Argout:<Br>DEV_STRING</Strong>
: The driver version<Br>&nbsp
<Li><Strong>Command allowed for: </Strong><Ul>
<Li>Tango::UNKNOWN<Li>Tango::STANDBY<Li>Tango::RUNNING</Ul>
<Br>&nbsp
</ul><Br>
<Br>
<A NAME="GetBoardsInChassis"><!-- --></A>
<A NAME="GetBoardsInChassis"><!-- --></A>
<h2>9 - GetBoardsInChassis (for expert only)</h2>
<ul>
<Li><Strong>Description: </Strong> Get a string containing all the boards names (from NI) present in the chassis
where this device is running. This names are defined in MAX.<Br>&nbsp
<Li><Strong>Argin:<Br>DEV_VOID</Strong>
: <Br>&nbsp
<Li><Strong>Argout:<Br>DEV_STRING</Strong>
: All the names of NI boards.<Br>&nbsp
<Li><Strong>Command allowed for: </Strong><Ul>
<Li>Tango::UNKNOWN<Li>Tango::STANDBY<Li>Tango::RUNNING</Ul>
<Br>&nbsp
</ul><Br>
<Br>
<A NAME="GetBoardType"><!-- --></A>
<A NAME="GetBoardType"><!-- --></A>
<h2>10 - GetBoardType (for expert only)</h2>
<ul>
<Li><Strong>Description: </Strong> Returns the type (ex: PXI-6602) of a specified board.<Br>&nbsp
<Li><Strong>Argin:<Br>DEV_STRING</Strong>
: The board name.<Br>&nbsp
<Li><Strong>Argout:<Br>DEV_STRING</Strong>
: The board type.<Br>&nbsp
<Li><Strong>Command allowed for: </Strong><Ul>
<Li>Tango::UNKNOWN<Li>Tango::STANDBY<Li>Tango::RUNNING</Ul>
<Br>&nbsp
</ul><Br>
<Br>
<Center>
<Br>
<HR WIDTH="100%"></H5>
<H3> ESRF - Software Engineering Group </H3>
</Center>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<Title> Tango Device Server User's Guide </Title>
</HEAD>
<FRAMESET cols="20%,80%">
<FRAME src="DevCommandsList.html" name="DevCommandsList">
<FRAME src="DevCommands.html" name="DevCommands">
</FRAMESET>
<NOFRAMES>
<H2>
Frame Alert</H2>
<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.
<BR>
Link to <A HREF="DevCommands.html">Non-frame version.</A></NOFRAMES>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML><HEAD>
<TITLE>Commands
</TITLE></HEAD>
<BODY BGCOLOR="white">
<FONT size="+1" ID="FrameHeadingFont">
<B>Commands:</B></FONT>
<Br>
<Br>
<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#Status" TARGET="DevCommands"> Status</a><Br>
<A Href="DevCommands.html#Start" TARGET="DevCommands"> Start</a><Br>
<A Href="DevCommands.html#Stop" TARGET="DevCommands"> Stop</a><Br>
<A Href="DevCommands.html#Abort" TARGET="DevCommands"> Abort</a><Br>
<A Href="DevCommands.html#ResetBoard" TARGET="DevCommands"> ResetBoard</a><Br>
<A Href="DevCommands.html#GetDriverVersion" TARGET="DevCommands"> GetDriverVersion</a><Br>
<A Href="DevCommands.html#GetBoardsInChassis" TARGET="DevCommands"> GetBoardsInChassis</a><Br>
<A Href="DevCommands.html#GetBoardType" TARGET="DevCommands"> GetBoardType</a><Br>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<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>
<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></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></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></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></A>
</Td>
<Td>
<H2><FONT COLOR="#7F00FF">
<Center><A HREF="http://www.esrf.fr/Infrastructure/Computing/tango/" TARGET="_top">
TANGO </a> <Br> Device Server
</Center></FONT>
</Td>
</TR>
</TABLE>
<HR WIDTH="100%"></H5>
<Br>
<center>
<h1>
Pulse Generation <Br>
Device Commands Description <Br> <Br>
PulseGeneration Class <Br>
</h1>
<b>
Revision: - Author: abeilleg
</b>
</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>Start</b></Td>
<Td><Font Size=-1>DEV_VOID</Font></Td>
<Td><Font Size=-1>DEV_VOID</Font></Td>
<Tr><Td><b>Stop</b></Td>
<Td><Font Size=-1>DEV_VOID</Font></Td>
<Td><Font Size=-1>DEV_VOID</Font></Td>
<Tr><Td><b>Abort</b></Td>
<Td><Font Size=-1>DEV_VOID</Font></Td>
<Td><Font Size=-1>DEV_VOID</Font></Td>
<Tr><Td><b>ResetBoard</b></Td>
<Td><Font Size=-1>DEV_VOID</Font></Td>
<Td><Font Size=-1>DEV_VOID</Font></Td>
</Table></Center>
<Br> <Br> <Br>
<Center>
<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 Expert Level Only</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>GetDriverVersion</b></Td>
<Td><Font Size=-1>DEV_VOID</Font></Td>
<Td><Font Size=-1>DEV_STRING</Font></Td>
<Tr><Td><b>GetBoardsInChassis</b></Td>
<Td><Font Size=-1>DEV_VOID</Font></Td>
<Td><Font Size=-1>DEV_STRING</Font></Td>
<Tr><Td><b>GetBoardType</b></Td>
<Td><Font Size=-1>DEV_STRING</Font></Td>
<Td><Font Size=-1>DEV_STRING</Font></Td>
</Table></Center>
<Center>
<Br>
<HR WIDTH="100%"></H5>
<H3> ESRF - Software Engineering Group </H3>
</Center>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<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>
<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></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></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></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></A>
</Td>
<Td>
<H2><FONT COLOR="#7F00FF">
<Center><A HREF="http://www.esrf.fr/Infrastructure/Computing/tango/" TARGET="_top">
TANGO </a> <Br> Device Server
</Center></FONT>
</Td>
</TR>
</TABLE>
<HR WIDTH="100%"></H5>
<Br>
<center>
<h1>
Pulse Generation <Br>
Properties Description <Br> <Br>
PulseGeneration Class <Br>
</h1>
<b>
Revision: - Author: abeilleg
</b>
</center>
<Br> <Br> <Br>
<Center>
<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 Properties</b></td></Font></Center>
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<Td><Center><b>Property name</b></td></Center>
<Td><Center><b>Property type</b></td></Center>
<Td><Center><b>Description</b></td></Center>
<Tr><Td><b>TriggerSource</b></Td>
<Td><Font Size=-1>Tango::DEV_STRING</Font></Td>
<Td><Font Size=-1>The name of the terminal for the input trigger.</Font></Td></Tr>
<Tr><Td><b>BoardName</b></Td>
<Td><Font Size=-1>Tango::DEV_STRING</Font></Td>
<Td><Font Size=-1>The name of the board.</Font></Td></Tr>
<Tr><Td><b>AutoStart</b></Td>
<Td><Font Size=-1>Tango::DEV_BOOLEAN</Font></Td>
<Td><Font Size=-1>If true, the generation will start at device startup and when command
"Init" is executed.</Font></Td></Tr>
<Tr><Td><b>Clock</b></Td>
<Td><Font Size=-1>Tango::DEV_STRING</Font></Td>
<Td><Font Size=-1>The clock used. Possible values are "INTERNAL" or "PFIxx", with xx the pin number.</Font></Td></Tr>
<Tr><Td><b>ExternalFrequency</b></Td>
<Td><Font Size=-1>Tango::DEV_DOUBLE</Font></Td>
<Td><Font Size=-1>In case of using an external clock, the frequency of this clock in Hz.</Font></Td></Tr>
<Tr><Td><b>IdleStateCounter0</b></Td>
<Td><Font Size=-1>Tango::DEV_STRING</Font></Td>
<Td><Font Size=-1>cCan be LOW or HIGH.</Font></Td></Tr>
<Tr><Td><b>IdleStateCounter1</b></Td>
<Td><Font Size=-1>Tango::DEV_STRING</Font></Td>
<Td><Font Size=-1></Font></Td></Tr>
<Tr><Td><b>IdleStateCounter2</b></Td>
<Td><Font Size=-1>Tango::DEV_STRING</Font></Td>
<Td><Font Size=-1></Font></Td></Tr>
<Tr><Td><b>IdleStateCounter3</b></Td>
<Td><Font Size=-1>Tango::DEV_STRING</Font></Td>
<Td><Font Size=-1></Font></Td></Tr>
<Tr><Td><b>IdleStateCounter4</b></Td>
<Td><Font Size=-1>Tango::DEV_STRING</Font></Td>
<Td><Font Size=-1></Font></Td></Tr>
<Tr><Td><b>IdleStateCounter5</b></Td>
<Td><Font Size=-1>Tango::DEV_STRING</Font></Td>
<Td><Font Size=-1></Font></Td></Tr>
<Tr><Td><b>IdleStateCounter6</b></Td>
<Td><Font Size=-1>Tango::DEV_STRING</Font></Td>
<Td><Font Size=-1></Font></Td></Tr>
<Tr><Td><b>IdleStateCounter7</b></Td>
<Td><Font Size=-1>Tango::DEV_STRING</Font></Td>
<Td><Font Size=-1></Font></Td></Tr>
<Tr><Td><b>GenerationType</b></Td>
<Td><Font Size=-1>Tango::DEV_STRING</Font></Td>
<Td><Font Size=-1>CONT or RETRIG. Generate in continuous or wait for an input trigger to generate a pulse.</Font></Td></Tr>
</Table>
<Br><Br><Br>
<Center><b>
There is no Class properties.<Br><Br>
</Center></b>
<Center>
<Br>
<HR WIDTH="100%"></H5>
<H3> ESRF - Software Engineering Group </H3>
</Center>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<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>
<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></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></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></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></A>
</Td>
<Td>
<H2><FONT COLOR="#7F00FF">
<Center><A HREF="http://www.esrf.fr/Infrastructure/Computing/tango/" TARGET="_top">
TANGO </a> <Br> Device Server
</Center></FONT>
</Td>
</TR>
</TABLE>
<HR WIDTH="100%"></H5>
<Br>
<center>
<h1>
Pulse Generation <Br>
Device States Description <Br> <Br>
PulseGeneration Class <Br>
</h1>
<b>
Revision: - Author: abeilleg
</b>
</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>UNKNOWN</b></Td>
<Td><Font Size=-1></Font></Td></Tr>
<Tr><Td><b>STANDBY</b></Td>
<Td><Font Size=-1></Font></Td></Tr>
<Tr><Td><b>RUNNING</b></Td>
<Td><Font Size=-1></Font></Td></Tr>
</Table>
</Center>
<Center>
<Br>
<HR WIDTH="100%"></H5>
<H3> ESRF - Software Engineering Group </H3>
</Center>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<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>
<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></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></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></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></A>
</Td>
<Td>
<H2><FONT COLOR="#7F00FF">
<Center><A HREF="http://www.esrf.fr/Infrastructure/Computing/tango/" TARGET="_top">
TANGO </a> <Br> Device Server
</Center></FONT>
</Td>
</TR>
</TABLE>
<HR WIDTH="100%"></H5>
<center>
<h1>
Pulse Generation <Br>
User's Guide <Br><Br>
PulseGeneration Class<Br>
</h1>
<b>
Revision: - Author: abeilleg <Br>
Implemented in C++
</b>
</center>
<Br>
<Br>
<Br>
<Br>
<h2>Introduction:</h2>
<ul>
2 modes (depending on properties):<br>
-Mode Retrig: Generate a single pulse on 8 counters each time a trigger is received. <br>
-Mode Continuous: Generate pulses continuously on 8 counters. <br><br>
The delay and the width of each pulse is configurable.<Br>
</ul>
<Br>
<h2>Class Inheritance:</h2>
<ul>
<li> <a href="http://www.esrf.fr/computing/cs/tango/tango_doc/kernel_doc/cpp_doc/classTango_1_1Device__3Impl.html"> Tango::Device_3Impl</a></li>
<ul>
<li> PulseGeneration</li>
</ul>
</ul>
</ul>
</ul>
<Br>
<Br>
<h2>Description:</h2>
<ul>
<li> <a href=Description.html> Device description.</a>
<li> <a href=Properties.html> Properties description</a>
<li> <a href=TangoDevStates.html> States description</a>
<li> <a href=DevCommandsTable.html> Commands description</a>
<li> <a href=Attributes.html> Attributes description</a>
</ul>
<Br>
<Br>
<Br>
<!--------------h2>Programmer's guide:</h2>
<ul>
<li> <a href="html/index.html"> Software description.</a>
</ul>
<Br------>
<Br>
<Br>
<h2>Conclusion:</h2>
<ul>
The device server is ready for distribution application programmers.<Br>
The author will be interested in any feedback which arise from their
usage of this device server.
</ul>
<Br>
<Center>
<Br>
<HR WIDTH="100%"></H5>
<H3> ESRF - Software Engineering Group </H3>
</Center>
</body>
</html>
static const char *RcsId = "";
//+=============================================================================
//
// file : ClassFactory.cpp
//
// description : C++ source for the class_factory method of the DServer
// device class. This method is responsible to create
// all class singletin for a device server. It is called
// at device server startup
//
// project : TANGO Device Server
//
// $Author: abeilleg $
//
// copyleft : European Synchrotron Radiation Facility
// BP 220, Grenoble 38043
// FRANCE
//
//-=============================================================================
//
// This file is generated by POGO
// (Program Obviously used to Generate tango Object)
//
// (c) - Software Engineering Group - ESRF
//=============================================================================
#include <tango.h>
#include <PulseGenerationClass.h>
/**
* Create PulseGenerationClass singleton and store it in DServer object.
*
* @author $Author: abeilleg $
* @version $Revision: 1.2 $ $
*/
void Tango::DServer::class_factory()
{
add_class(PulseGeneration_ns::PulseGenerationClass::init("PulseGeneration"));
}
#
device_server= PulseGeneration
#
INCUSER= /I$(DAQMX_INC) /I$(NI660X_INC)
#
LIBUSER = $(ACE_LIB)/ace.lib $(NI660X_LIB)/static/Ni660Xsl.lib $(DAQMX_LIB)/NIDAQmx.lib
#
# ------------------Fin des modifications pour le end user -------------------------------------
#
make_dir=$(SOLEIL_ROOT)\env
# Les définitions communes à tous les DeviceServeurs
!include $(make_dir)\tango.opt
exe_device_server= $(EXEDIR)\ds_$(device_server).exe
pdb_name= $(TEMPLIBDIR)\$(device_server).pdb
# --------------------------------------
# Partie spécifique Device Server
# --------------------------------------
LISTEOBJ = \
$(OBJDIR)\$(device_server).OBJ\
$(OBJDIR)\$(device_server)StateMachine.OBJ\
$(OBJDIR)\ClassFactory.OBJ\
$(OBJDIR)\main.OBJ\
$(OBJDIR)\$(device_server)Class.OBJ
# --------------------------------------
!include $(make_dir)\common_target.opt
This diff is collapsed.
//=============================================================================
//
// file : PulseGeneration.h
//
// description : Include for the PulseGeneration class.
//
// project : Pulse Generation
//
// $Author: abeilleg $
//
//
// copyleft : European Synchrotron Radiation Facility
// BP 220, Grenoble 38043
// FRANCE
//
//=============================================================================
//
// This file is generated by POGO
// (Program Obviously used to Generate tango Object)
//
// (c) - Software Engineering Group - ESRF
//=============================================================================
#ifndef _RETRIGGERABLESINGLEPULSEGENERATION_H
#define _RETRIGGERABLESINGLEPULSEGENERATION_H
#include <tango.h>
//using namespace Tango;
#include "ni660Xsl/OutputOperation.h"
#include "ni660Xsl/RetriggerablePulseTrainGeneration.h"
#include "ni660Xsl/ContinuousPulseTrainGeneration.h"
/**
* @author $Author: abeilleg $
* @version $Revision: 1.8 $ $
*/
// Add your own constants definitions here.
//-----------------------------------------------
namespace PulseGeneration_ns
{
/**
* Class Description:
* 2 modes (depending on properties):<br>
* -Mode Retrig: Generate a single pulse on 8 counters each time a trigger is received. <br>
* -Mode Continuous: Generate pulses continuously on 8 counters. <br><br>
* The delay and the width of each pulse is configurable.
*/
/*
* Device States Description:
* Tango::UNKNOWN :
* Tango::STANDBY :
* Tango::RUNNING :
*/
class PulseGeneration: public Tango::Device_3Impl
{
public :
// Add your own data members here
//-----------------------------------------
// Here is the Start of the automatic code generation part
//-------------------------------------------------------------
/**
* @name attributes
* Attributs member data.
*/
//@{
Tango::DevBoolean *attr_counter0Enable_read;
Tango::DevBoolean attr_counter0Enable_write;
Tango::DevDouble *attr_delayCounter0_read;
Tango::DevDouble attr_delayCounter0_write;
Tango::DevDouble *attr_pulseWidthCounter0_read;
Tango::DevDouble attr_pulseWidthCounter0_write;
Tango::DevBoolean *attr_counter1Enable_read;
Tango::DevBoolean attr_counter1Enable_write;
Tango::DevDouble *attr_delayCounter1_read;
Tango::DevDouble attr_delayCounter1_write;
Tango::DevDouble *attr_pulseWidthCounter1_read;
Tango::DevDouble attr_pulseWidthCounter1_write;
Tango::DevBoolean *attr_counter2Enable_read;
Tango::DevBoolean attr_counter2Enable_write;
Tango::DevDouble *attr_delayCounter2_read;
Tango::DevDouble attr_delayCounter2_write;
Tango::DevDouble *attr_pulseWidthCounter2_read;
Tango::DevDouble attr_pulseWidthCounter2_write;
Tango::DevBoolean *attr_counter3Enable_read;
Tango::DevBoolean attr_counter3Enable_write;
Tango::DevDouble *attr_delayCounter3_read;
Tango::DevDouble attr_delayCounter3_write;
Tango::DevDouble *attr_pulseWidthCounter3_read;
Tango::DevDouble attr_pulseWidthCounter3_write;
Tango::DevBoolean *attr_counter4Enable_read;
Tango::DevBoolean attr_counter4Enable_write;
Tango::DevDouble *attr_delayCounter4_read;
Tango::DevDouble attr_delayCounter4_write;
Tango::DevDouble *attr_pulseWidthCounter4_read;
Tango::DevDouble attr_pulseWidthCounter4_write;
Tango::DevBoolean *attr_counter5Enable_read;
Tango::DevBoolean attr_counter5Enable_write;
Tango::DevDouble *attr_delayCounter5_read;
Tango::DevDouble attr_delayCounter5_write;
Tango::DevDouble *attr_pulseWidthCounter5_read;
Tango::DevDouble attr_pulseWidthCounter5_write;
Tango::DevBoolean *attr_counter6Enable_read;
Tango::DevBoolean attr_counter6Enable_write;
Tango::DevDouble *attr_delayCounter6_read;
Tango::DevDouble attr_delayCounter6_write;
Tango::DevDouble *attr_pulseWidthCounter6_read;
Tango::DevDouble attr_pulseWidthCounter6_write;
Tango::DevBoolean *attr_counter7Enable_read;
Tango::DevBoolean attr_counter7Enable_write;
Tango::DevDouble *attr_delayCounter7_read;
Tango::DevDouble attr_delayCounter7_write;
Tango::DevDouble *attr_pulseWidthCounter7_read;
Tango::DevDouble attr_pulseWidthCounter7_write;
//@}
/**
* @name Device properties
* Device properties member data.
*/
//@{
/**
* The name of the terminal for the input trigger.
*/
string triggerSource;
/**
* The name of the board.
*/
string boardName;
/**
* If true, the generation will start at device startup and when command
* "Init" is executed.
*/
Tango::DevBoolean autoStart;
/**
* The clock used. Possible values are "INTERNAL" or "PFIxx", with xx the pin number.
*/
string clock;
/**
* In case of using an external clock, the frequency of this clock in Hz.
*/
Tango::DevDouble externalFrequency;
/**
* cCan be LOW or HIGH.
*/
string idleStateCounter0;
/**
*
*/
string idleStateCounter1;
/**
*
*/
string idleStateCounter2;
/**
*
*/
string idleStateCounter3;
/**
*
*/
string idleStateCounter4;
/**
*
*/
string idleStateCounter5;
/**
*
*/
string idleStateCounter6;
/**
*
*/
string idleStateCounter7;
/**
* CONT or RETRIG. Generate in continuous or wait for an input trigger to generate a pulse.
*/
string generationType;
//@}
/**@name Constructors
* Miscellaneous constructors */
//@{
/**
* Constructs a newly allocated Command object.
*
* @param cl Class.
* @param s Device Name
*/
PulseGeneration(Tango::DeviceClass *cl,string &s);
/**
* Constructs a newly allocated Command object.
*
* @param cl Class.
* @param s Device Name
*/
PulseGeneration(Tango::DeviceClass *cl,const char *s);
/**
* Constructs a newly allocated Command object.
*
* @param cl Class.
* @param s Device name
* @param d Device description.
*/
PulseGeneration(Tango::DeviceClass *cl,const char *s,const char *d);
//@}
/**@name Destructor
* Only one desctructor is defined for this class */
//@{
/**
* The object desctructor.
*/
virtual ~PulseGeneration() ;
/**
* will be called at device destruction or at init command.
*/
void delete_device();
//@}
/**@name Miscellaneous methods */
//@{
/**
* Initialize the device
*/
virtual void init_device();
/**
* Always executed method befor execution command method.
*/
virtual void always_executed_hook();
//@}
/**
* @name PulseGeneration methods prototypes
*/
//@{
/**
* Hardware acquisition for attributes.
*/
virtual void read_attr_hardware(vector<long> &attr_list);
/**
* Extract real attribute values for counter0Enable acquisition result.
*/
virtual void read_counter0Enable(Tango::Attribute &attr);
/**
* Write counter0Enable attribute values to hardware.
*/
virtual void write_counter0Enable(Tango::WAttribute &attr);
/**
* Extract real attribute values for delayCounter0 acquisition result.
*/
virtual void read_delayCounter0(Tango::Attribute &attr);
/**
* Write delayCounter0 attribute values to hardware.
*/
virtual void write_delayCounter0(Tango::WAttribute &attr);
/**
* Extract real attribute values for pulseWidthCounter0 acquisition result.
*/
virtual void read_pulseWidthCounter0(Tango::Attribute &attr);
/**
* Write pulseWidthCounter0 attribute values to hardware.
*/
virtual void write_pulseWidthCounter0(Tango::WAttribute &attr);
/**
* Extract real attribute values for counter1Enable acquisition result.
*/
virtual void read_counter1Enable(Tango::Attribute &attr);
/**
* Write counter1Enable attribute values to hardware.
*/
virtual void write_counter1Enable(Tango::WAttribute &attr);
/**
* Extract real attribute values for delayCounter1 acquisition result.
*/
virtual void read_delayCounter1(Tango::Attribute &attr);
/**
* Write delayCounter1 attribute values to hardware.
*/
virtual void write_delayCounter1(Tango::WAttribute &attr);
/**
* Extract real attribute values for pulseWidthCounter1 acquisition result.
*/
virtual void read_pulseWidthCounter1(Tango::Attribute &attr);
/**
* Write pulseWidthCounter1 attribute values to hardware.
*/
virtual void write_pulseWidthCounter1(Tango::WAttribute &attr);
/**
* Extract real attribute values for counter2Enable acquisition result.
*/
virtual void read_counter2Enable(Tango::Attribute &attr);
/**
* Write counter2Enable attribute values to hardware.
*/
virtual void write_counter2Enable(Tango::WAttribute &attr);
/**
* Extract real attribute values for delayCounter2 acquisition result.
*/
virtual void read_delayCounter2(Tango::Attribute &attr);
/**
* Write delayCounter2 attribute values to hardware.
*/
virtual void write_delayCounter2(Tango::WAttribute &attr);
/**
* Extract real attribute values for pulseWidthCounter2 acquisition result.
*/
virtual void read_pulseWidthCounter2(Tango::Attribute &attr);
/**
* Write pulseWidthCounter2 attribute values to hardware.
*/
virtual void write_pulseWidthCounter2(Tango::WAttribute &attr);
/**
* Extract real attribute values for counter3Enable acquisition result.
*/
virtual void read_counter3Enable(Tango::Attribute &attr);
/**
* Write counter3Enable attribute values to hardware.
*/
virtual void write_counter3Enable(Tango::WAttribute &attr);
/**
* Extract real attribute values for delayCounter3 acquisition result.
*/
virtual void read_delayCounter3(Tango::Attribute &attr);
/**
* Write delayCounter3 attribute values to hardware.
*/
virtual void write_delayCounter3(Tango::WAttribute &attr);
/**
* Extract real attribute values for pulseWidthCounter3 acquisition result.
*/
virtual void read_pulseWidthCounter3(Tango::Attribute &attr);
/**
* Write pulseWidthCounter3 attribute values to hardware.
*/
virtual void write_pulseWidthCounter3(Tango::WAttribute &attr);
/**
* Extract real attribute values for counter4Enable acquisition result.
*/
virtual void read_counter4Enable(Tango::Attribute &attr);
/**
* Write counter4Enable attribute values to hardware.
*/
virtual void write_counter4Enable(Tango::WAttribute &attr);
/**
* Extract real attribute values for delayCounter4 acquisition result.
*/
virtual void read_delayCounter4(Tango::Attribute &attr);
/**
* Write delayCounter4 attribute values to hardware.
*/
virtual void write_delayCounter4(Tango::WAttribute &attr);
/**
* Extract real attribute values for pulseWidthCounter4 acquisition result.
*/
virtual void read_pulseWidthCounter4(Tango::Attribute &attr);
/**
* Write pulseWidthCounter4 attribute values to hardware.
*/
virtual void write_pulseWidthCounter4(Tango::WAttribute &attr);
/**
* Extract real attribute values for counter5Enable acquisition result.
*/
virtual void read_counter5Enable(Tango::Attribute &attr);
/**
* Write counter5Enable attribute values to hardware.
*/
virtual void write_counter5Enable(Tango::WAttribute &attr);
/**
* Extract real attribute values for delayCounter5 acquisition result.
*/
virtual void read_delayCounter5(Tango::Attribute &attr);
/**
* Write delayCounter5 attribute values to hardware.
*/
virtual void write_delayCounter5(Tango::WAttribute &attr);
/**
* Extract real attribute values for pulseWidthCounter5 acquisition result.
*/
virtual void read_pulseWidthCounter5(Tango::Attribute &attr);
/**
* Write pulseWidthCounter5 attribute values to hardware.
*/
virtual void write_pulseWidthCounter5(Tango::WAttribute &attr);
/**
* Extract real attribute values for counter6Enable acquisition result.
*/
virtual void read_counter6Enable(Tango::Attribute &attr);
/**
* Write counter6Enable attribute values to hardware.
*/
virtual void write_counter6Enable(Tango::WAttribute &attr);
/**
* Extract real attribute values for delayCounter6 acquisition result.
*/
virtual void read_delayCounter6(Tango::Attribute &attr);
/**
* Write delayCounter6 attribute values to hardware.
*/
virtual void write_delayCounter6(Tango::WAttribute &attr);
/**
* Extract real attribute values for pulseWidthCounter6 acquisition result.
*/
virtual void read_pulseWidthCounter6(Tango::Attribute &attr);
/**
* Write pulseWidthCounter6 attribute values to hardware.
*/
virtual void write_pulseWidthCounter6(Tango::WAttribute &attr);
/**
* Extract real attribute values for counter7Enable acquisition result.
*/
virtual void read_counter7Enable(Tango::Attribute &attr);
/**
* Write counter7Enable attribute values to hardware.
*/
virtual void write_counter7Enable(Tango::WAttribute &attr);
/**
* Extract real attribute values for delayCounter7 acquisition result.
*/
virtual void read_delayCounter7(Tango::Attribute &attr);
/**
* Write delayCounter7 attribute values to hardware.
*/
virtual void write_delayCounter7(Tango::WAttribute &attr);
/**
* Extract real attribute values for pulseWidthCounter7 acquisition result.
*/
virtual void read_pulseWidthCounter7(Tango::Attribute &attr);
/**
* Write pulseWidthCounter7 attribute values to hardware.
*/
virtual void write_pulseWidthCounter7(Tango::WAttribute &attr);
/**
* Read/Write allowed for counter0Enable attribute.
*/
virtual bool is_counter0Enable_allowed(Tango::AttReqType type);
/**
* Read/Write allowed for delayCounter0 attribute.
*/
virtual bool is_delayCounter0_allowed(Tango::AttReqType type);
/**
* Read/Write allowed for pulseWidthCounter0 attribute.
*/
virtual bool is_pulseWidthCounter0_allowed(Tango::AttReqType type);
/**
* Read/Write allowed for counter1Enable attribute.
*/
virtual bool is_counter1Enable_allowed(Tango::AttReqType type);
/**
* Read/Write allowed for delayCounter1 attribute.
*/
virtual bool is_delayCounter1_allowed(Tango::AttReqType type);
/**
* Read/Write allowed for pulseWidthCounter1 attribute.
*/
virtual bool is_pulseWidthCounter1_allowed(Tango::AttReqType type);
/**
* Read/Write allowed for counter2Enable attribute.
*/
virtual bool is_counter2Enable_allowed(Tango::AttReqType type);
/**
* Read/Write allowed for delayCounter2 attribute.
*/
virtual bool is_delayCounter2_allowed(Tango::AttReqType type);
/**
* Read/Write allowed for pulseWidthCounter2 attribute.
*/
virtual bool is_pulseWidthCounter2_allowed(Tango::AttReqType type);
/**
* Read/Write allowed for counter3Enable attribute.
*/
virtual bool is_counter3Enable_allowed(Tango::AttReqType type);
/**
* Read/Write allowed for delayCounter3 attribute.
*/
virtual bool is_delayCounter3_allowed(Tango::AttReqType type);
/**
* Read/Write allowed for pulseWidthCounter3 attribute.
*/
virtual bool is_pulseWidthCounter3_allowed(Tango::AttReqType type);
/**
* Read/Write allowed for counter4Enable attribute.
*/
virtual bool is_counter4Enable_allowed(Tango::AttReqType type);
/**
* Read/Write allowed for delayCounter4 attribute.
*/
virtual bool is_delayCounter4_allowed(Tango::AttReqType type);
/**
* Read/Write allowed for pulseWidthCounter4 attribute.
*/
virtual bool is_pulseWidthCounter4_allowed(Tango::AttReqType type);
/**
* Read/Write allowed for counter5Enable attribute.
*/
virtual bool is_counter5Enable_allowed(Tango::AttReqType type);
/**
* Read/Write allowed for delayCounter5 attribute.
*/
virtual bool is_delayCounter5_allowed(Tango::AttReqType type);
/**
* Read/Write allowed for pulseWidthCounter5 attribute.
*/
virtual bool is_pulseWidthCounter5_allowed(Tango::AttReqType type);
/**
* Read/Write allowed for counter6Enable attribute.
*/
virtual bool is_counter6Enable_allowed(Tango::AttReqType type);
/**
* Read/Write allowed for delayCounter6 attribute.
*/
virtual bool is_delayCounter6_allowed(Tango::AttReqType type);
/**
* Read/Write allowed for pulseWidthCounter6 attribute.
*/
virtual bool is_pulseWidthCounter6_allowed(Tango::AttReqType type);
/**
* Read/Write allowed for counter7Enable attribute.
*/
virtual bool is_counter7Enable_allowed(Tango::AttReqType type);
/**
* Read/Write allowed for delayCounter7 attribute.
*/
virtual bool is_delayCounter7_allowed(Tango::AttReqType type);
/**
* Read/Write allowed for pulseWidthCounter7 attribute.
*/
virtual bool is_pulseWidthCounter7_allowed(Tango::AttReqType type);
/**
* Execution allowed for Start command.
*/
virtual bool is_Start_allowed(const CORBA::Any &any);
/**
* Execution allowed for Stop command.
*/
virtual bool is_Stop_allowed(const CORBA::Any &any);
/**
* Execution allowed for Abort command.
*/
virtual bool is_Abort_allowed(const CORBA::Any &any);
/**
* Execution allowed for ResetBoard command.
*/
virtual bool is_ResetBoard_allowed(const CORBA::Any &any);
/**
* Execution allowed for GetDriverVersion command.
*/
virtual bool is_GetDriverVersion_allowed(const CORBA::Any &any);
/**
* Execution allowed for GetBoardsInChassis command.
*/
virtual bool is_GetBoardsInChassis_allowed(const CORBA::Any &any);
/**
* Execution allowed for GetBoardType command.
*/
virtual bool is_GetBoardType_allowed(const CORBA::Any &any);
/**
* Start generations of pulses.
* @exception DevFailed
*/
void start();
/**
* Stop generations of pulses.
* @exception DevFailed
*/
void stop();
/**
* Abort generations.
* @exception DevFailed
*/
void abort();
/**
* Reset the physical board. After this command, the board is in an unknown state
* (no more configured). The device must be initialized.
* @exception DevFailed
*/
void reset_board();
/**
* Get the current version of the driver installed for NI counter boards.
* @return The driver version
* @exception DevFailed
*/
Tango::DevString get_driver_version();
/**
* Get a string containing all the boards names (from NI) present in the chassis
* where this device is running. This names are defined in MAX.
* @return All the names of NI boards.
* @exception DevFailed
*/
Tango::DevString get_boards_in_chassis();
/**
* Returns the type (ex: PXI-6602) of a specified board.
* @param argin The board name.
* @return The board type.
* @exception DevFailed
*/
Tango::DevString get_board_type(Tango::DevString);
/**
* Read the device properties from database
*/
void get_device_property();
//@}
// Here is the end of the automatic code generation part
//-------------------------------------------------------------
protected :
// Add your own data members here
//-----------------------------------------
void init_counters(void);
void update_values(void);
void set_internal_state(void);
ni660Xsl::OutputOperation* pulses;
bool* ctr_enable;
ni::LevelType* idle_states;
/*bool ctr_1_enable;
bool ctr_2_enable;
bool ctr_3_enable;
bool ctr_4_enable;
bool ctr_5_enable;
bool ctr_6_enable;
bool ctr_7_enable;*/
double* delay;
long* delay_ticks;
/*double delay_ctr_1;
double delay_ctr_2;
double delay_ctr_3;
double delay_ctr_4;
double delay_ctr_5;
double delay_ctr_6;
double delay_ctr_7;*/
double* pulse_width;
long* pulse_width_ticks;
/* double pulse_width_ctr_1;
double pulse_width_ctr_2;
double pulse_width_ctr_3;
double pulse_width_ctr_4;
double pulse_width_ctr_5;
double pulse_width_ctr_6;
double pulse_width_ctr_7;*/
};
} // namespace
#endif // _RETRIGGERABLESINGLEPULSEGENERATION_H
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
static const char *RcsId = "";
//+=============================================================================
//
// file : main.cpp
//
// description : C++ source for a TANGO device server main.
// The main rule is to initialise (and create) the Tango
// system and to create the DServerClass singleton.
// The main should be the same for every Tango device server.
//
// project : TANGO Device Server
//
// copyleft : European Synchrotron Radiation Facility
// BP 220, Grenoble 38043
// FRANCE
//
//-=============================================================================
//
// This file is generated by POGO
// (Program Obviously used to Generate tango Object)
//
// (c) - Software Engineering Group - ESRF
//=============================================================================
#include <tango.h>
int main(int argc,char *argv[])
{
Tango::Util *tg;
try
{
// Initialise the device server
//----------------------------------------
tg = Tango::Util::init(argc,argv);
// Create the device server singleton
// which will create everything
//----------------------------------------
tg->server_init(false);
// Run the endless loop
//----------------------------------------
cout << "Ready to accept request" << endl;
tg->server_run();
}
catch (bad_alloc)
{
cout << "Can't allocate memory to store device object !!!" << endl;
cout << "Exiting" << endl;
}
catch (CORBA::Exception &e)
{
Tango::Except::print_exception(e);
cout << "Received a CORBA_Exception" << endl;
cout << "Exiting" << endl;
}
return(0);
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment