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

initial import

parent a93aa82c
No related branches found
No related tags found
No related merge requests found
Showing
with 3111 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="right">
<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>
<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>
LFI_3751 <Br>
Device Attributes Description <Br> <Br>
LFI_3751 Class <Br>
</h1>
<b>
Revision: 1.1.1.1 - Author: sebleport
</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>
<Tr><Td><b><Center>temperaturePreset</b><Br>( temperature to reach. the unit depends on the probe used. )</Center></Td>
<Td><Center>DEV_DOUBLE</Center></Td><Td><Center>READ_WRITE</Center></Td><Td><Center>No</Center></Td></Tr>
<Tr><Td><b><Center>temperatureMeasured</b><Br>( gets the temperature measured by the probe. the unit depends on the probe type used )</Center></Td>
<Td><Center>DEV_DOUBLE</Center></Td><Td><Center>READ</Center></Td><Td><Center>No</Center></Td></Tr>
<Tr><Td><b><Center>resistanceMeasured</b><Br>( gets the resistance measured by the probe. )</Center></Td>
<Td><Center>DEV_DOUBLE</Center></Td><Td><Center>READ</Center></Td><Td><Center>No</Center></Td></Tr>
<Tr><Td><b><Center>heaterPercent</b><Br>( provides information about the heating. this value is calculated as following expression: %heat = [ I(measured) / I(limit) ]*100 )</Center></Td>
<Td><Center>DEV_DOUBLE</Center></Td><Td><Center>READ</Center></Td><Td><Center>No</Center></Td></Tr>
<Tr><Td><b><Center>temperatureError</b><Br>( provides the interval error between the temperature preset and the measured temperature. )</Center></Td>
<Td><Center>DEV_DOUBLE</Center></Td><Td><Center>READ</Center></Td><Td><Center>No</Center></Td></Tr>
<Tr><Td><b><Center>coeffP</b><Br>( this is the proportional gain parameter to set )</Center></Td>
<Td><Center>DEV_DOUBLE</Center></Td><Td><Center>READ_WRITE</Center></Td><Td><Center>No</Center></Td></Tr>
<Tr><Td><b><Center>coeffI</b><Br>( this is the Integrator parameter to set )</Center></Td>
<Td><Center>DEV_DOUBLE</Center></Td><Td><Center>READ_WRITE</Center></Td><Td><Center>No</Center></Td></Tr>
<Tr><Td><b><Center>coeffD</b><Br>( this is the Derivator parameter to set )</Center></Td>
<Td><Center>DEV_DOUBLE</Center></Td><Td><Center>READ_WRITE</Center></Td><Td><Center>No</Center></Td></Tr>
<Tr><Td><b><Center>outputCurrent</b><Br>( to enabled or disabled the output current )</Center></Td>
<Td><Center>DEV_BOOLEAN</Center></Td><Td><Center>READ_WRITE</Center></Td><Td><Center>No</Center></Td></Tr>
</Table>
</Center>
<Br><Br><Br><Br><Br>
<Center>
<Br>
<HR WIDTH="100%"></H5>
<H3> ESRF - Software Engineering Group </H33>
</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>
LFI_3751 <Br>
Device Description <Br> <Br>
LFI_3751 Class <Br>
</h1>
<b>
Revision: - Author:
</b>
</center>
<Center>
This device controls the LFI 3751 temperature controller
<Br>
<Br>
</Center>
<Center>
<Br>
<HR WIDTH="100%"></H5>
<H3> ESRF - Software Engineering Group </H33>
</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="right">
<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>
<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>
LFI_3751 <Br>
Device Commands Description <Br> <Br>
LFI_3751 Class <Br>
</h1>
<b>
Revision: 1.1.1.1 - Author: sebleport
</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::ALARM<Li>Tango::UNKNOWN<Li>Tango::FAULT<Li>Tango::ON</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::ALARM<Li>Tango::UNKNOWN<Li>Tango::FAULT<Li>Tango::ON</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 descrition<Br>&nbsp
<Li><Strong>Command allowed for: </Strong><Ul>
<Li>Tango::ALARM<Li>Tango::UNKNOWN<Li>Tango::FAULT<Li>Tango::ON</Ul>
<Br>&nbsp
</ul><Br>
<Br>
<A NAME="PidAutotuneS"><!-- --></A>
<A NAME="PidAutotuneS"><!-- --></A>
<h2>4 - PidAutotuneS</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>
: <Br>&nbsp
<Li><Strong>Argout:<Br>DEV_VOID</Strong>
: <Br>&nbsp
<Li><Strong>Command allowed for: </Strong><Ul>
<Li>Tango::ALARM<Li>Tango::UNKNOWN<Li>Tango::FAULT<Li>Tango::ON</Ul>
<Br>&nbsp
</ul><Br>
<Br>
<A NAME="PidAutotuneD"><!-- --></A>
<A NAME="PidAutotuneD"><!-- --></A>
<h2>5 - PidAutotuneD</h2>
<ul>
<Li><Strong>Description: </Strong> to start a Disturbance Rejection Tuning to make an automatic PID setting. This method
is valuable when your thermal load is exposed to varied environmental conditions, such
as air currents or ambient temperature fluctuations. It also improves temperature stability
in applications where the device being temperature controlled experiences significant power
or heat transients, such as those found in pulsed laser diode applications.<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::ALARM<Li>Tango::UNKNOWN<Li>Tango::FAULT<Li>Tango::ON</Ul>
<Br>&nbsp
</ul><Br>
<Br>
<Center>
<Br>
<HR WIDTH="100%"></H5>
<H3> ESRF - Software Engineering Group </H33>
</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#PidAutotuneS" TARGET="DevCommands"> PidAutotuneS</a><Br>
<A Href="DevCommands.html#PidAutotuneD" TARGET="DevCommands"> PidAutotuneD</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="right">
<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>
<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>
LFI_3751 <Br>
Device Commands Description <Br> <Br>
LFI_3751 Class <Br>
</h1>
<b>
Revision: 1.1.1.1 - Author: sebleport
</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>Init</Td>
<Td>DEV_VOID</Td>
<Td>DEV_VOID</Td>
<Tr><Td>State</Td>
<Td>DEV_VOID</Td>
<Td>DEV_STATE</Td>
<Tr><Td>Status</Td>
<Td>DEV_VOID</Td>
<Td>CONST_DEV_STRING</Td>
<Tr><Td>PidAutotuneS</Td>
<Td>DEV_VOID</Td>
<Td>DEV_VOID</Td>
<Tr><Td>PidAutotuneD</Td>
<Td>DEV_VOID</Td>
<Td>DEV_VOID</Td>
</Table></Center>
<Center>
<Br>
<HR WIDTH="100%"></H5>
<H3> ESRF - Software Engineering Group </H33>
</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="right">
<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>
<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>
LFI_3751 <Br>
Properties Description <Br> <Br>
LFI_3751 Class <Br>
</h1>
<b>
Revision: 1.1.1.1 - Author: sebleport
</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>SerialProxyName</Td>
<Td>Tango::DEV_STRING</Td>
<Td>name of the serial line proxy device</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 </H33>
</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="right">
<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>
<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>
LFI_3751 <Br>
Device States Description <Br> <Br>
LFI_3751 Class <Br>
</h1>
<b>
Revision: 1.1.1.1 - Author: sebleport
</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>ALARM</Td>
<Td></Td></Tr>
<Tr><Td>UNKNOWN</Td>
<Td></Td></Tr>
<Tr><Td>FAULT</Td>
<Td></Td></Tr>
<Tr><Td>ON</Td>
<Td></Td></Tr>
</Table>
</Center>
<Center>
<Br>
<HR WIDTH="100%"></H5>
<H3> ESRF - Software Engineering Group </H33>
</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="right">
<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>
<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>
LFI_3751 <Br>
Device Server User's Guide <Br><Br>
LFI_3751 Class <Br>
</h1>
<b ---------->
Revision: 1.1.1.1 - Author: sebleport
</b>
</center>
<Br>
<Br>
<Br>
<Br>
<Br>
<Br>
<h2>Introduction:</h2>
This device controls the LFI 3751 temperature controller
Device States Description:
Tango::ALARM :
Tango::UNKNOWN :
Tango::FAULT :
Tango::ON :<Br>
<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>
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.
<Br>
<Center>
<Br>
<HR WIDTH="100%"></H5>
<H3> ESRF - Software Engineering Group </H33>
</Center>
</body>
</html>
static const char *RcsId = "$Header: $";
//+=============================================================================
//
// 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: $
//
// $Revision: $
//
// $Log: $
//
// 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 <LFI_3751Class.h>
/**
* Create LFI_3751Class singleton and store it in DServer object.
*/
void Tango::DServer::class_factory()
{
add_class(LFI_3751_ns::LFI_3751Class::init("LFI_3751"));
}
This diff is collapsed.
//=============================================================================
//
// file : LFI_3751.h
//
// description : Include for the NMR20 class.
//
// project : LFI_3751
//
// $Author: sebleport $
//
// $Revision: 1.1.1.1 $
//
// $Log: LFI_3751.h,v $
// Revision 1.1.1.1 2006/04/24 09:49:40 sebleport
// initial import
//
//
// 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 _LFI_3751_H
#define _LFI_3751_H
#include <tango.h>
//using namespace Tango;
#include "DeviceProxyHelper.h"
/**
* @author $Author: sebleport $
* @version $Revision: 1.1.1.1 $
*/
// Add your own constants definitions here.
//-----------------------------------------------
namespace LFI_3751_ns
{
/**
* Class Description:
* this devices controls the NMR20 gaussmeter which measures a magnetic field
*/
/*
* Device States Description:
* Tango::ALARM :
* Tango::UNKNOWN :
* Tango::FAULT :
* Tango::ON :
*/
class LFI_3751: 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::DevDouble *attr_temperaturePreset_read;
Tango::DevDouble attr_temperaturePreset_write;
Tango::DevDouble *attr_temperatureMeasured_read;
Tango::DevDouble *attr_resistanceMeasured_read;
Tango::DevDouble *attr_heaterPercent_read;
Tango::DevDouble *attr_temperatureError_read;
Tango::DevDouble *attr_coeffP_read;
Tango::DevDouble attr_coeffP_write;
Tango::DevDouble *attr_coeffI_read;
Tango::DevDouble attr_coeffI_write;
Tango::DevDouble *attr_coeffD_read;
Tango::DevDouble attr_coeffD_write;
Tango::DevBoolean *attr_outputCurrent_read;
Tango::DevBoolean attr_outputCurrent_write;
//@}
/**
* @name Device properties
* Device properties member data.
*/
//@{
/**
* name of the serial line proxy device
*/
string serialProxyName;
//@}
/**@name Constructors
* Miscellaneous constructors */
//@{
/**
* Constructs a newly allocated Command object.
*
* @param cl Class.
* @param s Device Name
*/
LFI_3751(Tango::DeviceClass *cl,string &s);
/**
* Constructs a newly allocated Command object.
*
* @param cl Class.
* @param s Device Name
*/
LFI_3751(Tango::DeviceClass *cl,const char *s);
/**
* Constructs a newly allocated Command object.
*
* @param cl Class.
* @param s Device name
* @param d Device description.
*/
LFI_3751(Tango::DeviceClass *cl,const char *s,const char *d);
//@}
/**@name Destructor
* Only one desctructor is defined for this class */
//@{
/**
* The object desctructor.
*/
~LFI_3751() {delete_device();};
/**
* 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 LFI_3751 methods prototypes
*/
//@{
/**
* Hardware acquisition for attributes.
*/
virtual void read_attr_hardware(vector<long> &attr_list);
/**
* Extract real attribute values for temperaturePreset acquisition result.
*/
virtual void read_temperaturePreset(Tango::Attribute &attr);
/**
* Write temperaturePreset attribute values to hardware.
*/
virtual void write_temperaturePreset(Tango::WAttribute &attr);
/**
* Extract real attribute values for temperatureMeasured acquisition result.
*/
virtual void read_temperatureMeasured(Tango::Attribute &attr);
/**
* Extract real attribute values for resistanceMeasured acquisition result.
*/
virtual void read_resistanceMeasured(Tango::Attribute &attr);
/**
* Extract real attribute values for heaterPercent acquisition result.
*/
virtual void read_heaterPercent(Tango::Attribute &attr);
/**
* Extract real attribute values for temperatureError acquisition result.
*/
virtual void read_temperatureError(Tango::Attribute &attr);
/**
* Extract real attribute values for coeffP acquisition result.
*/
virtual void read_coeffP(Tango::Attribute &attr);
/**
* Write coeffP attribute values to hardware.
*/
virtual void write_coeffP(Tango::WAttribute &attr);
/**
* Extract real attribute values for coeffI acquisition result.
*/
virtual void read_coeffI(Tango::Attribute &attr);
/**
* Write coeffI attribute values to hardware.
*/
virtual void write_coeffI(Tango::WAttribute &attr);
/**
* Extract real attribute values for coeffD acquisition result.
*/
virtual void read_coeffD(Tango::Attribute &attr);
/**
* Write coeffD attribute values to hardware.
*/
virtual void write_coeffD(Tango::WAttribute &attr);
/**
* Extract real attribute values for outputCurrent acquisition result.
*/
virtual void read_outputCurrent(Tango::Attribute &attr);
/**
* Write outputCurrent attribute values to hardware.
*/
virtual void write_outputCurrent(Tango::WAttribute &attr);
/**
* Read/Write allowed for temperaturePreset attribute.
*/
virtual bool is_temperaturePreset_allowed(Tango::AttReqType type);
/**
* Read/Write allowed for temperatureMeasured attribute.
*/
virtual bool is_temperatureMeasured_allowed(Tango::AttReqType type);
/**
* Read/Write allowed for resistanceMeasured attribute.
*/
virtual bool is_resistanceMeasured_allowed(Tango::AttReqType type);
/**
* Read/Write allowed for heaterPercent attribute.
*/
virtual bool is_heaterPercent_allowed(Tango::AttReqType type);
/**
* Read/Write allowed for temperatureError attribute.
*/
virtual bool is_temperatureError_allowed(Tango::AttReqType type);
/**
* Read/Write allowed for coeffP attribute.
*/
virtual bool is_coeffP_allowed(Tango::AttReqType type);
/**
* Read/Write allowed for coeffI attribute.
*/
virtual bool is_coeffI_allowed(Tango::AttReqType type);
/**
* Read/Write allowed for coeffD attribute.
*/
virtual bool is_coeffD_allowed(Tango::AttReqType type);
/**
* Read/Write allowed for outputCurrent attribute.
*/
virtual bool is_outputCurrent_allowed(Tango::AttReqType type);
/**
* Execution allowed for PidAutotuneS command.
*/
virtual bool is_PidAutotuneS_allowed(const CORBA::Any &any);
/**
* Execution allowed for PidAutotuneD command.
*/
virtual bool is_PidAutotuneD_allowed(const CORBA::Any &any);
/**
* This command gets the device state (stored in its <i>device_state</i> data member) and returns it to the caller.
* @return State Code
* @exception DevFailed
*/
virtual Tango::DevState dev_state();
/**
* This command gets the device status (stored in its <i>device_status</i> data member) and returns it to the caller.
* @exception DevFailed
*/
void pid_autotune_s();
/**
* to start a Disturbance Rejection Tuning to make an automatic PID setting. This method
* is valuable when your thermal load is exposed to varied environmental conditions, such
* as air currents or ambient temperature fluctuations. It also improves temperature stability
* in applications where the device being temperature controlled experiences significant power
* or heat transients, such as those found in pulsed laser diode applications.
* @exception DevFailed
*/
void pid_autotune_d();
/**
* 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
//-----------------------------------------
//data
Tango::DeviceProxyHelper* mySerial;
//methodes
std::string write_read(std::string cmd_to_send);
std::string checksum(std::string cmd);
void init_proxy_Serialline();
std::string format_data_to_send(std::string data);
void detect_error(std::string frame);
};
} // namespace_ns
#endif // _LFI_3751_H
static const char *RcsId = "$Header: $";
static const char *TagName = "$Name: $";
static const char *HttpServer= "http://www.esrf.fr/computing/cs/tango/tango_doc/ds_doc/";
//+=============================================================================
//
// file : LFI_3751Class.cpp
//
// description : C++ source for the LFI_3751Class. A singleton
// class derived from DeviceClass. It implements the
// command list and all properties and methods required
// by the LFI_3751 once per process.
//
// project : TANGO Device Server
//
// $Author: $
//
// $Revision: $
//
// $Log: $
//
// 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 <LFI_3751.h>
#include <LFI_3751Class.h>
namespace LFI_3751_ns
{
//+----------------------------------------------------------------------------
//
// method : PidAutotuneDCmd::execute()
//
// description : method to trigger the execution of the command.
// PLEASE DO NOT MODIFY this method core without pogo
//
// in : - device : The device on which the command must be excuted
// - in_any : The command input data
//
// returns : The command output data (packed in the Any object)
//
//-----------------------------------------------------------------------------
CORBA::Any *PidAutotuneDCmd::execute(Tango::DeviceImpl *device,const CORBA::Any &in_any)
{
cout2 << "PidAutotuneDCmd::execute(): arrived" << endl;
((static_cast<LFI_3751 *>(device))->pid_autotune_d());
return new CORBA::Any();
}
//+----------------------------------------------------------------------------
//
// method : PidAutotuneSCmd::execute()
//
// description : method to trigger the execution of the command.
// PLEASE DO NOT MODIFY this method core without pogo
//
// in : - device : The device on which the command must be excuted
// - in_any : The command input data
//
// returns : The command output data (packed in the Any object)
//
//-----------------------------------------------------------------------------
CORBA::Any *PidAutotuneSCmd::execute(Tango::DeviceImpl *device,const CORBA::Any &in_any)
{
cout2 << "PidAutotuneSCmd::execute(): arrived" << endl;
((static_cast<LFI_3751 *>(device))->pid_autotune_s());
return new CORBA::Any();
}
//
//----------------------------------------------------------------
// Initialize pointer for singleton pattern
//----------------------------------------------------------------
//
LFI_3751Class *LFI_3751Class::_instance = NULL;
//+----------------------------------------------------------------------------
//
// method : LFI_3751Class::LFI_3751Class(string &s)
//
// description : constructor for the LFI_3751Class
//
// in : - s : The class name
//
//-----------------------------------------------------------------------------
LFI_3751Class::LFI_3751Class(string &s):DeviceClass(s)
{
cout2 << "Entering LFI_3751Class constructor" << endl;
set_default_property();
write_class_property();
cout2 << "Leaving LFI_3751Class constructor" << endl;
}
//+----------------------------------------------------------------------------
//
// method : LFI_3751Class::~LFI_3751Class()
//
// description : destructor for the LFI_3751Class
//
//-----------------------------------------------------------------------------
LFI_3751Class::~LFI_3751Class()
{
_instance = NULL;
}
//+----------------------------------------------------------------------------
//
// method : LFI_3751Class::instance
//
// description : Create the object if not already done. Otherwise, just
// return a pointer to the object
//
// in : - name : The class name
//
//-----------------------------------------------------------------------------
LFI_3751Class *LFI_3751Class::init(const char *name)
{
if (_instance == NULL)
{
try
{
string s(name);
_instance = new LFI_3751Class(s);
}
catch (bad_alloc)
{
throw;
}
}
return _instance;
}
LFI_3751Class *LFI_3751Class::instance()
{
if (_instance == NULL)
{
cerr << "Class is not initialised !!" << endl;
exit(-1);
}
return _instance;
}
//+----------------------------------------------------------------------------
//
// method : LFI_3751Class::command_factory
//
// description : Create the command object(s) and store them in the
// command list
//
//-----------------------------------------------------------------------------
void LFI_3751Class::command_factory()
{
command_list.push_back(new PidAutotuneSCmd("PidAutotuneS",
Tango::DEV_VOID, Tango::DEV_VOID,
"",
"",
Tango::OPERATOR));
command_list.push_back(new PidAutotuneDCmd("PidAutotuneD",
Tango::DEV_VOID, Tango::DEV_VOID,
"",
"",
Tango::OPERATOR));
// add polling if any
for (unsigned int i=0 ; i<command_list.size(); i++)
{
}
}
//+----------------------------------------------------------------------------
//
// method : LFI_3751Class::get_class_property
//
// description : Get the class property for specified name.
//
// in : string name : The property name
//
//+----------------------------------------------------------------------------
Tango::DbDatum LFI_3751Class::get_class_property(string &prop_name)
{
for (int i=0 ; i<cl_prop.size() ; i++)
if (cl_prop[i].name == prop_name)
return cl_prop[i];
// if not found, return an empty DbDatum
return Tango::DbDatum(prop_name);
}
//+----------------------------------------------------------------------------
//
// method : LFI_3751Class::get_default_device_property()
//
// description : Return the default value for device property.
//
//-----------------------------------------------------------------------------
Tango::DbDatum LFI_3751Class::get_default_device_property(string &prop_name)
{
for (int i=0 ; i<dev_def_prop.size() ; i++)
if (dev_def_prop[i].name == prop_name)
return dev_def_prop[i];
// if not found, return an empty DbDatum
return Tango::DbDatum(prop_name);
}
//+----------------------------------------------------------------------------
//
// method : LFI_3751Class::get_default_class_property()
//
// description : Return the default value for class property.
//
//-----------------------------------------------------------------------------
Tango::DbDatum LFI_3751Class::get_default_class_property(string &prop_name)
{
for (int i=0 ; i<cl_def_prop.size() ; i++)
if (cl_def_prop[i].name == prop_name)
return cl_def_prop[i];
// if not found, return an empty DbDatum
return Tango::DbDatum(prop_name);
}
//+----------------------------------------------------------------------------
//
// method : LFI_3751Class::device_factory
//
// description : Create the device object(s) and store them in the
// device list
//
// in : Tango::DevVarStringArray *devlist_ptr : The device name list
//
//-----------------------------------------------------------------------------
void LFI_3751Class::device_factory(const Tango::DevVarStringArray *devlist_ptr)
{
// Create all devices.(Automatic code generation)
//-------------------------------------------------------------
for (unsigned long i=0 ; i < devlist_ptr->length() ; i++)
{
cout4 << "Device name : " << (*devlist_ptr)[i].in() << endl;
// Create devices and add it into the device list
//----------------------------------------------------
device_list.push_back(new LFI_3751(this, (*devlist_ptr)[i]));
// Export device to the outside world
// Check before if database used.
//---------------------------------------------
if ((Tango::Util::_UseDb == true) && (Tango::Util::_FileDb == false))
export_device(device_list.back());
else
export_device(device_list.back(), (*devlist_ptr)[i]);
}
// End of Automatic code generation
//-------------------------------------------------------------
}
//+----------------------------------------------------------------------------
// Method: LFI_3751Class::attribute_factory(vector<Tango::Attr *> &att_list)
//-----------------------------------------------------------------------------
void LFI_3751Class::attribute_factory(vector<Tango::Attr *> &att_list)
{
// Attribute : temperaturePreset
temperaturePresetAttrib *temperature_preset = new temperaturePresetAttrib();
Tango::UserDefaultAttrProp temperature_preset_prop;
temperature_preset_prop.set_label("Temperature Preset");
temperature_preset_prop.set_unit("Tc");
temperature_preset_prop.set_standard_unit("Tc");
temperature_preset_prop.set_display_unit("Tc");
temperature_preset_prop.set_description("temperature to reach. the unit depends on the probe used.");
temperature_preset->set_default_properties(temperature_preset_prop);
att_list.push_back(temperature_preset);
// Attribute : temperatureMeasured
temperatureMeasuredAttrib *temperature_measured = new temperatureMeasuredAttrib();
Tango::UserDefaultAttrProp temperature_measured_prop;
temperature_measured_prop.set_label("temperature measured");
temperature_measured_prop.set_unit("Tc");
temperature_measured_prop.set_standard_unit("Tc");
temperature_measured_prop.set_display_unit("Tc");
temperature_measured_prop.set_description("gets the temperature measured by the probe. the unit depends on\nthe probe type used");
temperature_measured->set_default_properties(temperature_measured_prop);
att_list.push_back(temperature_measured);
// Attribute : resistanceMeasured
resistanceMeasuredAttrib *resistance_measured = new resistanceMeasuredAttrib();
Tango::UserDefaultAttrProp resistance_measured_prop;
resistance_measured_prop.set_label("resistance");
resistance_measured_prop.set_unit("ohm");
resistance_measured_prop.set_standard_unit("ohm");
resistance_measured_prop.set_display_unit("ohm");
resistance_measured_prop.set_description("gets the resistance measured by the probe.");
resistance_measured->set_default_properties(resistance_measured_prop);
att_list.push_back(resistance_measured);
// Attribute : heaterPercent
heaterPercentAttrib *heater_percent = new heaterPercentAttrib();
Tango::UserDefaultAttrProp heater_percent_prop;
heater_percent_prop.set_label("heater percent");
heater_percent_prop.set_unit("%");
heater_percent_prop.set_standard_unit("%");
heater_percent_prop.set_display_unit("%");
heater_percent_prop.set_description("provides information about the heating. this value is calculated\nas following expression:\n%heat = [ I(measured) / I(limit) ]*100");
heater_percent->set_default_properties(heater_percent_prop);
att_list.push_back(heater_percent);
// Attribute : temperatureError
temperatureErrorAttrib *temperature_error = new temperatureErrorAttrib();
Tango::UserDefaultAttrProp temperature_error_prop;
temperature_error_prop.set_label("Temperature Error");
temperature_error_prop.set_unit("C");
temperature_error_prop.set_standard_unit("C");
temperature_error_prop.set_display_unit("C");
temperature_error_prop.set_description("provides the interval error between the temperature preset\nand the measured temperature.");
temperature_error->set_default_properties(temperature_error_prop);
att_list.push_back(temperature_error);
// Attribute : coeffP
coeffPAttrib *coeff_p = new coeffPAttrib();
Tango::UserDefaultAttrProp coeff_p_prop;
coeff_p_prop.set_label("P");
coeff_p_prop.set_description("this is the proportional gain parameter to set");
coeff_p->set_default_properties(coeff_p_prop);
att_list.push_back(coeff_p);
// Attribute : coeffI
coeffIAttrib *coeff_i = new coeffIAttrib();
Tango::UserDefaultAttrProp coeff_i_prop;
coeff_i_prop.set_label("I");
coeff_i_prop.set_unit("s");
coeff_i_prop.set_standard_unit("s");
coeff_i_prop.set_display_unit("s");
coeff_i_prop.set_description("this is the Integrator parameter to set");
coeff_i->set_default_properties(coeff_i_prop);
att_list.push_back(coeff_i);
// Attribute : coeffD
coeffDAttrib *coeff_d = new coeffDAttrib();
Tango::UserDefaultAttrProp coeff_d_prop;
coeff_d_prop.set_label("D");
coeff_d_prop.set_unit("s");
coeff_d_prop.set_standard_unit("s");
coeff_d_prop.set_display_unit("s");
coeff_d_prop.set_description("this is the Derivator parameter to set");
coeff_d->set_default_properties(coeff_d_prop);
att_list.push_back(coeff_d);
// Attribute : outputCurrent
outputCurrentAttrib *output_current = new outputCurrentAttrib();
Tango::UserDefaultAttrProp output_current_prop;
output_current_prop.set_label("output status");
output_current_prop.set_description("to enabled or disabled the output current");
output_current->set_default_properties(output_current_prop);
att_list.push_back(output_current);
}
//+----------------------------------------------------------------------------
//
// method : LFI_3751Class::set_default_property
//
// description: Set default property (class and device) for wizard.
// For each property, add to wizard property name and description
// If default value has been set, add it to wizard property and
// store it in a DbDatum.
//
//-----------------------------------------------------------------------------
void LFI_3751Class::set_default_property()
{
string prop_name;
string prop_desc;
string prop_def;
vector<string> vect_data;
// Set Default Class Properties
// Set Default Device Properties
prop_name = "SerialProxyName";
prop_desc = "name of the serial line proxy device";
prop_def = "instrum_lambda/Serialline/serial01";
vect_data.clear();
vect_data.push_back("instrum_lambda/Serialline/serial01");
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 : LFI_3751Class::write_class_property
//
// description : Set class description as property in database
//
//-----------------------------------------------------------------------------
void LFI_3751Class::write_class_property()
{
// First time, check if database used
//--------------------------------------------
if (Tango::Util::_UseDb == false)
return;
Tango::DbData data;
string classname = get_name();
string header;
string::size_type start, end;
// Put title
Tango::DbDatum title("ProjectTitle");
string str_title("LFI_3751");
title << str_title;
data.push_back(title);
// Put Description
Tango::DbDatum description("Description");
vector<string> str_desc;
str_desc.push_back("This device controls the LFI 3751 temperature controller");
str_desc.push_back("");
str_desc.push_back("Device States Description:");
str_desc.push_back("Tango::ALARM :");
str_desc.push_back("Tango::UNKNOWN :");
str_desc.push_back("Tango::FAULT :");
str_desc.push_back("Tango::ON :");
description << str_desc;
data.push_back(description);
// put cvs location
string rcsId(RcsId);
string filename(classname);
start = rcsId.find("/");
if (start!=string::npos)
{
filename += "Class.cpp";
end = rcsId.find(filename);
if (end>start)
{
string strloc = rcsId.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);
}
}
// Get CVS tag revision
string tagname(TagName);
header = "$Name: ";
start = header.length();
string endstr(" $");
end = tagname.find(endstr);
if (end>start)
{
string strtag = tagname.substr(start, end-start);
Tango::DbDatum cvs_tag("cvs_tag");
cvs_tag << strtag;
data.push_back(cvs_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);
}
// Call database and and values
//--------------------------------------------
get_db_class()->put_property(data);
}
} // namespace
//=============================================================================
//
// file : LFI_3751Class.h
//
// description : Include for the LFI_3751Class root class.
// This class is represents the singleton class for
// the LFI_3751 device class.
// It contains all properties and methods which the
// LFI_3751 requires only once e.g. the commands.
//
// project : TANGO Device Server
//
// $Author: $
//
// $Revision: $
//
// $Log: $
//
// 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 _LFI_3751CLASS_H
#define _LFI_3751CLASS_H
#include <tango.h>
#include <LFI_3751.h>
namespace LFI_3751_ns
{
//=====================================
// Define classes for attributes
//=====================================
class outputCurrentAttrib: public Tango::Attr
{
public:
outputCurrentAttrib():Attr("outputCurrent", Tango::DEV_BOOLEAN, Tango::READ_WRITE) {};
~outputCurrentAttrib() {};
virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att)
{(static_cast<LFI_3751 *>(dev))->read_outputCurrent(att);}
virtual void write(Tango::DeviceImpl *dev,Tango::WAttribute &att)
{(static_cast<LFI_3751 *>(dev))->write_outputCurrent(att);}
virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty)
{return (static_cast<LFI_3751 *>(dev))->is_outputCurrent_allowed(ty);}
};
class coeffDAttrib: public Tango::Attr
{
public:
coeffDAttrib():Attr("coeffD", Tango::DEV_DOUBLE, Tango::READ_WRITE) {};
~coeffDAttrib() {};
virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att)
{(static_cast<LFI_3751 *>(dev))->read_coeffD(att);}
virtual void write(Tango::DeviceImpl *dev,Tango::WAttribute &att)
{(static_cast<LFI_3751 *>(dev))->write_coeffD(att);}
virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty)
{return (static_cast<LFI_3751 *>(dev))->is_coeffD_allowed(ty);}
};
class coeffIAttrib: public Tango::Attr
{
public:
coeffIAttrib():Attr("coeffI", Tango::DEV_DOUBLE, Tango::READ_WRITE) {};
~coeffIAttrib() {};
virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att)
{(static_cast<LFI_3751 *>(dev))->read_coeffI(att);}
virtual void write(Tango::DeviceImpl *dev,Tango::WAttribute &att)
{(static_cast<LFI_3751 *>(dev))->write_coeffI(att);}
virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty)
{return (static_cast<LFI_3751 *>(dev))->is_coeffI_allowed(ty);}
};
class coeffPAttrib: public Tango::Attr
{
public:
coeffPAttrib():Attr("coeffP", Tango::DEV_DOUBLE, Tango::READ_WRITE) {};
~coeffPAttrib() {};
virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att)
{(static_cast<LFI_3751 *>(dev))->read_coeffP(att);}
virtual void write(Tango::DeviceImpl *dev,Tango::WAttribute &att)
{(static_cast<LFI_3751 *>(dev))->write_coeffP(att);}
virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty)
{return (static_cast<LFI_3751 *>(dev))->is_coeffP_allowed(ty);}
};
class temperatureErrorAttrib: public Tango::Attr
{
public:
temperatureErrorAttrib():Attr("temperatureError", Tango::DEV_DOUBLE, Tango::READ) {};
~temperatureErrorAttrib() {};
virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att)
{(static_cast<LFI_3751 *>(dev))->read_temperatureError(att);}
virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty)
{return (static_cast<LFI_3751 *>(dev))->is_temperatureError_allowed(ty);}
};
class heaterPercentAttrib: public Tango::Attr
{
public:
heaterPercentAttrib():Attr("heaterPercent", Tango::DEV_DOUBLE, Tango::READ) {};
~heaterPercentAttrib() {};
virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att)
{(static_cast<LFI_3751 *>(dev))->read_heaterPercent(att);}
virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty)
{return (static_cast<LFI_3751 *>(dev))->is_heaterPercent_allowed(ty);}
};
class resistanceMeasuredAttrib: public Tango::Attr
{
public:
resistanceMeasuredAttrib():Attr("resistanceMeasured", Tango::DEV_DOUBLE, Tango::READ) {};
~resistanceMeasuredAttrib() {};
virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att)
{(static_cast<LFI_3751 *>(dev))->read_resistanceMeasured(att);}
virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty)
{return (static_cast<LFI_3751 *>(dev))->is_resistanceMeasured_allowed(ty);}
};
class temperatureMeasuredAttrib: public Tango::Attr
{
public:
temperatureMeasuredAttrib():Attr("temperatureMeasured", Tango::DEV_DOUBLE, Tango::READ) {};
~temperatureMeasuredAttrib() {};
virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att)
{(static_cast<LFI_3751 *>(dev))->read_temperatureMeasured(att);}
virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty)
{return (static_cast<LFI_3751 *>(dev))->is_temperatureMeasured_allowed(ty);}
};
class temperaturePresetAttrib: public Tango::Attr
{
public:
temperaturePresetAttrib():Attr("temperaturePreset", Tango::DEV_DOUBLE, Tango::READ_WRITE) {};
~temperaturePresetAttrib() {};
virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att)
{(static_cast<LFI_3751 *>(dev))->read_temperaturePreset(att);}
virtual void write(Tango::DeviceImpl *dev,Tango::WAttribute &att)
{(static_cast<LFI_3751 *>(dev))->write_temperaturePreset(att);}
virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty)
{return (static_cast<LFI_3751 *>(dev))->is_temperaturePreset_allowed(ty);}
};
//=========================================
// Define classes for commands
//=========================================
class PidAutotuneDCmd : public Tango::Command
{
public:
PidAutotuneDCmd(const char *name,
Tango::CmdArgType in,
Tango::CmdArgType out,
const char *in_desc,
const char *out_desc,
Tango::DispLevel level)
:Command(name,in,out,in_desc,out_desc, level) {};
PidAutotuneDCmd(const char *name,
Tango::CmdArgType in,
Tango::CmdArgType out)
:Command(name,in,out) {};
~PidAutotuneDCmd() {};
virtual CORBA::Any *execute (Tango::DeviceImpl *dev, const CORBA::Any &any);
virtual bool is_allowed (Tango::DeviceImpl *dev, const CORBA::Any &any)
{return (static_cast<LFI_3751 *>(dev))->is_PidAutotuneD_allowed(any);}
};
class PidAutotuneSCmd : public Tango::Command
{
public:
PidAutotuneSCmd(const char *name,
Tango::CmdArgType in,
Tango::CmdArgType out,
const char *in_desc,
const char *out_desc,
Tango::DispLevel level)
:Command(name,in,out,in_desc,out_desc, level) {};
PidAutotuneSCmd(const char *name,
Tango::CmdArgType in,
Tango::CmdArgType out)
:Command(name,in,out) {};
~PidAutotuneSCmd() {};
virtual CORBA::Any *execute (Tango::DeviceImpl *dev, const CORBA::Any &any);
virtual bool is_allowed (Tango::DeviceImpl *dev, const CORBA::Any &any)
{return (static_cast<LFI_3751 *>(dev))->is_PidAutotuneS_allowed(any);}
};
//
// The LFI_3751Class singleton definition
//
class LFI_3751Class : public Tango::DeviceClass
{
public:
// add your own data members here
//------------------------------------
public:
Tango::DbData cl_prop;
Tango::DbData cl_def_prop;
Tango::DbData dev_def_prop;
// Method prototypes
static LFI_3751Class *init(const char *);
static LFI_3751Class *instance();
~LFI_3751Class();
Tango::DbDatum get_class_property(string &);
Tango::DbDatum get_default_device_property(string &);
Tango::DbDatum get_default_class_property(string &);
protected:
LFI_3751Class(string &);
static LFI_3751Class *_instance;
void command_factory();
void attribute_factory(vector<Tango::Attr *> &);
void write_class_property();
void set_default_property();
private:
void device_factory(const Tango::DevVarStringArray *);
};
} // namespace LFI_3751_ns
#endif // _LFI_3751CLASS_H
static const char *RcsId = "$Header: $";
//+=============================================================================
//
// file : LFI_3751StateMachine.cpp
//
// description : C++ source for the LFI_3751 and its alowed.
// method for commands and attributes
//
// project : TANGO Device Server
//
// $Author: $
//
// $Revision: $
//
// $Log: $
//
// 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 <LFI_3751.h>
#include <LFI_3751Class.h>
/*====================================================================
* This file contains the methods to allow commands and attributes
* read or write execution.
*
* If you wand to add your own code, add it between
* the "End/Re-Start of Generated Code" comments.
*
* If you want, you can also add your own methods.
*====================================================================
*/
namespace LFI_3751_ns
{
//=================================================
// Attributes Allowed Methods
//=================================================
//+----------------------------------------------------------------------------
//
// method : LFI_3751::is_temperaturePreset_allowed
//
// description : Read/Write allowed for temperaturePreset attribute.
//
//-----------------------------------------------------------------------------
bool LFI_3751::is_temperaturePreset_allowed(Tango::AttReqType type)
{
// End of Generated Code
// Re-Start of Generated Code
return true;
}
//+----------------------------------------------------------------------------
//
// method : LFI_3751::is_temperatureMeasured_allowed
//
// description : Read/Write allowed for temperatureMeasured attribute.
//
//-----------------------------------------------------------------------------
bool LFI_3751::is_temperatureMeasured_allowed(Tango::AttReqType type)
{
// End of Generated Code
// Re-Start of Generated Code
return true;
}
//+----------------------------------------------------------------------------
//
// method : LFI_3751::is_resistanceMeasured_allowed
//
// description : Read/Write allowed for resistanceMeasured attribute.
//
//-----------------------------------------------------------------------------
bool LFI_3751::is_resistanceMeasured_allowed(Tango::AttReqType type)
{
// End of Generated Code
// Re-Start of Generated Code
return true;
}
//+----------------------------------------------------------------------------
//
// method : LFI_3751::is_heaterPercent_allowed
//
// description : Read/Write allowed for heaterPercent attribute.
//
//-----------------------------------------------------------------------------
bool LFI_3751::is_heaterPercent_allowed(Tango::AttReqType type)
{
// End of Generated Code
// Re-Start of Generated Code
return true;
}
//+----------------------------------------------------------------------------
//
// method : LFI_3751::is_temperatureError_allowed
//
// description : Read/Write allowed for temperatureError attribute.
//
//-----------------------------------------------------------------------------
bool LFI_3751::is_temperatureError_allowed(Tango::AttReqType type)
{
// End of Generated Code
// Re-Start of Generated Code
return true;
}
//+----------------------------------------------------------------------------
//
// method : LFI_3751::is_coeffP_allowed
//
// description : Read/Write allowed for coeffP attribute.
//
//-----------------------------------------------------------------------------
bool LFI_3751::is_coeffP_allowed(Tango::AttReqType type)
{
// End of Generated Code
// Re-Start of Generated Code
return true;
}
//+----------------------------------------------------------------------------
//
// method : LFI_3751::is_coeffI_allowed
//
// description : Read/Write allowed for coeffI attribute.
//
//-----------------------------------------------------------------------------
bool LFI_3751::is_coeffI_allowed(Tango::AttReqType type)
{
// End of Generated Code
// Re-Start of Generated Code
return true;
}
//+----------------------------------------------------------------------------
//
// method : LFI_3751::is_coeffD_allowed
//
// description : Read/Write allowed for coeffD attribute.
//
//-----------------------------------------------------------------------------
bool LFI_3751::is_coeffD_allowed(Tango::AttReqType type)
{
// End of Generated Code
// Re-Start of Generated Code
return true;
}
//+----------------------------------------------------------------------------
//
// method : LFI_3751::is_outputCurrent_allowed
//
// description : Read/Write allowed for outputCurrent attribute.
//
//-----------------------------------------------------------------------------
bool LFI_3751::is_outputCurrent_allowed(Tango::AttReqType type)
{
// End of Generated Code
// Re-Start of Generated Code
return true;
}
//=================================================
// Commands Allowed Methods
//=================================================
//+----------------------------------------------------------------------------
//
// method : LFI_3751::is_PidAutotuneS_allowed
//
// description : Execution allowed for PidAutotuneS command.
//
//-----------------------------------------------------------------------------
bool LFI_3751::is_PidAutotuneS_allowed(const CORBA::Any &any)
{
// End of Generated Code
// Re-Start of Generated Code
return true;
}
//+----------------------------------------------------------------------------
//
// method : LFI_3751::is_PidAutotuneD_allowed
//
// description : Execution allowed for PidAutotuneD command.
//
//-----------------------------------------------------------------------------
bool LFI_3751::is_PidAutotuneD_allowed(const CORBA::Any &any)
{
// End of Generated Code
// Re-Start of Generated Code
return true;
}
} // namespace LFI_3751_ns
#=============================================================================
#
# file : Makefile
#
# description : Include for the LFI_3751 class.
#
# project : Makefile to generate a Tango server
#
# $Author: $
#
# $Revision: $
#
# $Log: $
#
# 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
#=============================================================================
#
#-----------------------------------------
# Set default home directories
#-----------------------------------------
TANGO_HOME = /segfs/tango
CPP_SERVERS = $(TANGO_HOME)/cppserver
ifdef no_debug
DEBUG = -O
else
DEBUG = -g
endif
ifdef _solaris
CC = CC
BIN_DIR=$(shell /csadmin/common/scripts/get_os)_CC
endif
ifdef linux
CC = c++
AR = ar
BIN_DIR=$(shell /csadmin/common/scripts/get_os)
endif
INCLUDE_DIRS = -I$(TANGO_HOME)/include/$(BIN_DIR) -I. \
-I$(CPP_SERVERS)/include
LIB_DIRS = -L $(TANGO_HOME)/lib/$(BIN_DIR)
TARGET_LIB = $(CPP_SERVERS)/lib/$(BIN_DIR)/libtgclasses.a
#-----------------------------------------
# Set CXXFLAGS and LFLAGS
#-----------------------------------------
ifdef _solaris
CXXFLAGS = $(DEBUG) -mt -D_PTHREADS $(INCLUDE_DIRS)
LFLAGS = $(DEBUG) $(LIB_DIRS) \
-ltango \
-llog4tango \
-lomniORB4 \
-lomniDynamic4 \
-lomnithread \
-lCOS4 \
-lpthread \
-lposix4 -lsocket -lnsl
endif
ifdef linux
CXXFLAGS = $(DEBUG) -D_REENTRANT $(INCLUDE_DIRS)
LFLAGS = $(DEBUG) $(LIB_DIRS) \
-ltango \
-llog4tango \
-lomniORB4 \
-lomniDynamic4 \
-lomnithread \
-lCOS4 \
-ldl -lpthread
endif
#-----------------------------------------
# Set dependences
#-----------------------------------------
CLASS = LFI_3751
SVC_OBJS = main.o \
ClassFactory.o \
$(CLASS)Class.o \
$(CLASS)StateMachine.o \
$(CLASS).o
SVC_INC = $(CLASS)Class.h \
$(CLASS).h
%.o: %.cpp $(SVC_INC)
$(CC) $(CXXFLAGS) -c $<
#-----------------------------------------
# Make Entry
#-----------------------------------------
all: $(CLASS)
$(CLASS): $(SVC_OBJS)
$(CC) $(SVC_OBJS) -o $(CLASS) $(LFLAGS)
clean:
rm -f *.o $(CLASS) core
#-----------------------------------------
# Install binary file
#-----------------------------------------
install:
cp $(CLASS) $(TANGO_HOME)/bin/$(BIN_DIR)
#-----------------------------------------
# Update class library and header files
# recompile without debug mode.
#-----------------------------------------
lib: clean
@make no_debug=1
cp *.h $(CPP_SERVERS)/include
ar ruv $(TARGET_LIB) $(CLASS).o
ar ruv $(TARGET_LIB) $(CLASS)Class.o
ar ruv $(TARGET_LIB) $(CLASS)StateMachine.o
ident $(TARGET_LIB)
#
device_server= LFI_3751
#
# Des includes particuliers
# Mettre /Ic:\monchemininclude /:\monautrechemininclude
INCUSER=
#
# et vos Librairies
# style
#
# LIBUSER = "x:\moncheminlibrairie\malibrairie.lib"
LIBUSER=
#vos OBJ
#OBJUSER =
# Le repertoire ou sont les sources autres que le DServeur
#CPPDIRUSER =
#
# ------------------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)\ClassFactory.OBJ\
$(OBJDIR)\main.OBJ\
$(OBJDIR)\$(device_server)StateMachine.OBJ\
$(OBJDIR)\$(device_server)Class.OBJ
SRCS = \
$(device_server).CPP\
ClassFactory.CPP\
$(device_server)StateMachine.CPP\
main.CPP \
$(device_server)Class.CPP
# --------------------------------------
!include $(make_dir)\common_target.opt
static const char *RcsId = "$Header: $";
//+=============================================================================
//
// 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
//
// $Author: $
//
// $Revision: $ $
//
// $Log: $
//
// 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;
}
tg->server_cleanup();
return(0);
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment