diff --git a/Makefile b/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..6ca89be8e7a8ab8b683bd5076bf140613f402c99 --- /dev/null +++ b/Makefile @@ -0,0 +1,6 @@ +NAME_SRV = pz116e-srv + +CXXFLAGS = +LDFLAGS = + +include ../makefiles/Make-9.3.3.in diff --git a/doc/AttrIdentityNumber.html b/doc/AttrIdentityNumber.html new file mode 100644 index 0000000000000000000000000000000000000000..b80be15eadca2cf1a08cb6d49b147a5fc16e38e9 --- /dev/null +++ b/doc/AttrIdentityNumber.html @@ -0,0 +1,259 @@ +<!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 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.elettra.trieste.it/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/elettra_logo.gif" BORDER=0 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.synchrotron-soleil.fr/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/soleil_logo.gif" BORDER=0 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.cells.es/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/alba.jpg" BORDER=0 Height="45"></A> + </TD> + <TD ALIGN="Right"> + <H2><FONT COLOR="#7F00FF"> + <Br><Center><A HREF="http://www.tango-controls.org/" TARGET="_top"> TANGO </a> + </Center></FONT> + </TD> + </TR> + <TR> + <TD ALIGN="left"> + <A HREF="http://www.desy.de/html/home/index_eng.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/desy.gif" BORDER=0 Height="44"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.maxlab.lu.se/maxlab/max4/index.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/maxlab.gif" BORDER=0 Height="40"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.frm2.tum.de/en/index.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/frm-2.jpg" BORDER=0 Height="45"></A> + </TD> + <TD> + <!-- Empty --> + </TD> + <TD ALIGN="Right"> + <H2><FONT COLOR="#7F00FF"> + <Center> Device Servers + </Center></FONT> + </TD> + </TR> +</TABLE> + +<HR WIDTH="100%"></H5> + + +<FONT SIZE="+3"> +<center> +<u> + PZ116E Tango Class <Br> +</u> +<FONT SIZE="+1"> + ( PI Piezo PZ116E controller device server ) +<Br> +<Br> +<TABLE BORDER="1" WIDTH="100%" CELLSPACING=0> + <TD ALIGN="center"> + <a href="index.html"> Description</a> + </Td> + <TD ALIGN="center"> + <a href="Properties.html"> Properties</a></li> + </Td> + <TD ALIGN="center"> + <a href="Commands.html"> Commands</a></li> + </Td> + <TD ALIGN="center"> + <a href="Attributes.html"> Attributes</a></li> + </Td> + <TD ALIGN="center"> + <a href="States.html"> States</a></li> + </Td> +</TABLE> +<Br> +<Br> +<Br> +<FONT SIZE="+2"><u> + IdentityNumber Attribute +</u></Font> +</Center> + + + +<FONT SIZE="-1"> +<Br> +<Br> +<ul> + <Font SIZE="+0"> <b><u> Description :</u></b> </Font> + <ul> + + </ul> + <Br> + <Br> + + + + <Table Border=0 Cellpadding=0 CELLSPACING=10> + <TR> + <TD ALIGN="left" VALIGN=top> + + + <Table Border=2 Cellpadding=3 CELLSPACING=0> + <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> + <Td COLSPAN=0> <Font Size=+1> <Center><b> + Attribute Definition + </b></Font></Center></td> + </Tr> + <!---------- Attribute type -----------> + <Tr> + <Td> <Font=+1><b> Attribute Type </b></Font></Td> + <Td> Scalar </Td> + </Tr> + + <!---------- R/W type -----------> + <Tr> + <Td> <Font=+1><b> R/W Type </b></Font></Td> + <Td> READ </Td> + </Tr> + + <!---------- Data type -----------> + <Tr> + <Td> <Font=+1><b> Data Type </b></Font></Td> + <Td> Tango::DEV_STRING </Td> + </Tr> + + <!---------- Allowed State -----------> + + <!--- Read access ---> + <Tr> + <Td> <Font=+1><b> Read allowed for </b></Font></Td> + <Td> All states </Td> + </Tr> + + + <!---------- Display Level -----------> + <Tr> + <Td> <Font=+1><b> Display Level </b></Font></Td> + <Td> OPERATOR </Td> + </Tr> + + <!---------- Inheritance -----------> + <Tr> + <Td> <Font=+1><b> Inherited </b></Font></Td> + <Td> false </Td> + </Tr> + <Tr> + <Td> <Font=+1><b> Abstract </b></Font></Td> + <Td> false </Td> + </Tr> + + <!---------- Polling -----------> + + <!---------- Memorized -----------> + + <!---------- Change Event -----------> + + <!---------- Archive Event -----------> + + </Table> + </Td> + <Td ALIGN="left" VALIGN=top> + + + <Table Border=2 Cellpadding=3 CELLSPACING=0> + <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> + <Td COLSPAN=0> <Font Size=+1> <Center><b> + Attrribute Properties + </b></Font></Center></td> + </Tr> + <Tr><Td> <Font=+1><b> label </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> unit </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> standard unit </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> display unit </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> format </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> max_value </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> min_value </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> max_alarm </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> min_alarm </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> max_warning </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> min_warning </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> delta_time </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> delta_val </b></Font></Td> <Td> </Td></Tr> + <!--- Tr><Td> <Font=+1><b> description </b></Font></Td> <Td> </Td></Tr---> + </Table> + </Td> + </Table> + <Br> + <Br> + <Br> + <Br> + +<!--- /*PROTECTED REGION ID(./doc_html/AttrIdentityNumber.html) ENABLED START*/ ---> + <!--- Add your own documentation, pictures, links,.... ---> + <ul> + + </ul> +<!--- /*PROTECTED REGION END*/ ---> + + <Br> + <Br> +</ul> +</FONT> +<Br> +<Br> + + +<!--- html Footer ---> +<Center> +<Font size=-1> +<br> +<br> +<TABLE BORDER="1" WIDTH="100%"> + <Tr> + <!--- Hosted by Sourceforge ---> + <Td Align="Center"> + <Font size=-1> + <b>TANGO</b> is an open source project hosted by :<br> + <A href="http://sourceforge.net" Target="new"> + <IMG title="Sourceforge logo" + alt="Sourceforge logo small" + src="http://www.esrf.fr/computing/cs/tango/sourceforge.gif" + border=0> </a> + </Font> + </Td> + <!--- 2 Sourceforge Repositories ---> + <Td Align="Center"> + <Font size=-1> + Core and Tools : + <a href="http://tango-cs.cvs.sourceforge.net/tango-cs/" Target=new> + CVS repository</a> on + <a href="https://sourceforge.net/projects/tango-cs" Target=new> + tango-cs project</a> + <br> + Device Servers : + <a href="http://tango-ds.cvs.sourceforge.net/tango-ds/" Target=new> + CVS repository</cmda> on + <a href="https://sourceforge.net/projects/tango-ds" Target=new> + tango-ds project</a> + </Font> + </Td> + </Tr> +</Table> +</Font> +</Center> +</body> +</html> + diff --git a/doc/AttrPosition.html b/doc/AttrPosition.html new file mode 100644 index 0000000000000000000000000000000000000000..4f25235dec4ed22c29c95c3195e21e022578256a --- /dev/null +++ b/doc/AttrPosition.html @@ -0,0 +1,263 @@ +<!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 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.elettra.trieste.it/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/elettra_logo.gif" BORDER=0 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.synchrotron-soleil.fr/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/soleil_logo.gif" BORDER=0 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.cells.es/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/alba.jpg" BORDER=0 Height="45"></A> + </TD> + <TD ALIGN="Right"> + <H2><FONT COLOR="#7F00FF"> + <Br><Center><A HREF="http://www.tango-controls.org/" TARGET="_top"> TANGO </a> + </Center></FONT> + </TD> + </TR> + <TR> + <TD ALIGN="left"> + <A HREF="http://www.desy.de/html/home/index_eng.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/desy.gif" BORDER=0 Height="44"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.maxlab.lu.se/maxlab/max4/index.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/maxlab.gif" BORDER=0 Height="40"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.frm2.tum.de/en/index.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/frm-2.jpg" BORDER=0 Height="45"></A> + </TD> + <TD> + <!-- Empty --> + </TD> + <TD ALIGN="Right"> + <H2><FONT COLOR="#7F00FF"> + <Center> Device Servers + </Center></FONT> + </TD> + </TR> +</TABLE> + +<HR WIDTH="100%"></H5> + + +<FONT SIZE="+3"> +<center> +<u> + PZ116E Tango Class <Br> +</u> +<FONT SIZE="+1"> + ( PI Piezo PZ116E controller device server ) +<Br> +<Br> +<TABLE BORDER="1" WIDTH="100%" CELLSPACING=0> + <TD ALIGN="center"> + <a href="index.html"> Description</a> + </Td> + <TD ALIGN="center"> + <a href="Properties.html"> Properties</a></li> + </Td> + <TD ALIGN="center"> + <a href="Commands.html"> Commands</a></li> + </Td> + <TD ALIGN="center"> + <a href="Attributes.html"> Attributes</a></li> + </Td> + <TD ALIGN="center"> + <a href="States.html"> States</a></li> + </Td> +</TABLE> +<Br> +<Br> +<Br> +<FONT SIZE="+2"><u> + Position Attribute +</u></Font> +</Center> + + + +<FONT SIZE="-1"> +<Br> +<Br> +<ul> + <Font SIZE="+0"> <b><u> Description :</u></b> </Font> + <ul> + + </ul> + <Br> + <Br> + + + + <Table Border=0 Cellpadding=0 CELLSPACING=10> + <TR> + <TD ALIGN="left" VALIGN=top> + + + <Table Border=2 Cellpadding=3 CELLSPACING=0> + <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> + <Td COLSPAN=0> <Font Size=+1> <Center><b> + Attribute Definition + </b></Font></Center></td> + </Tr> + <!---------- Attribute type -----------> + <Tr> + <Td> <Font=+1><b> Attribute Type </b></Font></Td> + <Td> Scalar </Td> + </Tr> + + <!---------- R/W type -----------> + <Tr> + <Td> <Font=+1><b> R/W Type </b></Font></Td> + <Td> READ_WRITE </Td> + </Tr> + + <!---------- Data type -----------> + <Tr> + <Td> <Font=+1><b> Data Type </b></Font></Td> + <Td> Tango::DEV_DOUBLE </Td> + </Tr> + + <!---------- Allowed State -----------> + + <!--- Read access ---> + <Tr> + <Td> <Font=+1><b> Read allowed for </b></Font></Td> + <Td> All states </Td> + </Tr> + <Tr> + <Td> <Font=+1><b> Write allowed for </b></Font></Td> + <Td> All states </Td> + </Tr> + + + <!---------- Display Level -----------> + <Tr> + <Td> <Font=+1><b> Display Level </b></Font></Td> + <Td> OPERATOR </Td> + </Tr> + + <!---------- Inheritance -----------> + <Tr> + <Td> <Font=+1><b> Inherited </b></Font></Td> + <Td> false </Td> + </Tr> + <Tr> + <Td> <Font=+1><b> Abstract </b></Font></Td> + <Td> false </Td> + </Tr> + + <!---------- Polling -----------> + + <!---------- Memorized -----------> + + <!---------- Change Event -----------> + + <!---------- Archive Event -----------> + + </Table> + </Td> + <Td ALIGN="left" VALIGN=top> + + + <Table Border=2 Cellpadding=3 CELLSPACING=0> + <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> + <Td COLSPAN=0> <Font Size=+1> <Center><b> + Attrribute Properties + </b></Font></Center></td> + </Tr> + <Tr><Td> <Font=+1><b> label </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> unit </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> standard unit </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> display unit </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> format </b></Font></Td> <Td> %.4f</Td></Tr> + <Tr><Td> <Font=+1><b> max_value </b></Font></Td> <Td> 999</Td></Tr> + <Tr><Td> <Font=+1><b> min_value </b></Font></Td> <Td> -999</Td></Tr> + <Tr><Td> <Font=+1><b> max_alarm </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> min_alarm </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> max_warning </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> min_warning </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> delta_time </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> delta_val </b></Font></Td> <Td> </Td></Tr> + <!--- Tr><Td> <Font=+1><b> description </b></Font></Td> <Td> </Td></Tr---> + </Table> + </Td> + </Table> + <Br> + <Br> + <Br> + <Br> + +<!--- /*PROTECTED REGION ID(./doc_html/AttrPosition.html) ENABLED START*/ ---> + <!--- Add your own documentation, pictures, links,.... ---> + <ul> + + </ul> +<!--- /*PROTECTED REGION END*/ ---> + + <Br> + <Br> +</ul> +</FONT> +<Br> +<Br> + + +<!--- html Footer ---> +<Center> +<Font size=-1> +<br> +<br> +<TABLE BORDER="1" WIDTH="100%"> + <Tr> + <!--- Hosted by Sourceforge ---> + <Td Align="Center"> + <Font size=-1> + <b>TANGO</b> is an open source project hosted by :<br> + <A href="http://sourceforge.net" Target="new"> + <IMG title="Sourceforge logo" + alt="Sourceforge logo small" + src="http://www.esrf.fr/computing/cs/tango/sourceforge.gif" + border=0> </a> + </Font> + </Td> + <!--- 2 Sourceforge Repositories ---> + <Td Align="Center"> + <Font size=-1> + Core and Tools : + <a href="http://tango-cs.cvs.sourceforge.net/tango-cs/" Target=new> + CVS repository</a> on + <a href="https://sourceforge.net/projects/tango-cs" Target=new> + tango-cs project</a> + <br> + Device Servers : + <a href="http://tango-ds.cvs.sourceforge.net/tango-ds/" Target=new> + CVS repository</cmda> on + <a href="https://sourceforge.net/projects/tango-ds" Target=new> + tango-ds project</a> + </Font> + </Td> + </Tr> +</Table> +</Font> +</Center> +</body> +</html> + diff --git a/doc/AttrRtMode.html b/doc/AttrRtMode.html new file mode 100644 index 0000000000000000000000000000000000000000..73cb6ca0608b7efef5e79efeb0c9caa16458e192 --- /dev/null +++ b/doc/AttrRtMode.html @@ -0,0 +1,267 @@ +<!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 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.elettra.trieste.it/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/elettra_logo.gif" BORDER=0 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.synchrotron-soleil.fr/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/soleil_logo.gif" BORDER=0 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.cells.es/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/alba.jpg" BORDER=0 Height="45"></A> + </TD> + <TD ALIGN="Right"> + <H2><FONT COLOR="#7F00FF"> + <Br><Center><A HREF="http://www.tango-controls.org/" TARGET="_top"> TANGO </a> + </Center></FONT> + </TD> + </TR> + <TR> + <TD ALIGN="left"> + <A HREF="http://www.desy.de/html/home/index_eng.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/desy.gif" BORDER=0 Height="44"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.maxlab.lu.se/maxlab/max4/index.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/maxlab.gif" BORDER=0 Height="40"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.frm2.tum.de/en/index.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/frm-2.jpg" BORDER=0 Height="45"></A> + </TD> + <TD> + <!-- Empty --> + </TD> + <TD ALIGN="Right"> + <H2><FONT COLOR="#7F00FF"> + <Center> Device Servers + </Center></FONT> + </TD> + </TR> +</TABLE> + +<HR WIDTH="100%"></H5> + + +<FONT SIZE="+3"> +<center> +<u> + PZ116E Tango Class <Br> +</u> +<FONT SIZE="+1"> + ( PI Piezo PZ116E controller device server ) +<Br> +<Br> +<TABLE BORDER="1" WIDTH="100%" CELLSPACING=0> + <TD ALIGN="center"> + <a href="index.html"> Description</a> + </Td> + <TD ALIGN="center"> + <a href="Properties.html"> Properties</a></li> + </Td> + <TD ALIGN="center"> + <a href="Commands.html"> Commands</a></li> + </Td> + <TD ALIGN="center"> + <a href="Attributes.html"> Attributes</a></li> + </Td> + <TD ALIGN="center"> + <a href="States.html"> States</a></li> + </Td> +</TABLE> +<Br> +<Br> +<Br> +<FONT SIZE="+2"><u> + RtMode Attribute +</u></Font> +</Center> + + + +<FONT SIZE="-1"> +<Br> +<Br> +<ul> + <Font SIZE="+0"> <b><u> Description :</u></b> </Font> + <ul> + If enabled, do not readback position, do not check errors in mov command + </ul> + <Br> + <Br> + + + + <Table Border=0 Cellpadding=0 CELLSPACING=10> + <TR> + <TD ALIGN="left" VALIGN=top> + + + <Table Border=2 Cellpadding=3 CELLSPACING=0> + <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> + <Td COLSPAN=0> <Font Size=+1> <Center><b> + Attribute Definition + </b></Font></Center></td> + </Tr> + <!---------- Attribute type -----------> + <Tr> + <Td> <Font=+1><b> Attribute Type </b></Font></Td> + <Td> Scalar </Td> + </Tr> + + <!---------- R/W type -----------> + <Tr> + <Td> <Font=+1><b> R/W Type </b></Font></Td> + <Td> READ_WRITE </Td> + </Tr> + + <!---------- Data type -----------> + <Tr> + <Td> <Font=+1><b> Data Type </b></Font></Td> + <Td> Tango::DEV_BOOLEAN </Td> + </Tr> + + <!---------- Allowed State -----------> + + <!--- Read access ---> + <Tr> + <Td> <Font=+1><b> Read allowed for </b></Font></Td> + <Td> All states </Td> + </Tr> + <Tr> + <Td> <Font=+1><b> Write allowed for </b></Font></Td> + <Td> All states </Td> + </Tr> + + + <!---------- Display Level -----------> + <Tr> + <Td> <Font=+1><b> Display Level </b></Font></Td> + <Td> OPERATOR </Td> + </Tr> + + <!---------- Inheritance -----------> + <Tr> + <Td> <Font=+1><b> Inherited </b></Font></Td> + <Td> false </Td> + </Tr> + <Tr> + <Td> <Font=+1><b> Abstract </b></Font></Td> + <Td> false </Td> + </Tr> + + <!---------- Polling -----------> + + <!---------- Memorized -----------> + <Tr> + <Td> <Font=+1><b> Memorized </b></Font></Td> + <Td> Hardware written at init</Td> + </Tr> + + <!---------- Change Event -----------> + + <!---------- Archive Event -----------> + + </Table> + </Td> + <Td ALIGN="left" VALIGN=top> + + + <Table Border=2 Cellpadding=3 CELLSPACING=0> + <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> + <Td COLSPAN=0> <Font Size=+1> <Center><b> + Attrribute Properties + </b></Font></Center></td> + </Tr> + <Tr><Td> <Font=+1><b> label </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> unit </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> standard unit </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> display unit </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> format </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> max_value </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> min_value </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> max_alarm </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> min_alarm </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> max_warning </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> min_warning </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> delta_time </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> delta_val </b></Font></Td> <Td> </Td></Tr> + <!--- Tr><Td> <Font=+1><b> description </b></Font></Td> <Td> If enabled, do not readback position, do not check errors in mov command</Td></Tr---> + </Table> + </Td> + </Table> + <Br> + <Br> + <Br> + <Br> + +<!--- /*PROTECTED REGION ID(./doc_html/AttrRtMode.html) ENABLED START*/ ---> + <!--- Add your own documentation, pictures, links,.... ---> + <ul> + + </ul> +<!--- /*PROTECTED REGION END*/ ---> + + <Br> + <Br> +</ul> +</FONT> +<Br> +<Br> + + +<!--- html Footer ---> +<Center> +<Font size=-1> +<br> +<br> +<TABLE BORDER="1" WIDTH="100%"> + <Tr> + <!--- Hosted by Sourceforge ---> + <Td Align="Center"> + <Font size=-1> + <b>TANGO</b> is an open source project hosted by :<br> + <A href="http://sourceforge.net" Target="new"> + <IMG title="Sourceforge logo" + alt="Sourceforge logo small" + src="http://www.esrf.fr/computing/cs/tango/sourceforge.gif" + border=0> </a> + </Font> + </Td> + <!--- 2 Sourceforge Repositories ---> + <Td Align="Center"> + <Font size=-1> + Core and Tools : + <a href="http://tango-cs.cvs.sourceforge.net/tango-cs/" Target=new> + CVS repository</a> on + <a href="https://sourceforge.net/projects/tango-cs" Target=new> + tango-cs project</a> + <br> + Device Servers : + <a href="http://tango-ds.cvs.sourceforge.net/tango-ds/" Target=new> + CVS repository</cmda> on + <a href="https://sourceforge.net/projects/tango-ds" Target=new> + tango-ds project</a> + </Font> + </Td> + </Tr> +</Table> +</Font> +</Center> +</body> +</html> + diff --git a/doc/AttrScanEndPosition.html b/doc/AttrScanEndPosition.html new file mode 100644 index 0000000000000000000000000000000000000000..ff40d104ae3e30ca2c8890bae7b8a9cb4fdae1ff --- /dev/null +++ b/doc/AttrScanEndPosition.html @@ -0,0 +1,267 @@ +<!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 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.elettra.trieste.it/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/elettra_logo.gif" BORDER=0 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.synchrotron-soleil.fr/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/soleil_logo.gif" BORDER=0 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.cells.es/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/alba.jpg" BORDER=0 Height="45"></A> + </TD> + <TD ALIGN="Right"> + <H2><FONT COLOR="#7F00FF"> + <Br><Center><A HREF="http://www.tango-controls.org/" TARGET="_top"> TANGO </a> + </Center></FONT> + </TD> + </TR> + <TR> + <TD ALIGN="left"> + <A HREF="http://www.desy.de/html/home/index_eng.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/desy.gif" BORDER=0 Height="44"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.maxlab.lu.se/maxlab/max4/index.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/maxlab.gif" BORDER=0 Height="40"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.frm2.tum.de/en/index.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/frm-2.jpg" BORDER=0 Height="45"></A> + </TD> + <TD> + <!-- Empty --> + </TD> + <TD ALIGN="Right"> + <H2><FONT COLOR="#7F00FF"> + <Center> Device Servers + </Center></FONT> + </TD> + </TR> +</TABLE> + +<HR WIDTH="100%"></H5> + + +<FONT SIZE="+3"> +<center> +<u> + PZ116E Tango Class <Br> +</u> +<FONT SIZE="+1"> + ( PI Piezo PZ116E controller device server ) +<Br> +<Br> +<TABLE BORDER="1" WIDTH="100%" CELLSPACING=0> + <TD ALIGN="center"> + <a href="index.html"> Description</a> + </Td> + <TD ALIGN="center"> + <a href="Properties.html"> Properties</a></li> + </Td> + <TD ALIGN="center"> + <a href="Commands.html"> Commands</a></li> + </Td> + <TD ALIGN="center"> + <a href="Attributes.html"> Attributes</a></li> + </Td> + <TD ALIGN="center"> + <a href="States.html"> States</a></li> + </Td> +</TABLE> +<Br> +<Br> +<Br> +<FONT SIZE="+2"><u> + ScanEndPosition Attribute +</u></Font> +</Center> + + + +<FONT SIZE="-1"> +<Br> +<Br> +<ul> + <Font SIZE="+0"> <b><u> Description :</u></b> </Font> + <ul> + + </ul> + <Br> + <Br> + + + + <Table Border=0 Cellpadding=0 CELLSPACING=10> + <TR> + <TD ALIGN="left" VALIGN=top> + + + <Table Border=2 Cellpadding=3 CELLSPACING=0> + <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> + <Td COLSPAN=0> <Font Size=+1> <Center><b> + Attribute Definition + </b></Font></Center></td> + </Tr> + <!---------- Attribute type -----------> + <Tr> + <Td> <Font=+1><b> Attribute Type </b></Font></Td> + <Td> Scalar </Td> + </Tr> + + <!---------- R/W type -----------> + <Tr> + <Td> <Font=+1><b> R/W Type </b></Font></Td> + <Td> READ_WRITE </Td> + </Tr> + + <!---------- Data type -----------> + <Tr> + <Td> <Font=+1><b> Data Type </b></Font></Td> + <Td> Tango::DEV_DOUBLE </Td> + </Tr> + + <!---------- Allowed State -----------> + + <!--- Read access ---> + <Tr> + <Td> <Font=+1><b> Read allowed for </b></Font></Td> + <Td> All states </Td> + </Tr> + <Tr> + <Td> <Font=+1><b> Write allowed for </b></Font></Td> + <Td> All states </Td> + </Tr> + + + <!---------- Display Level -----------> + <Tr> + <Td> <Font=+1><b> Display Level </b></Font></Td> + <Td> OPERATOR </Td> + </Tr> + + <!---------- Inheritance -----------> + <Tr> + <Td> <Font=+1><b> Inherited </b></Font></Td> + <Td> false </Td> + </Tr> + <Tr> + <Td> <Font=+1><b> Abstract </b></Font></Td> + <Td> false </Td> + </Tr> + + <!---------- Polling -----------> + + <!---------- Memorized -----------> + <Tr> + <Td> <Font=+1><b> Memorized </b></Font></Td> + <Td> Hardware written at init</Td> + </Tr> + + <!---------- Change Event -----------> + + <!---------- Archive Event -----------> + + </Table> + </Td> + <Td ALIGN="left" VALIGN=top> + + + <Table Border=2 Cellpadding=3 CELLSPACING=0> + <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> + <Td COLSPAN=0> <Font Size=+1> <Center><b> + Attrribute Properties + </b></Font></Center></td> + </Tr> + <Tr><Td> <Font=+1><b> label </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> unit </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> standard unit </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> display unit </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> format </b></Font></Td> <Td> %.3f</Td></Tr> + <Tr><Td> <Font=+1><b> max_value </b></Font></Td> <Td> 999</Td></Tr> + <Tr><Td> <Font=+1><b> min_value </b></Font></Td> <Td> -999</Td></Tr> + <Tr><Td> <Font=+1><b> max_alarm </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> min_alarm </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> max_warning </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> min_warning </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> delta_time </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> delta_val </b></Font></Td> <Td> </Td></Tr> + <!--- Tr><Td> <Font=+1><b> description </b></Font></Td> <Td> </Td></Tr---> + </Table> + </Td> + </Table> + <Br> + <Br> + <Br> + <Br> + +<!--- /*PROTECTED REGION ID(./doc_html/AttrScanEndPosition.html) ENABLED START*/ ---> + <!--- Add your own documentation, pictures, links,.... ---> + <ul> + + </ul> +<!--- /*PROTECTED REGION END*/ ---> + + <Br> + <Br> +</ul> +</FONT> +<Br> +<Br> + + +<!--- html Footer ---> +<Center> +<Font size=-1> +<br> +<br> +<TABLE BORDER="1" WIDTH="100%"> + <Tr> + <!--- Hosted by Sourceforge ---> + <Td Align="Center"> + <Font size=-1> + <b>TANGO</b> is an open source project hosted by :<br> + <A href="http://sourceforge.net" Target="new"> + <IMG title="Sourceforge logo" + alt="Sourceforge logo small" + src="http://www.esrf.fr/computing/cs/tango/sourceforge.gif" + border=0> </a> + </Font> + </Td> + <!--- 2 Sourceforge Repositories ---> + <Td Align="Center"> + <Font size=-1> + Core and Tools : + <a href="http://tango-cs.cvs.sourceforge.net/tango-cs/" Target=new> + CVS repository</a> on + <a href="https://sourceforge.net/projects/tango-cs" Target=new> + tango-cs project</a> + <br> + Device Servers : + <a href="http://tango-ds.cvs.sourceforge.net/tango-ds/" Target=new> + CVS repository</cmda> on + <a href="https://sourceforge.net/projects/tango-ds" Target=new> + tango-ds project</a> + </Font> + </Td> + </Tr> +</Table> +</Font> +</Center> +</body> +</html> + diff --git a/doc/AttrScanStartPosition.html b/doc/AttrScanStartPosition.html new file mode 100644 index 0000000000000000000000000000000000000000..469ae4e0895f2360f5345b089cdb2e119fd50c1a --- /dev/null +++ b/doc/AttrScanStartPosition.html @@ -0,0 +1,267 @@ +<!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 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.elettra.trieste.it/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/elettra_logo.gif" BORDER=0 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.synchrotron-soleil.fr/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/soleil_logo.gif" BORDER=0 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.cells.es/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/alba.jpg" BORDER=0 Height="45"></A> + </TD> + <TD ALIGN="Right"> + <H2><FONT COLOR="#7F00FF"> + <Br><Center><A HREF="http://www.tango-controls.org/" TARGET="_top"> TANGO </a> + </Center></FONT> + </TD> + </TR> + <TR> + <TD ALIGN="left"> + <A HREF="http://www.desy.de/html/home/index_eng.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/desy.gif" BORDER=0 Height="44"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.maxlab.lu.se/maxlab/max4/index.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/maxlab.gif" BORDER=0 Height="40"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.frm2.tum.de/en/index.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/frm-2.jpg" BORDER=0 Height="45"></A> + </TD> + <TD> + <!-- Empty --> + </TD> + <TD ALIGN="Right"> + <H2><FONT COLOR="#7F00FF"> + <Center> Device Servers + </Center></FONT> + </TD> + </TR> +</TABLE> + +<HR WIDTH="100%"></H5> + + +<FONT SIZE="+3"> +<center> +<u> + PZ116E Tango Class <Br> +</u> +<FONT SIZE="+1"> + ( PI Piezo PZ116E controller device server ) +<Br> +<Br> +<TABLE BORDER="1" WIDTH="100%" CELLSPACING=0> + <TD ALIGN="center"> + <a href="index.html"> Description</a> + </Td> + <TD ALIGN="center"> + <a href="Properties.html"> Properties</a></li> + </Td> + <TD ALIGN="center"> + <a href="Commands.html"> Commands</a></li> + </Td> + <TD ALIGN="center"> + <a href="Attributes.html"> Attributes</a></li> + </Td> + <TD ALIGN="center"> + <a href="States.html"> States</a></li> + </Td> +</TABLE> +<Br> +<Br> +<Br> +<FONT SIZE="+2"><u> + ScanStartPosition Attribute +</u></Font> +</Center> + + + +<FONT SIZE="-1"> +<Br> +<Br> +<ul> + <Font SIZE="+0"> <b><u> Description :</u></b> </Font> + <ul> + + </ul> + <Br> + <Br> + + + + <Table Border=0 Cellpadding=0 CELLSPACING=10> + <TR> + <TD ALIGN="left" VALIGN=top> + + + <Table Border=2 Cellpadding=3 CELLSPACING=0> + <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> + <Td COLSPAN=0> <Font Size=+1> <Center><b> + Attribute Definition + </b></Font></Center></td> + </Tr> + <!---------- Attribute type -----------> + <Tr> + <Td> <Font=+1><b> Attribute Type </b></Font></Td> + <Td> Scalar </Td> + </Tr> + + <!---------- R/W type -----------> + <Tr> + <Td> <Font=+1><b> R/W Type </b></Font></Td> + <Td> READ_WRITE </Td> + </Tr> + + <!---------- Data type -----------> + <Tr> + <Td> <Font=+1><b> Data Type </b></Font></Td> + <Td> Tango::DEV_DOUBLE </Td> + </Tr> + + <!---------- Allowed State -----------> + + <!--- Read access ---> + <Tr> + <Td> <Font=+1><b> Read allowed for </b></Font></Td> + <Td> All states </Td> + </Tr> + <Tr> + <Td> <Font=+1><b> Write allowed for </b></Font></Td> + <Td> All states </Td> + </Tr> + + + <!---------- Display Level -----------> + <Tr> + <Td> <Font=+1><b> Display Level </b></Font></Td> + <Td> OPERATOR </Td> + </Tr> + + <!---------- Inheritance -----------> + <Tr> + <Td> <Font=+1><b> Inherited </b></Font></Td> + <Td> false </Td> + </Tr> + <Tr> + <Td> <Font=+1><b> Abstract </b></Font></Td> + <Td> false </Td> + </Tr> + + <!---------- Polling -----------> + + <!---------- Memorized -----------> + <Tr> + <Td> <Font=+1><b> Memorized </b></Font></Td> + <Td> Hardware written at init</Td> + </Tr> + + <!---------- Change Event -----------> + + <!---------- Archive Event -----------> + + </Table> + </Td> + <Td ALIGN="left" VALIGN=top> + + + <Table Border=2 Cellpadding=3 CELLSPACING=0> + <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> + <Td COLSPAN=0> <Font Size=+1> <Center><b> + Attrribute Properties + </b></Font></Center></td> + </Tr> + <Tr><Td> <Font=+1><b> label </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> unit </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> standard unit </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> display unit </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> format </b></Font></Td> <Td> %.3f</Td></Tr> + <Tr><Td> <Font=+1><b> max_value </b></Font></Td> <Td> 999</Td></Tr> + <Tr><Td> <Font=+1><b> min_value </b></Font></Td> <Td> -999</Td></Tr> + <Tr><Td> <Font=+1><b> max_alarm </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> min_alarm </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> max_warning </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> min_warning </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> delta_time </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> delta_val </b></Font></Td> <Td> </Td></Tr> + <!--- Tr><Td> <Font=+1><b> description </b></Font></Td> <Td> </Td></Tr---> + </Table> + </Td> + </Table> + <Br> + <Br> + <Br> + <Br> + +<!--- /*PROTECTED REGION ID(./doc_html/AttrScanStartPosition.html) ENABLED START*/ ---> + <!--- Add your own documentation, pictures, links,.... ---> + <ul> + + </ul> +<!--- /*PROTECTED REGION END*/ ---> + + <Br> + <Br> +</ul> +</FONT> +<Br> +<Br> + + +<!--- html Footer ---> +<Center> +<Font size=-1> +<br> +<br> +<TABLE BORDER="1" WIDTH="100%"> + <Tr> + <!--- Hosted by Sourceforge ---> + <Td Align="Center"> + <Font size=-1> + <b>TANGO</b> is an open source project hosted by :<br> + <A href="http://sourceforge.net" Target="new"> + <IMG title="Sourceforge logo" + alt="Sourceforge logo small" + src="http://www.esrf.fr/computing/cs/tango/sourceforge.gif" + border=0> </a> + </Font> + </Td> + <!--- 2 Sourceforge Repositories ---> + <Td Align="Center"> + <Font size=-1> + Core and Tools : + <a href="http://tango-cs.cvs.sourceforge.net/tango-cs/" Target=new> + CVS repository</a> on + <a href="https://sourceforge.net/projects/tango-cs" Target=new> + tango-cs project</a> + <br> + Device Servers : + <a href="http://tango-ds.cvs.sourceforge.net/tango-ds/" Target=new> + CVS repository</cmda> on + <a href="https://sourceforge.net/projects/tango-ds" Target=new> + tango-ds project</a> + </Font> + </Td> + </Tr> +</Table> +</Font> +</Center> +</body> +</html> + diff --git a/doc/AttrScanStep.html b/doc/AttrScanStep.html new file mode 100644 index 0000000000000000000000000000000000000000..257a905e6dfa589eaa852d8fd0b44a0e11f16d43 --- /dev/null +++ b/doc/AttrScanStep.html @@ -0,0 +1,267 @@ +<!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 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.elettra.trieste.it/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/elettra_logo.gif" BORDER=0 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.synchrotron-soleil.fr/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/soleil_logo.gif" BORDER=0 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.cells.es/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/alba.jpg" BORDER=0 Height="45"></A> + </TD> + <TD ALIGN="Right"> + <H2><FONT COLOR="#7F00FF"> + <Br><Center><A HREF="http://www.tango-controls.org/" TARGET="_top"> TANGO </a> + </Center></FONT> + </TD> + </TR> + <TR> + <TD ALIGN="left"> + <A HREF="http://www.desy.de/html/home/index_eng.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/desy.gif" BORDER=0 Height="44"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.maxlab.lu.se/maxlab/max4/index.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/maxlab.gif" BORDER=0 Height="40"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.frm2.tum.de/en/index.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/frm-2.jpg" BORDER=0 Height="45"></A> + </TD> + <TD> + <!-- Empty --> + </TD> + <TD ALIGN="Right"> + <H2><FONT COLOR="#7F00FF"> + <Center> Device Servers + </Center></FONT> + </TD> + </TR> +</TABLE> + +<HR WIDTH="100%"></H5> + + +<FONT SIZE="+3"> +<center> +<u> + PZ116E Tango Class <Br> +</u> +<FONT SIZE="+1"> + ( PI Piezo PZ116E controller device server ) +<Br> +<Br> +<TABLE BORDER="1" WIDTH="100%" CELLSPACING=0> + <TD ALIGN="center"> + <a href="index.html"> Description</a> + </Td> + <TD ALIGN="center"> + <a href="Properties.html"> Properties</a></li> + </Td> + <TD ALIGN="center"> + <a href="Commands.html"> Commands</a></li> + </Td> + <TD ALIGN="center"> + <a href="Attributes.html"> Attributes</a></li> + </Td> + <TD ALIGN="center"> + <a href="States.html"> States</a></li> + </Td> +</TABLE> +<Br> +<Br> +<Br> +<FONT SIZE="+2"><u> + ScanStep Attribute +</u></Font> +</Center> + + + +<FONT SIZE="-1"> +<Br> +<Br> +<ul> + <Font SIZE="+0"> <b><u> Description :</u></b> </Font> + <ul> + + </ul> + <Br> + <Br> + + + + <Table Border=0 Cellpadding=0 CELLSPACING=10> + <TR> + <TD ALIGN="left" VALIGN=top> + + + <Table Border=2 Cellpadding=3 CELLSPACING=0> + <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> + <Td COLSPAN=0> <Font Size=+1> <Center><b> + Attribute Definition + </b></Font></Center></td> + </Tr> + <!---------- Attribute type -----------> + <Tr> + <Td> <Font=+1><b> Attribute Type </b></Font></Td> + <Td> Scalar </Td> + </Tr> + + <!---------- R/W type -----------> + <Tr> + <Td> <Font=+1><b> R/W Type </b></Font></Td> + <Td> READ_WRITE </Td> + </Tr> + + <!---------- Data type -----------> + <Tr> + <Td> <Font=+1><b> Data Type </b></Font></Td> + <Td> Tango::DEV_DOUBLE </Td> + </Tr> + + <!---------- Allowed State -----------> + + <!--- Read access ---> + <Tr> + <Td> <Font=+1><b> Read allowed for </b></Font></Td> + <Td> All states </Td> + </Tr> + <Tr> + <Td> <Font=+1><b> Write allowed for </b></Font></Td> + <Td> All states </Td> + </Tr> + + + <!---------- Display Level -----------> + <Tr> + <Td> <Font=+1><b> Display Level </b></Font></Td> + <Td> OPERATOR </Td> + </Tr> + + <!---------- Inheritance -----------> + <Tr> + <Td> <Font=+1><b> Inherited </b></Font></Td> + <Td> false </Td> + </Tr> + <Tr> + <Td> <Font=+1><b> Abstract </b></Font></Td> + <Td> false </Td> + </Tr> + + <!---------- Polling -----------> + + <!---------- Memorized -----------> + <Tr> + <Td> <Font=+1><b> Memorized </b></Font></Td> + <Td> Hardware written at init</Td> + </Tr> + + <!---------- Change Event -----------> + + <!---------- Archive Event -----------> + + </Table> + </Td> + <Td ALIGN="left" VALIGN=top> + + + <Table Border=2 Cellpadding=3 CELLSPACING=0> + <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> + <Td COLSPAN=0> <Font Size=+1> <Center><b> + Attrribute Properties + </b></Font></Center></td> + </Tr> + <Tr><Td> <Font=+1><b> label </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> unit </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> standard unit </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> display unit </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> format </b></Font></Td> <Td> %.3f</Td></Tr> + <Tr><Td> <Font=+1><b> max_value </b></Font></Td> <Td> 999</Td></Tr> + <Tr><Td> <Font=+1><b> min_value </b></Font></Td> <Td> -999</Td></Tr> + <Tr><Td> <Font=+1><b> max_alarm </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> min_alarm </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> max_warning </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> min_warning </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> delta_time </b></Font></Td> <Td> </Td></Tr> + <Tr><Td> <Font=+1><b> delta_val </b></Font></Td> <Td> </Td></Tr> + <!--- Tr><Td> <Font=+1><b> description </b></Font></Td> <Td> </Td></Tr---> + </Table> + </Td> + </Table> + <Br> + <Br> + <Br> + <Br> + +<!--- /*PROTECTED REGION ID(./doc_html/AttrScanStep.html) ENABLED START*/ ---> + <!--- Add your own documentation, pictures, links,.... ---> + <ul> + + </ul> +<!--- /*PROTECTED REGION END*/ ---> + + <Br> + <Br> +</ul> +</FONT> +<Br> +<Br> + + +<!--- html Footer ---> +<Center> +<Font size=-1> +<br> +<br> +<TABLE BORDER="1" WIDTH="100%"> + <Tr> + <!--- Hosted by Sourceforge ---> + <Td Align="Center"> + <Font size=-1> + <b>TANGO</b> is an open source project hosted by :<br> + <A href="http://sourceforge.net" Target="new"> + <IMG title="Sourceforge logo" + alt="Sourceforge logo small" + src="http://www.esrf.fr/computing/cs/tango/sourceforge.gif" + border=0> </a> + </Font> + </Td> + <!--- 2 Sourceforge Repositories ---> + <Td Align="Center"> + <Font size=-1> + Core and Tools : + <a href="http://tango-cs.cvs.sourceforge.net/tango-cs/" Target=new> + CVS repository</a> on + <a href="https://sourceforge.net/projects/tango-cs" Target=new> + tango-cs project</a> + <br> + Device Servers : + <a href="http://tango-ds.cvs.sourceforge.net/tango-ds/" Target=new> + CVS repository</cmda> on + <a href="https://sourceforge.net/projects/tango-ds" Target=new> + tango-ds project</a> + </Font> + </Td> + </Tr> +</Table> +</Font> +</Center> +</body> +</html> + diff --git a/doc/Attributes.html b/doc/Attributes.html new file mode 100644 index 0000000000000000000000000000000000000000..ce722598c2be520b1ff1bbb93962967929b5040f --- /dev/null +++ b/doc/Attributes.html @@ -0,0 +1,250 @@ +<!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 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.elettra.trieste.it/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/elettra_logo.gif" BORDER=0 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.synchrotron-soleil.fr/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/soleil_logo.gif" BORDER=0 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.cells.es/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/alba.jpg" BORDER=0 Height="45"></A> + </TD> + <TD ALIGN="Right"> + <H2><FONT COLOR="#7F00FF"> + <Br><Center><A HREF="http://www.tango-controls.org/" TARGET="_top"> TANGO </a> + </Center></FONT> + </TD> + </TR> + <TR> + <TD ALIGN="left"> + <A HREF="http://www.desy.de/html/home/index_eng.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/desy.gif" BORDER=0 Height="44"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.maxlab.lu.se/maxlab/max4/index.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/maxlab.gif" BORDER=0 Height="40"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.frm2.tum.de/en/index.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/frm-2.jpg" BORDER=0 Height="45"></A> + </TD> + <TD> + <!-- Empty --> + </TD> + <TD ALIGN="Right"> + <H2><FONT COLOR="#7F00FF"> + <Center> Device Servers + </Center></FONT> + </TD> + </TR> +</TABLE> + +<HR WIDTH="100%"></H5> + + + +<FONT SIZE="+3"> +<center> +<u> + PZ116E Tango Class <Br> +</u> +<FONT SIZE="+1"> + ( PI Piezo PZ116E controller device server ) +<Br> +<Br> +<TABLE BORDER="1" WIDTH="100%" CELLSPACING=0> + <TD ALIGN="center"> + <a href="index.html"> Description</a> + </Td> + <TD ALIGN="center"> + <a href="Properties.html"> Properties</a></li> + </Td> + <TD ALIGN="center"> + <a href="Commands.html"> Commands</a></li> + </Td> + <TD ALIGN="center"> + <a href="Attributes.html"> Attributes</a></li> + </Td> + <TD ALIGN="center"> + <a href="States.html"> States</a></li> + </Td> +</TABLE> +<Br> +<Br> +<Br> +<FONT SIZE="+2"><u> + Attributes +</u></Font> +</Center> + + + +<FONT SIZE="-1"> +<Br> +<Br> +<ul> + + <Table Border=2 Cellpadding=3 CELLSPACING=0> + <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> + <Td COLSPAN=8> <Font Size=+1> <Center><b> + 6 Device Attributes + </b></Font></Center></td> + <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> + <Td><Center><b> + Name + </b></Center></td> + <Td><Center><b> + Inherited + </b></Center></td> + <Td><Center><b> + Abstract + </b></Center></td> + <Td><Center><b> + Attr. type + </b></Center></td> + <Td><Center><b> + R/W type + </b></Center></td> + <Td><Center><b> + Data type + </b></Center></td> + <Td><Center><b> + Level + </b></Center></td> + <Td><Center><b> + Description + </b></Center></td> + </Tr> + <Tr> + <Td> <a href=AttrRtMode.html> RtMode </a></Td> + <Td> false </Td> + <Td> false </Td> + <Td> Scalar </Td> + <Td> READ_WRITE </Td> + <Td> Tango::DEV_BOOLEAN </Td> + <Td> OPERATOR </Td> + <Td> If enabled, do not readback position, do not check errors in mov command </Td> + </Tr> + <Tr> + <Td> <a href=AttrPosition.html> Position </a></Td> + <Td> false </Td> + <Td> false </Td> + <Td> Scalar </Td> + <Td> READ_WRITE </Td> + <Td> Tango::DEV_DOUBLE </Td> + <Td> OPERATOR </Td> + <Td> </Td> + </Tr> + <Tr> + <Td> <a href=AttrScanStartPosition.html> ScanStartPosition </a></Td> + <Td> false </Td> + <Td> false </Td> + <Td> Scalar </Td> + <Td> READ_WRITE </Td> + <Td> Tango::DEV_DOUBLE </Td> + <Td> OPERATOR </Td> + <Td> </Td> + </Tr> + <Tr> + <Td> <a href=AttrScanStep.html> ScanStep </a></Td> + <Td> false </Td> + <Td> false </Td> + <Td> Scalar </Td> + <Td> READ_WRITE </Td> + <Td> Tango::DEV_DOUBLE </Td> + <Td> OPERATOR </Td> + <Td> </Td> + </Tr> + <Tr> + <Td> <a href=AttrScanEndPosition.html> ScanEndPosition </a></Td> + <Td> false </Td> + <Td> false </Td> + <Td> Scalar </Td> + <Td> READ_WRITE </Td> + <Td> Tango::DEV_DOUBLE </Td> + <Td> OPERATOR </Td> + <Td> </Td> + </Tr> + <Tr> + <Td> <a href=AttrIdentityNumber.html> IdentityNumber </a></Td> + <Td> false </Td> + <Td> false </Td> + <Td> Scalar </Td> + <Td> READ </Td> + <Td> Tango::DEV_STRING </Td> + <Td> OPERATOR </Td> + <Td> </Td> + </Tr> + </table> + <Br> + <Br> + +<!--- /*PROTECTED REGION ID(./doc_html/Attributes.html) ENABLED START*/ ---> + <!--- Add your own documentation, pictures, links,.... ---> + <ul> + + </ul> +<!--- /*PROTECTED REGION END*/ ---> + + <Br> + <Br> +</ul> +</FONT> + + +<!--- html Footer ---> +<Center> +<Font size=-1> +<br> +<br> +<TABLE BORDER="1" WIDTH="100%"> + <Tr> + <!--- Hosted by Sourceforge ---> + <Td Align="Center"> + <Font size=-1> + <b>TANGO</b> is an open source project hosted by :<br> + <A href="http://sourceforge.net" Target="new"> + <IMG title="Sourceforge logo" + alt="Sourceforge logo small" + src="http://www.esrf.fr/computing/cs/tango/sourceforge.gif" + border=0> </a> + </Font> + </Td> + <!--- 2 Sourceforge Repositories ---> + <Td Align="Center"> + <Font size=-1> + Core and Tools : + <a href="http://tango-cs.cvs.sourceforge.net/tango-cs/" Target=new> + CVS repository</a> on + <a href="https://sourceforge.net/projects/tango-cs" Target=new> + tango-cs project</a> + <br> + Device Servers : + <a href="http://tango-ds.cvs.sourceforge.net/tango-ds/" Target=new> + CVS repository</cmda> on + <a href="https://sourceforge.net/projects/tango-ds" Target=new> + tango-ds project</a> + </Font> + </Td> + </Tr> +</Table> +</Font> +</Center> +</body> +</html> + diff --git a/doc/CmdBackward.html b/doc/CmdBackward.html new file mode 100644 index 0000000000000000000000000000000000000000..6d66cb0907091e57f1eeda480b1f122d2a7cfc39 --- /dev/null +++ b/doc/CmdBackward.html @@ -0,0 +1,212 @@ +<!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 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.elettra.trieste.it/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/elettra_logo.gif" BORDER=0 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.synchrotron-soleil.fr/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/soleil_logo.gif" BORDER=0 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.cells.es/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/alba.jpg" BORDER=0 Height="45"></A> + </TD> + <TD ALIGN="Right"> + <H2><FONT COLOR="#7F00FF"> + <Br><Center><A HREF="http://www.tango-controls.org/" TARGET="_top"> TANGO </a> + </Center></FONT> + </TD> + </TR> + <TR> + <TD ALIGN="left"> + <A HREF="http://www.desy.de/html/home/index_eng.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/desy.gif" BORDER=0 Height="44"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.maxlab.lu.se/maxlab/max4/index.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/maxlab.gif" BORDER=0 Height="40"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.frm2.tum.de/en/index.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/frm-2.jpg" BORDER=0 Height="45"></A> + </TD> + <TD> + <!-- Empty --> + </TD> + <TD ALIGN="Right"> + <H2><FONT COLOR="#7F00FF"> + <Center> Device Servers + </Center></FONT> + </TD> + </TR> +</TABLE> + +<HR WIDTH="100%"></H5> + + +<FONT SIZE="+3"> +<center> +<u> + PZ116E Tango Class <Br> +</u> +<FONT SIZE="+1"> + ( PI Piezo PZ116E controller device server ) +<Br> +<Br> +<TABLE BORDER="1" WIDTH="100%" CELLSPACING=0> + <TD ALIGN="center"> + <a href="index.html"> Description</a> + </Td> + <TD ALIGN="center"> + <a href="Properties.html"> Properties</a></li> + </Td> + <TD ALIGN="center"> + <a href="Commands.html"> Commands</a></li> + </Td> + <TD ALIGN="center"> + <a href="Attributes.html"> Attributes</a></li> + </Td> + <TD ALIGN="center"> + <a href="States.html"> States</a></li> + </Td> +</TABLE> +<Br> +<Br> +<Br> +<FONT SIZE="+2"><u> + Backward Command +</u></Font> +</Center> + + + +<FONT SIZE="-1"> +<Br> +<Br> +<ul> + <Font SIZE="+0"> <b><u> Description :</u></b> </Font> + <ul> + Move backward + </ul> + <Br> + <Br> + + <Table Border=2 Cellpadding=3 CELLSPACING=0> + <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> + <Td COLSPAN=0> <Font Size=+1> <Center><b> + Backward Command + </b></Font></Center></td> + </Tr> + <!---------- Input Argument -----------> + <Tr> + <Td> <Font=+1><b> Input Argument </Font></Td> + <Td> Tango::DEV_DOUBLE + (...) + + </Td> + </Tr> + + <!---------- Output Argument -----------> + <Tr> + <Td> <Font=+1><b> Output Argument </Font></Td> + <Td> Tango::DEV_VOID + (...) + + </Td> + </Tr> + + <!---------- Allowed State -----------> + + + <!---------- Display Level -----------> + <Tr> + <Td> <Font=+1><b> Display Level </Font></Td> + <Td> OPERATOR </Td> + </Tr> + + <!---------- Inheritance -----------> + <Tr> + <Td> <Font=+1><b> Inherited </Font></Td> + <Td> false </Td> + </Tr> + <Tr> + <Td> <Font=+1><b> Abstract </Font></Td> + <Td> false </Td> + </Tr> + + + </Table> + <Br> + <Br> + <Br> + <Br> + +<!--- /*PROTECTED REGION ID(./doc_html/CmdBackward.html) ENABLED START*/ ---> + <!--- Add your own documentation, pictures, links,.... ---> + <ul> + + </ul> +<!--- /*PROTECTED REGION END*/ ---> + + <Br> + <Br> +</ul> +</FONT> +<Br> +<Br> + + +<!--- html Footer ---> +<Center> +<Font size=-1> +<br> +<br> +<TABLE BORDER="1" WIDTH="100%"> + <Tr> + <!--- Hosted by Sourceforge ---> + <Td Align="Center"> + <Font size=-1> + <b>TANGO</b> is an open source project hosted by :<br> + <A href="http://sourceforge.net" Target="new"> + <IMG title="Sourceforge logo" + alt="Sourceforge logo small" + src="http://www.esrf.fr/computing/cs/tango/sourceforge.gif" + border=0> </a> + </Font> + </Td> + <!--- 2 Sourceforge Repositories ---> + <Td Align="Center"> + <Font size=-1> + Core and Tools : + <a href="http://tango-cs.cvs.sourceforge.net/tango-cs/" Target=new> + CVS repository</a> on + <a href="https://sourceforge.net/projects/tango-cs" Target=new> + tango-cs project</a> + <br> + Device Servers : + <a href="http://tango-ds.cvs.sourceforge.net/tango-ds/" Target=new> + CVS repository</cmda> on + <a href="https://sourceforge.net/projects/tango-ds" Target=new> + tango-ds project</a> + </Font> + </Td> + </Tr> +</Table> +</Font> +</Center> +</body> +</html> + diff --git a/doc/CmdEndScan.html b/doc/CmdEndScan.html new file mode 100644 index 0000000000000000000000000000000000000000..03fe541ffcd9bedf6b66a73f8a00ea809d88a046 --- /dev/null +++ b/doc/CmdEndScan.html @@ -0,0 +1,212 @@ +<!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 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.elettra.trieste.it/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/elettra_logo.gif" BORDER=0 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.synchrotron-soleil.fr/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/soleil_logo.gif" BORDER=0 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.cells.es/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/alba.jpg" BORDER=0 Height="45"></A> + </TD> + <TD ALIGN="Right"> + <H2><FONT COLOR="#7F00FF"> + <Br><Center><A HREF="http://www.tango-controls.org/" TARGET="_top"> TANGO </a> + </Center></FONT> + </TD> + </TR> + <TR> + <TD ALIGN="left"> + <A HREF="http://www.desy.de/html/home/index_eng.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/desy.gif" BORDER=0 Height="44"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.maxlab.lu.se/maxlab/max4/index.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/maxlab.gif" BORDER=0 Height="40"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.frm2.tum.de/en/index.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/frm-2.jpg" BORDER=0 Height="45"></A> + </TD> + <TD> + <!-- Empty --> + </TD> + <TD ALIGN="Right"> + <H2><FONT COLOR="#7F00FF"> + <Center> Device Servers + </Center></FONT> + </TD> + </TR> +</TABLE> + +<HR WIDTH="100%"></H5> + + +<FONT SIZE="+3"> +<center> +<u> + PZ116E Tango Class <Br> +</u> +<FONT SIZE="+1"> + ( PI Piezo PZ116E controller device server ) +<Br> +<Br> +<TABLE BORDER="1" WIDTH="100%" CELLSPACING=0> + <TD ALIGN="center"> + <a href="index.html"> Description</a> + </Td> + <TD ALIGN="center"> + <a href="Properties.html"> Properties</a></li> + </Td> + <TD ALIGN="center"> + <a href="Commands.html"> Commands</a></li> + </Td> + <TD ALIGN="center"> + <a href="Attributes.html"> Attributes</a></li> + </Td> + <TD ALIGN="center"> + <a href="States.html"> States</a></li> + </Td> +</TABLE> +<Br> +<Br> +<Br> +<FONT SIZE="+2"><u> + EndScan Command +</u></Font> +</Center> + + + +<FONT SIZE="-1"> +<Br> +<Br> +<ul> + <Font SIZE="+0"> <b><u> Description :</u></b> </Font> + <ul> + + </ul> + <Br> + <Br> + + <Table Border=2 Cellpadding=3 CELLSPACING=0> + <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> + <Td COLSPAN=0> <Font Size=+1> <Center><b> + EndScan Command + </b></Font></Center></td> + </Tr> + <!---------- Input Argument -----------> + <Tr> + <Td> <Font=+1><b> Input Argument </Font></Td> + <Td> Tango::DEV_VOID + (...) + + </Td> + </Tr> + + <!---------- Output Argument -----------> + <Tr> + <Td> <Font=+1><b> Output Argument </Font></Td> + <Td> Tango::DEV_VOID + (...) + + </Td> + </Tr> + + <!---------- Allowed State -----------> + + + <!---------- Display Level -----------> + <Tr> + <Td> <Font=+1><b> Display Level </Font></Td> + <Td> OPERATOR </Td> + </Tr> + + <!---------- Inheritance -----------> + <Tr> + <Td> <Font=+1><b> Inherited </Font></Td> + <Td> false </Td> + </Tr> + <Tr> + <Td> <Font=+1><b> Abstract </Font></Td> + <Td> false </Td> + </Tr> + + + </Table> + <Br> + <Br> + <Br> + <Br> + +<!--- /*PROTECTED REGION ID(./doc_html/CmdEndScan.html) ENABLED START*/ ---> + <!--- Add your own documentation, pictures, links,.... ---> + <ul> + + </ul> +<!--- /*PROTECTED REGION END*/ ---> + + <Br> + <Br> +</ul> +</FONT> +<Br> +<Br> + + +<!--- html Footer ---> +<Center> +<Font size=-1> +<br> +<br> +<TABLE BORDER="1" WIDTH="100%"> + <Tr> + <!--- Hosted by Sourceforge ---> + <Td Align="Center"> + <Font size=-1> + <b>TANGO</b> is an open source project hosted by :<br> + <A href="http://sourceforge.net" Target="new"> + <IMG title="Sourceforge logo" + alt="Sourceforge logo small" + src="http://www.esrf.fr/computing/cs/tango/sourceforge.gif" + border=0> </a> + </Font> + </Td> + <!--- 2 Sourceforge Repositories ---> + <Td Align="Center"> + <Font size=-1> + Core and Tools : + <a href="http://tango-cs.cvs.sourceforge.net/tango-cs/" Target=new> + CVS repository</a> on + <a href="https://sourceforge.net/projects/tango-cs" Target=new> + tango-cs project</a> + <br> + Device Servers : + <a href="http://tango-ds.cvs.sourceforge.net/tango-ds/" Target=new> + CVS repository</cmda> on + <a href="https://sourceforge.net/projects/tango-ds" Target=new> + tango-ds project</a> + </Font> + </Td> + </Tr> +</Table> +</Font> +</Center> +</body> +</html> + diff --git a/doc/CmdForward.html b/doc/CmdForward.html new file mode 100644 index 0000000000000000000000000000000000000000..e9f72cd2f0a5ad3c22a8e036299bd068b0b7ffe9 --- /dev/null +++ b/doc/CmdForward.html @@ -0,0 +1,212 @@ +<!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 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.elettra.trieste.it/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/elettra_logo.gif" BORDER=0 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.synchrotron-soleil.fr/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/soleil_logo.gif" BORDER=0 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.cells.es/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/alba.jpg" BORDER=0 Height="45"></A> + </TD> + <TD ALIGN="Right"> + <H2><FONT COLOR="#7F00FF"> + <Br><Center><A HREF="http://www.tango-controls.org/" TARGET="_top"> TANGO </a> + </Center></FONT> + </TD> + </TR> + <TR> + <TD ALIGN="left"> + <A HREF="http://www.desy.de/html/home/index_eng.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/desy.gif" BORDER=0 Height="44"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.maxlab.lu.se/maxlab/max4/index.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/maxlab.gif" BORDER=0 Height="40"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.frm2.tum.de/en/index.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/frm-2.jpg" BORDER=0 Height="45"></A> + </TD> + <TD> + <!-- Empty --> + </TD> + <TD ALIGN="Right"> + <H2><FONT COLOR="#7F00FF"> + <Center> Device Servers + </Center></FONT> + </TD> + </TR> +</TABLE> + +<HR WIDTH="100%"></H5> + + +<FONT SIZE="+3"> +<center> +<u> + PZ116E Tango Class <Br> +</u> +<FONT SIZE="+1"> + ( PI Piezo PZ116E controller device server ) +<Br> +<Br> +<TABLE BORDER="1" WIDTH="100%" CELLSPACING=0> + <TD ALIGN="center"> + <a href="index.html"> Description</a> + </Td> + <TD ALIGN="center"> + <a href="Properties.html"> Properties</a></li> + </Td> + <TD ALIGN="center"> + <a href="Commands.html"> Commands</a></li> + </Td> + <TD ALIGN="center"> + <a href="Attributes.html"> Attributes</a></li> + </Td> + <TD ALIGN="center"> + <a href="States.html"> States</a></li> + </Td> +</TABLE> +<Br> +<Br> +<Br> +<FONT SIZE="+2"><u> + Forward Command +</u></Font> +</Center> + + + +<FONT SIZE="-1"> +<Br> +<Br> +<ul> + <Font SIZE="+0"> <b><u> Description :</u></b> </Font> + <ul> + Move forward + </ul> + <Br> + <Br> + + <Table Border=2 Cellpadding=3 CELLSPACING=0> + <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> + <Td COLSPAN=0> <Font Size=+1> <Center><b> + Forward Command + </b></Font></Center></td> + </Tr> + <!---------- Input Argument -----------> + <Tr> + <Td> <Font=+1><b> Input Argument </Font></Td> + <Td> Tango::DEV_DOUBLE + (...) + + </Td> + </Tr> + + <!---------- Output Argument -----------> + <Tr> + <Td> <Font=+1><b> Output Argument </Font></Td> + <Td> Tango::DEV_VOID + (...) + + </Td> + </Tr> + + <!---------- Allowed State -----------> + + + <!---------- Display Level -----------> + <Tr> + <Td> <Font=+1><b> Display Level </Font></Td> + <Td> OPERATOR </Td> + </Tr> + + <!---------- Inheritance -----------> + <Tr> + <Td> <Font=+1><b> Inherited </Font></Td> + <Td> false </Td> + </Tr> + <Tr> + <Td> <Font=+1><b> Abstract </Font></Td> + <Td> false </Td> + </Tr> + + + </Table> + <Br> + <Br> + <Br> + <Br> + +<!--- /*PROTECTED REGION ID(./doc_html/CmdForward.html) ENABLED START*/ ---> + <!--- Add your own documentation, pictures, links,.... ---> + <ul> + + </ul> +<!--- /*PROTECTED REGION END*/ ---> + + <Br> + <Br> +</ul> +</FONT> +<Br> +<Br> + + +<!--- html Footer ---> +<Center> +<Font size=-1> +<br> +<br> +<TABLE BORDER="1" WIDTH="100%"> + <Tr> + <!--- Hosted by Sourceforge ---> + <Td Align="Center"> + <Font size=-1> + <b>TANGO</b> is an open source project hosted by :<br> + <A href="http://sourceforge.net" Target="new"> + <IMG title="Sourceforge logo" + alt="Sourceforge logo small" + src="http://www.esrf.fr/computing/cs/tango/sourceforge.gif" + border=0> </a> + </Font> + </Td> + <!--- 2 Sourceforge Repositories ---> + <Td Align="Center"> + <Font size=-1> + Core and Tools : + <a href="http://tango-cs.cvs.sourceforge.net/tango-cs/" Target=new> + CVS repository</a> on + <a href="https://sourceforge.net/projects/tango-cs" Target=new> + tango-cs project</a> + <br> + Device Servers : + <a href="http://tango-ds.cvs.sourceforge.net/tango-ds/" Target=new> + CVS repository</cmda> on + <a href="https://sourceforge.net/projects/tango-ds" Target=new> + tango-ds project</a> + </Font> + </Td> + </Tr> +</Table> +</Font> +</Center> +</body> +</html> + diff --git a/doc/CmdReset.html b/doc/CmdReset.html new file mode 100644 index 0000000000000000000000000000000000000000..785641de00e879025e148994d8812435ec91b6c4 --- /dev/null +++ b/doc/CmdReset.html @@ -0,0 +1,212 @@ +<!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 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.elettra.trieste.it/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/elettra_logo.gif" BORDER=0 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.synchrotron-soleil.fr/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/soleil_logo.gif" BORDER=0 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.cells.es/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/alba.jpg" BORDER=0 Height="45"></A> + </TD> + <TD ALIGN="Right"> + <H2><FONT COLOR="#7F00FF"> + <Br><Center><A HREF="http://www.tango-controls.org/" TARGET="_top"> TANGO </a> + </Center></FONT> + </TD> + </TR> + <TR> + <TD ALIGN="left"> + <A HREF="http://www.desy.de/html/home/index_eng.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/desy.gif" BORDER=0 Height="44"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.maxlab.lu.se/maxlab/max4/index.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/maxlab.gif" BORDER=0 Height="40"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.frm2.tum.de/en/index.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/frm-2.jpg" BORDER=0 Height="45"></A> + </TD> + <TD> + <!-- Empty --> + </TD> + <TD ALIGN="Right"> + <H2><FONT COLOR="#7F00FF"> + <Center> Device Servers + </Center></FONT> + </TD> + </TR> +</TABLE> + +<HR WIDTH="100%"></H5> + + +<FONT SIZE="+3"> +<center> +<u> + PZ116E Tango Class <Br> +</u> +<FONT SIZE="+1"> + ( PI Piezo PZ116E controller device server ) +<Br> +<Br> +<TABLE BORDER="1" WIDTH="100%" CELLSPACING=0> + <TD ALIGN="center"> + <a href="index.html"> Description</a> + </Td> + <TD ALIGN="center"> + <a href="Properties.html"> Properties</a></li> + </Td> + <TD ALIGN="center"> + <a href="Commands.html"> Commands</a></li> + </Td> + <TD ALIGN="center"> + <a href="Attributes.html"> Attributes</a></li> + </Td> + <TD ALIGN="center"> + <a href="States.html"> States</a></li> + </Td> +</TABLE> +<Br> +<Br> +<Br> +<FONT SIZE="+2"><u> + Reset Command +</u></Font> +</Center> + + + +<FONT SIZE="-1"> +<Br> +<Br> +<ul> + <Font SIZE="+0"> <b><u> Description :</u></b> </Font> + <ul> + Reset controller + </ul> + <Br> + <Br> + + <Table Border=2 Cellpadding=3 CELLSPACING=0> + <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> + <Td COLSPAN=0> <Font Size=+1> <Center><b> + Reset Command + </b></Font></Center></td> + </Tr> + <!---------- Input Argument -----------> + <Tr> + <Td> <Font=+1><b> Input Argument </Font></Td> + <Td> Tango::DEV_VOID + (...) + + </Td> + </Tr> + + <!---------- Output Argument -----------> + <Tr> + <Td> <Font=+1><b> Output Argument </Font></Td> + <Td> Tango::DEV_VOID + (...) + + </Td> + </Tr> + + <!---------- Allowed State -----------> + + + <!---------- Display Level -----------> + <Tr> + <Td> <Font=+1><b> Display Level </Font></Td> + <Td> OPERATOR </Td> + </Tr> + + <!---------- Inheritance -----------> + <Tr> + <Td> <Font=+1><b> Inherited </Font></Td> + <Td> false </Td> + </Tr> + <Tr> + <Td> <Font=+1><b> Abstract </Font></Td> + <Td> false </Td> + </Tr> + + + </Table> + <Br> + <Br> + <Br> + <Br> + +<!--- /*PROTECTED REGION ID(./doc_html/CmdReset.html) ENABLED START*/ ---> + <!--- Add your own documentation, pictures, links,.... ---> + <ul> + + </ul> +<!--- /*PROTECTED REGION END*/ ---> + + <Br> + <Br> +</ul> +</FONT> +<Br> +<Br> + + +<!--- html Footer ---> +<Center> +<Font size=-1> +<br> +<br> +<TABLE BORDER="1" WIDTH="100%"> + <Tr> + <!--- Hosted by Sourceforge ---> + <Td Align="Center"> + <Font size=-1> + <b>TANGO</b> is an open source project hosted by :<br> + <A href="http://sourceforge.net" Target="new"> + <IMG title="Sourceforge logo" + alt="Sourceforge logo small" + src="http://www.esrf.fr/computing/cs/tango/sourceforge.gif" + border=0> </a> + </Font> + </Td> + <!--- 2 Sourceforge Repositories ---> + <Td Align="Center"> + <Font size=-1> + Core and Tools : + <a href="http://tango-cs.cvs.sourceforge.net/tango-cs/" Target=new> + CVS repository</a> on + <a href="https://sourceforge.net/projects/tango-cs" Target=new> + tango-cs project</a> + <br> + Device Servers : + <a href="http://tango-ds.cvs.sourceforge.net/tango-ds/" Target=new> + CVS repository</cmda> on + <a href="https://sourceforge.net/projects/tango-ds" Target=new> + tango-ds project</a> + </Font> + </Td> + </Tr> +</Table> +</Font> +</Center> +</body> +</html> + diff --git a/doc/CmdStartScan.html b/doc/CmdStartScan.html new file mode 100644 index 0000000000000000000000000000000000000000..6a5b9035f4a4e0374be1db39c0ca14cd22959aa8 --- /dev/null +++ b/doc/CmdStartScan.html @@ -0,0 +1,212 @@ +<!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 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.elettra.trieste.it/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/elettra_logo.gif" BORDER=0 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.synchrotron-soleil.fr/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/soleil_logo.gif" BORDER=0 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.cells.es/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/alba.jpg" BORDER=0 Height="45"></A> + </TD> + <TD ALIGN="Right"> + <H2><FONT COLOR="#7F00FF"> + <Br><Center><A HREF="http://www.tango-controls.org/" TARGET="_top"> TANGO </a> + </Center></FONT> + </TD> + </TR> + <TR> + <TD ALIGN="left"> + <A HREF="http://www.desy.de/html/home/index_eng.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/desy.gif" BORDER=0 Height="44"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.maxlab.lu.se/maxlab/max4/index.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/maxlab.gif" BORDER=0 Height="40"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.frm2.tum.de/en/index.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/frm-2.jpg" BORDER=0 Height="45"></A> + </TD> + <TD> + <!-- Empty --> + </TD> + <TD ALIGN="Right"> + <H2><FONT COLOR="#7F00FF"> + <Center> Device Servers + </Center></FONT> + </TD> + </TR> +</TABLE> + +<HR WIDTH="100%"></H5> + + +<FONT SIZE="+3"> +<center> +<u> + PZ116E Tango Class <Br> +</u> +<FONT SIZE="+1"> + ( PI Piezo PZ116E controller device server ) +<Br> +<Br> +<TABLE BORDER="1" WIDTH="100%" CELLSPACING=0> + <TD ALIGN="center"> + <a href="index.html"> Description</a> + </Td> + <TD ALIGN="center"> + <a href="Properties.html"> Properties</a></li> + </Td> + <TD ALIGN="center"> + <a href="Commands.html"> Commands</a></li> + </Td> + <TD ALIGN="center"> + <a href="Attributes.html"> Attributes</a></li> + </Td> + <TD ALIGN="center"> + <a href="States.html"> States</a></li> + </Td> +</TABLE> +<Br> +<Br> +<Br> +<FONT SIZE="+2"><u> + StartScan Command +</u></Font> +</Center> + + + +<FONT SIZE="-1"> +<Br> +<Br> +<ul> + <Font SIZE="+0"> <b><u> Description :</u></b> </Font> + <ul> + + </ul> + <Br> + <Br> + + <Table Border=2 Cellpadding=3 CELLSPACING=0> + <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> + <Td COLSPAN=0> <Font Size=+1> <Center><b> + StartScan Command + </b></Font></Center></td> + </Tr> + <!---------- Input Argument -----------> + <Tr> + <Td> <Font=+1><b> Input Argument </Font></Td> + <Td> Tango::DEV_VOID + (...) + + </Td> + </Tr> + + <!---------- Output Argument -----------> + <Tr> + <Td> <Font=+1><b> Output Argument </Font></Td> + <Td> Tango::DEV_VOID + (...) + + </Td> + </Tr> + + <!---------- Allowed State -----------> + + + <!---------- Display Level -----------> + <Tr> + <Td> <Font=+1><b> Display Level </Font></Td> + <Td> OPERATOR </Td> + </Tr> + + <!---------- Inheritance -----------> + <Tr> + <Td> <Font=+1><b> Inherited </Font></Td> + <Td> false </Td> + </Tr> + <Tr> + <Td> <Font=+1><b> Abstract </Font></Td> + <Td> false </Td> + </Tr> + + + </Table> + <Br> + <Br> + <Br> + <Br> + +<!--- /*PROTECTED REGION ID(./doc_html/CmdStartScan.html) ENABLED START*/ ---> + <!--- Add your own documentation, pictures, links,.... ---> + <ul> + + </ul> +<!--- /*PROTECTED REGION END*/ ---> + + <Br> + <Br> +</ul> +</FONT> +<Br> +<Br> + + +<!--- html Footer ---> +<Center> +<Font size=-1> +<br> +<br> +<TABLE BORDER="1" WIDTH="100%"> + <Tr> + <!--- Hosted by Sourceforge ---> + <Td Align="Center"> + <Font size=-1> + <b>TANGO</b> is an open source project hosted by :<br> + <A href="http://sourceforge.net" Target="new"> + <IMG title="Sourceforge logo" + alt="Sourceforge logo small" + src="http://www.esrf.fr/computing/cs/tango/sourceforge.gif" + border=0> </a> + </Font> + </Td> + <!--- 2 Sourceforge Repositories ---> + <Td Align="Center"> + <Font size=-1> + Core and Tools : + <a href="http://tango-cs.cvs.sourceforge.net/tango-cs/" Target=new> + CVS repository</a> on + <a href="https://sourceforge.net/projects/tango-cs" Target=new> + tango-cs project</a> + <br> + Device Servers : + <a href="http://tango-ds.cvs.sourceforge.net/tango-ds/" Target=new> + CVS repository</cmda> on + <a href="https://sourceforge.net/projects/tango-ds" Target=new> + tango-ds project</a> + </Font> + </Td> + </Tr> +</Table> +</Font> +</Center> +</body> +</html> + diff --git a/doc/CmdState.html b/doc/CmdState.html new file mode 100644 index 0000000000000000000000000000000000000000..69b872425726d7ba89e42acb4e0952d5f4c328cf --- /dev/null +++ b/doc/CmdState.html @@ -0,0 +1,212 @@ +<!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 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.elettra.trieste.it/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/elettra_logo.gif" BORDER=0 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.synchrotron-soleil.fr/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/soleil_logo.gif" BORDER=0 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.cells.es/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/alba.jpg" BORDER=0 Height="45"></A> + </TD> + <TD ALIGN="Right"> + <H2><FONT COLOR="#7F00FF"> + <Br><Center><A HREF="http://www.tango-controls.org/" TARGET="_top"> TANGO </a> + </Center></FONT> + </TD> + </TR> + <TR> + <TD ALIGN="left"> + <A HREF="http://www.desy.de/html/home/index_eng.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/desy.gif" BORDER=0 Height="44"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.maxlab.lu.se/maxlab/max4/index.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/maxlab.gif" BORDER=0 Height="40"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.frm2.tum.de/en/index.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/frm-2.jpg" BORDER=0 Height="45"></A> + </TD> + <TD> + <!-- Empty --> + </TD> + <TD ALIGN="Right"> + <H2><FONT COLOR="#7F00FF"> + <Center> Device Servers + </Center></FONT> + </TD> + </TR> +</TABLE> + +<HR WIDTH="100%"></H5> + + +<FONT SIZE="+3"> +<center> +<u> + PZ116E Tango Class <Br> +</u> +<FONT SIZE="+1"> + ( PI Piezo PZ116E controller device server ) +<Br> +<Br> +<TABLE BORDER="1" WIDTH="100%" CELLSPACING=0> + <TD ALIGN="center"> + <a href="index.html"> Description</a> + </Td> + <TD ALIGN="center"> + <a href="Properties.html"> Properties</a></li> + </Td> + <TD ALIGN="center"> + <a href="Commands.html"> Commands</a></li> + </Td> + <TD ALIGN="center"> + <a href="Attributes.html"> Attributes</a></li> + </Td> + <TD ALIGN="center"> + <a href="States.html"> States</a></li> + </Td> +</TABLE> +<Br> +<Br> +<Br> +<FONT SIZE="+2"><u> + State Command +</u></Font> +</Center> + + + +<FONT SIZE="-1"> +<Br> +<Br> +<ul> + <Font SIZE="+0"> <b><u> Description :</u></b> </Font> + <ul> + This command gets the device state (stored in its device_state data member) and returns it to the caller. + </ul> + <Br> + <Br> + + <Table Border=2 Cellpadding=3 CELLSPACING=0> + <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> + <Td COLSPAN=0> <Font Size=+1> <Center><b> + State Command + </b></Font></Center></td> + </Tr> + <!---------- Input Argument -----------> + <Tr> + <Td> <Font=+1><b> Input Argument </Font></Td> + <Td> Tango::DEV_VOID + (none) + + </Td> + </Tr> + + <!---------- Output Argument -----------> + <Tr> + <Td> <Font=+1><b> Output Argument </Font></Td> + <Td> Tango::DEV_STATE + (Device state) + + </Td> + </Tr> + + <!---------- Allowed State -----------> + + + <!---------- Display Level -----------> + <Tr> + <Td> <Font=+1><b> Display Level </Font></Td> + <Td> OPERATOR </Td> + </Tr> + + <!---------- Inheritance -----------> + <Tr> + <Td> <Font=+1><b> Inherited </Font></Td> + <Td> true </Td> + </Tr> + <Tr> + <Td> <Font=+1><b> Abstract </Font></Td> + <Td> true </Td> + </Tr> + + + </Table> + <Br> + <Br> + <Br> + <Br> + +<!--- /*PROTECTED REGION ID(./doc_html/CmdState.html) ENABLED START*/ ---> + <!--- Add your own documentation, pictures, links,.... ---> + <ul> + + </ul> +<!--- /*PROTECTED REGION END*/ ---> + + <Br> + <Br> +</ul> +</FONT> +<Br> +<Br> + + +<!--- html Footer ---> +<Center> +<Font size=-1> +<br> +<br> +<TABLE BORDER="1" WIDTH="100%"> + <Tr> + <!--- Hosted by Sourceforge ---> + <Td Align="Center"> + <Font size=-1> + <b>TANGO</b> is an open source project hosted by :<br> + <A href="http://sourceforge.net" Target="new"> + <IMG title="Sourceforge logo" + alt="Sourceforge logo small" + src="http://www.esrf.fr/computing/cs/tango/sourceforge.gif" + border=0> </a> + </Font> + </Td> + <!--- 2 Sourceforge Repositories ---> + <Td Align="Center"> + <Font size=-1> + Core and Tools : + <a href="http://tango-cs.cvs.sourceforge.net/tango-cs/" Target=new> + CVS repository</a> on + <a href="https://sourceforge.net/projects/tango-cs" Target=new> + tango-cs project</a> + <br> + Device Servers : + <a href="http://tango-ds.cvs.sourceforge.net/tango-ds/" Target=new> + CVS repository</cmda> on + <a href="https://sourceforge.net/projects/tango-ds" Target=new> + tango-ds project</a> + </Font> + </Td> + </Tr> +</Table> +</Font> +</Center> +</body> +</html> + diff --git a/doc/CmdStatus.html b/doc/CmdStatus.html new file mode 100644 index 0000000000000000000000000000000000000000..63b33bbb92ebabb124513c7cecd8901136f9c400 --- /dev/null +++ b/doc/CmdStatus.html @@ -0,0 +1,212 @@ +<!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 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.elettra.trieste.it/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/elettra_logo.gif" BORDER=0 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.synchrotron-soleil.fr/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/soleil_logo.gif" BORDER=0 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.cells.es/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/alba.jpg" BORDER=0 Height="45"></A> + </TD> + <TD ALIGN="Right"> + <H2><FONT COLOR="#7F00FF"> + <Br><Center><A HREF="http://www.tango-controls.org/" TARGET="_top"> TANGO </a> + </Center></FONT> + </TD> + </TR> + <TR> + <TD ALIGN="left"> + <A HREF="http://www.desy.de/html/home/index_eng.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/desy.gif" BORDER=0 Height="44"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.maxlab.lu.se/maxlab/max4/index.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/maxlab.gif" BORDER=0 Height="40"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.frm2.tum.de/en/index.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/frm-2.jpg" BORDER=0 Height="45"></A> + </TD> + <TD> + <!-- Empty --> + </TD> + <TD ALIGN="Right"> + <H2><FONT COLOR="#7F00FF"> + <Center> Device Servers + </Center></FONT> + </TD> + </TR> +</TABLE> + +<HR WIDTH="100%"></H5> + + +<FONT SIZE="+3"> +<center> +<u> + PZ116E Tango Class <Br> +</u> +<FONT SIZE="+1"> + ( PI Piezo PZ116E controller device server ) +<Br> +<Br> +<TABLE BORDER="1" WIDTH="100%" CELLSPACING=0> + <TD ALIGN="center"> + <a href="index.html"> Description</a> + </Td> + <TD ALIGN="center"> + <a href="Properties.html"> Properties</a></li> + </Td> + <TD ALIGN="center"> + <a href="Commands.html"> Commands</a></li> + </Td> + <TD ALIGN="center"> + <a href="Attributes.html"> Attributes</a></li> + </Td> + <TD ALIGN="center"> + <a href="States.html"> States</a></li> + </Td> +</TABLE> +<Br> +<Br> +<Br> +<FONT SIZE="+2"><u> + Status Command +</u></Font> +</Center> + + + +<FONT SIZE="-1"> +<Br> +<Br> +<ul> + <Font SIZE="+0"> <b><u> Description :</u></b> </Font> + <ul> + This command gets the device status (stored in its device_status data member) and returns it to the caller. + </ul> + <Br> + <Br> + + <Table Border=2 Cellpadding=3 CELLSPACING=0> + <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> + <Td COLSPAN=0> <Font Size=+1> <Center><b> + Status Command + </b></Font></Center></td> + </Tr> + <!---------- Input Argument -----------> + <Tr> + <Td> <Font=+1><b> Input Argument </Font></Td> + <Td> Tango::DEV_VOID + (none) + + </Td> + </Tr> + + <!---------- Output Argument -----------> + <Tr> + <Td> <Font=+1><b> Output Argument </Font></Td> + <Td> Tango::CONST_DEV_STRING + (Device status) + + </Td> + </Tr> + + <!---------- Allowed State -----------> + + + <!---------- Display Level -----------> + <Tr> + <Td> <Font=+1><b> Display Level </Font></Td> + <Td> OPERATOR </Td> + </Tr> + + <!---------- Inheritance -----------> + <Tr> + <Td> <Font=+1><b> Inherited </Font></Td> + <Td> true </Td> + </Tr> + <Tr> + <Td> <Font=+1><b> Abstract </Font></Td> + <Td> true </Td> + </Tr> + + + </Table> + <Br> + <Br> + <Br> + <Br> + +<!--- /*PROTECTED REGION ID(./doc_html/CmdStatus.html) ENABLED START*/ ---> + <!--- Add your own documentation, pictures, links,.... ---> + <ul> + + </ul> +<!--- /*PROTECTED REGION END*/ ---> + + <Br> + <Br> +</ul> +</FONT> +<Br> +<Br> + + +<!--- html Footer ---> +<Center> +<Font size=-1> +<br> +<br> +<TABLE BORDER="1" WIDTH="100%"> + <Tr> + <!--- Hosted by Sourceforge ---> + <Td Align="Center"> + <Font size=-1> + <b>TANGO</b> is an open source project hosted by :<br> + <A href="http://sourceforge.net" Target="new"> + <IMG title="Sourceforge logo" + alt="Sourceforge logo small" + src="http://www.esrf.fr/computing/cs/tango/sourceforge.gif" + border=0> </a> + </Font> + </Td> + <!--- 2 Sourceforge Repositories ---> + <Td Align="Center"> + <Font size=-1> + Core and Tools : + <a href="http://tango-cs.cvs.sourceforge.net/tango-cs/" Target=new> + CVS repository</a> on + <a href="https://sourceforge.net/projects/tango-cs" Target=new> + tango-cs project</a> + <br> + Device Servers : + <a href="http://tango-ds.cvs.sourceforge.net/tango-ds/" Target=new> + CVS repository</cmda> on + <a href="https://sourceforge.net/projects/tango-ds" Target=new> + tango-ds project</a> + </Font> + </Td> + </Tr> +</Table> +</Font> +</Center> +</body> +</html> + diff --git a/doc/CmdStop.html b/doc/CmdStop.html new file mode 100644 index 0000000000000000000000000000000000000000..3229aa2be31e260efff4818b321ec93e31a81820 --- /dev/null +++ b/doc/CmdStop.html @@ -0,0 +1,212 @@ +<!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 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.elettra.trieste.it/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/elettra_logo.gif" BORDER=0 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.synchrotron-soleil.fr/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/soleil_logo.gif" BORDER=0 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.cells.es/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/alba.jpg" BORDER=0 Height="45"></A> + </TD> + <TD ALIGN="Right"> + <H2><FONT COLOR="#7F00FF"> + <Br><Center><A HREF="http://www.tango-controls.org/" TARGET="_top"> TANGO </a> + </Center></FONT> + </TD> + </TR> + <TR> + <TD ALIGN="left"> + <A HREF="http://www.desy.de/html/home/index_eng.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/desy.gif" BORDER=0 Height="44"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.maxlab.lu.se/maxlab/max4/index.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/maxlab.gif" BORDER=0 Height="40"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.frm2.tum.de/en/index.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/frm-2.jpg" BORDER=0 Height="45"></A> + </TD> + <TD> + <!-- Empty --> + </TD> + <TD ALIGN="Right"> + <H2><FONT COLOR="#7F00FF"> + <Center> Device Servers + </Center></FONT> + </TD> + </TR> +</TABLE> + +<HR WIDTH="100%"></H5> + + +<FONT SIZE="+3"> +<center> +<u> + PZ116E Tango Class <Br> +</u> +<FONT SIZE="+1"> + ( PI Piezo PZ116E controller device server ) +<Br> +<Br> +<TABLE BORDER="1" WIDTH="100%" CELLSPACING=0> + <TD ALIGN="center"> + <a href="index.html"> Description</a> + </Td> + <TD ALIGN="center"> + <a href="Properties.html"> Properties</a></li> + </Td> + <TD ALIGN="center"> + <a href="Commands.html"> Commands</a></li> + </Td> + <TD ALIGN="center"> + <a href="Attributes.html"> Attributes</a></li> + </Td> + <TD ALIGN="center"> + <a href="States.html"> States</a></li> + </Td> +</TABLE> +<Br> +<Br> +<Br> +<FONT SIZE="+2"><u> + Stop Command +</u></Font> +</Center> + + + +<FONT SIZE="-1"> +<Br> +<Br> +<ul> + <Font SIZE="+0"> <b><u> Description :</u></b> </Font> + <ul> + Stop motion + </ul> + <Br> + <Br> + + <Table Border=2 Cellpadding=3 CELLSPACING=0> + <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> + <Td COLSPAN=0> <Font Size=+1> <Center><b> + Stop Command + </b></Font></Center></td> + </Tr> + <!---------- Input Argument -----------> + <Tr> + <Td> <Font=+1><b> Input Argument </Font></Td> + <Td> Tango::DEV_VOID + (...) + + </Td> + </Tr> + + <!---------- Output Argument -----------> + <Tr> + <Td> <Font=+1><b> Output Argument </Font></Td> + <Td> Tango::DEV_VOID + (...) + + </Td> + </Tr> + + <!---------- Allowed State -----------> + + + <!---------- Display Level -----------> + <Tr> + <Td> <Font=+1><b> Display Level </Font></Td> + <Td> OPERATOR </Td> + </Tr> + + <!---------- Inheritance -----------> + <Tr> + <Td> <Font=+1><b> Inherited </Font></Td> + <Td> false </Td> + </Tr> + <Tr> + <Td> <Font=+1><b> Abstract </Font></Td> + <Td> false </Td> + </Tr> + + + </Table> + <Br> + <Br> + <Br> + <Br> + +<!--- /*PROTECTED REGION ID(./doc_html/CmdStop.html) ENABLED START*/ ---> + <!--- Add your own documentation, pictures, links,.... ---> + <ul> + + </ul> +<!--- /*PROTECTED REGION END*/ ---> + + <Br> + <Br> +</ul> +</FONT> +<Br> +<Br> + + +<!--- html Footer ---> +<Center> +<Font size=-1> +<br> +<br> +<TABLE BORDER="1" WIDTH="100%"> + <Tr> + <!--- Hosted by Sourceforge ---> + <Td Align="Center"> + <Font size=-1> + <b>TANGO</b> is an open source project hosted by :<br> + <A href="http://sourceforge.net" Target="new"> + <IMG title="Sourceforge logo" + alt="Sourceforge logo small" + src="http://www.esrf.fr/computing/cs/tango/sourceforge.gif" + border=0> </a> + </Font> + </Td> + <!--- 2 Sourceforge Repositories ---> + <Td Align="Center"> + <Font size=-1> + Core and Tools : + <a href="http://tango-cs.cvs.sourceforge.net/tango-cs/" Target=new> + CVS repository</a> on + <a href="https://sourceforge.net/projects/tango-cs" Target=new> + tango-cs project</a> + <br> + Device Servers : + <a href="http://tango-ds.cvs.sourceforge.net/tango-ds/" Target=new> + CVS repository</cmda> on + <a href="https://sourceforge.net/projects/tango-ds" Target=new> + tango-ds project</a> + </Font> + </Td> + </Tr> +</Table> +</Font> +</Center> +</body> +</html> + diff --git a/doc/Commands.html b/doc/Commands.html new file mode 100644 index 0000000000000000000000000000000000000000..b358f1c0a8c6329d0b76b4f04bd71b9a18cf2fcb --- /dev/null +++ b/doc/Commands.html @@ -0,0 +1,237 @@ +<!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 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.elettra.trieste.it/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/elettra_logo.gif" BORDER=0 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.synchrotron-soleil.fr/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/soleil_logo.gif" BORDER=0 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.cells.es/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/alba.jpg" BORDER=0 Height="45"></A> + </TD> + <TD ALIGN="Right"> + <H2><FONT COLOR="#7F00FF"> + <Br><Center><A HREF="http://www.tango-controls.org/" TARGET="_top"> TANGO </a> + </Center></FONT> + </TD> + </TR> + <TR> + <TD ALIGN="left"> + <A HREF="http://www.desy.de/html/home/index_eng.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/desy.gif" BORDER=0 Height="44"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.maxlab.lu.se/maxlab/max4/index.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/maxlab.gif" BORDER=0 Height="40"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.frm2.tum.de/en/index.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/frm-2.jpg" BORDER=0 Height="45"></A> + </TD> + <TD> + <!-- Empty --> + </TD> + <TD ALIGN="Right"> + <H2><FONT COLOR="#7F00FF"> + <Center> Device Servers + </Center></FONT> + </TD> + </TR> +</TABLE> + +<HR WIDTH="100%"></H5> + + + +<FONT SIZE="+3"> +<center> +<u> + PZ116E Tango Class <Br> +</u> +<FONT SIZE="+1"> + ( PI Piezo PZ116E controller device server ) +<Br> +<Br> +<TABLE BORDER="1" WIDTH="100%" CELLSPACING=0> + <TD ALIGN="center"> + <a href="index.html"> Description</a> + </Td> + <TD ALIGN="center"> + <a href="Properties.html"> Properties</a></li> + </Td> + <TD ALIGN="center"> + <a href="Commands.html"> Commands</a></li> + </Td> + <TD ALIGN="center"> + <a href="Attributes.html"> Attributes</a></li> + </Td> + <TD ALIGN="center"> + <a href="States.html"> States</a></li> + </Td> +</TABLE> +<Br> +<Br> +<Br> +<FONT SIZE="+2"><u> + Commands +</u></Font> +</Center> + + + +<FONT SIZE="-1"> +<Br> +<Br> +<ul> + + <Table Border=2 Cellpadding=3 CELLSPACING=0> + <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> + <Td COLSPAN=5> <Font Size=+1> <Center><b> + 8 Device Commands + </b></Font></Center></td> + <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> + <Td><Center><b> + Name + </b></Center></td> + <Td><Center><b> + Input type + </b></Center></td> + <Td><Center><b> + Output type + </b></Center></td> + <Td><Center><b> + Level + </b></Center></td> + <Td><Center><b> + Description + </b></Center></td> + </Tr> + <Tr> + <Td> <a href=CmdState.html> State </a></Td> + <Td> DEV_VOID </Td> + <Td> DEV_STATE </Td> + <Td> OPERATOR </Td> + <Td> This command gets the device state (stored in its device_state data member) and returns it to the caller. </Td> + </Tr> + <Tr> + <Td> <a href=CmdStatus.html> Status </a></Td> + <Td> DEV_VOID </Td> + <Td> CONST_DEV_STRING </Td> + <Td> OPERATOR </Td> + <Td> This command gets the device status (stored in its device_status data member) and returns it to the caller. </Td> + </Tr> + <Tr> + <Td> <a href=CmdForward.html> Forward </a></Td> + <Td> DEV_DOUBLE </Td> + <Td> DEV_VOID </Td> + <Td> OPERATOR </Td> + <Td> Move forward </Td> + </Tr> + <Tr> + <Td> <a href=CmdBackward.html> Backward </a></Td> + <Td> DEV_DOUBLE </Td> + <Td> DEV_VOID </Td> + <Td> OPERATOR </Td> + <Td> Move backward </Td> + </Tr> + <Tr> + <Td> <a href=CmdStop.html> Stop </a></Td> + <Td> DEV_VOID </Td> + <Td> DEV_VOID </Td> + <Td> OPERATOR </Td> + <Td> Stop motion </Td> + </Tr> + <Tr> + <Td> <a href=CmdReset.html> Reset </a></Td> + <Td> DEV_VOID </Td> + <Td> DEV_VOID </Td> + <Td> OPERATOR </Td> + <Td> Reset controller </Td> + </Tr> + <Tr> + <Td> <a href=CmdStartScan.html> StartScan </a></Td> + <Td> DEV_VOID </Td> + <Td> DEV_VOID </Td> + <Td> OPERATOR </Td> + <Td> </Td> + </Tr> + <Tr> + <Td> <a href=CmdEndScan.html> EndScan </a></Td> + <Td> DEV_VOID </Td> + <Td> DEV_VOID </Td> + <Td> OPERATOR </Td> + <Td> </Td> + </Tr> + </table> +<Br> +<Br> + +<!--- /*PROTECTED REGION ID(./doc_html/Commands.html) ENABLED START*/ ---> + <!--- Add your own documentation, pictures, links,.... ---> + <ul> + + </ul> +<!--- /*PROTECTED REGION END*/ ---> + + <Br> + <Br> +</ul> +</FONT> + + +<!--- html Footer ---> +<Center> +<Font size=-1> +<br> +<br> +<TABLE BORDER="1" WIDTH="100%"> + <Tr> + <!--- Hosted by Sourceforge ---> + <Td Align="Center"> + <Font size=-1> + <b>TANGO</b> is an open source project hosted by :<br> + <A href="http://sourceforge.net" Target="new"> + <IMG title="Sourceforge logo" + alt="Sourceforge logo small" + src="http://www.esrf.fr/computing/cs/tango/sourceforge.gif" + border=0> </a> + </Font> + </Td> + <!--- 2 Sourceforge Repositories ---> + <Td Align="Center"> + <Font size=-1> + Core and Tools : + <a href="http://tango-cs.cvs.sourceforge.net/tango-cs/" Target=new> + CVS repository</a> on + <a href="https://sourceforge.net/projects/tango-cs" Target=new> + tango-cs project</a> + <br> + Device Servers : + <a href="http://tango-ds.cvs.sourceforge.net/tango-ds/" Target=new> + CVS repository</cmda> on + <a href="https://sourceforge.net/projects/tango-ds" Target=new> + tango-ds project</a> + </Font> + </Td> + </Tr> +</Table> +</Font> +</Center> +</body> +</html> + diff --git a/doc/Properties.html b/doc/Properties.html new file mode 100644 index 0000000000000000000000000000000000000000..e7cc27c086ea5835fd3e62f2534c1f095621dac3 --- /dev/null +++ b/doc/Properties.html @@ -0,0 +1,213 @@ +<!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 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.elettra.trieste.it/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/elettra_logo.gif" BORDER=0 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.synchrotron-soleil.fr/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/soleil_logo.gif" BORDER=0 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.cells.es/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/alba.jpg" BORDER=0 Height="45"></A> + </TD> + <TD ALIGN="Right"> + <H2><FONT COLOR="#7F00FF"> + <Br><Center><A HREF="http://www.tango-controls.org/" TARGET="_top"> TANGO </a> + </Center></FONT> + </TD> + </TR> + <TR> + <TD ALIGN="left"> + <A HREF="http://www.desy.de/html/home/index_eng.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/desy.gif" BORDER=0 Height="44"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.maxlab.lu.se/maxlab/max4/index.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/maxlab.gif" BORDER=0 Height="40"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.frm2.tum.de/en/index.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/frm-2.jpg" BORDER=0 Height="45"></A> + </TD> + <TD> + <!-- Empty --> + </TD> + <TD ALIGN="Right"> + <H2><FONT COLOR="#7F00FF"> + <Center> Device Servers + </Center></FONT> + </TD> + </TR> +</TABLE> + +<HR WIDTH="100%"></H5> + + + +<FONT SIZE="+3"> +<center> +<u> + PZ116E Tango Class <Br> +</u> +<FONT SIZE="+1"> + ( PI Piezo PZ116E controller device server ) +<Br> +<Br> +<TABLE BORDER="1" WIDTH="100%" CELLSPACING=0> + <TD ALIGN="center"> + <a href="index.html"> Description</a> + </Td> + <TD ALIGN="center"> + <a href="Properties.html"> Properties</a></li> + </Td> + <TD ALIGN="center"> + <a href="Commands.html"> Commands</a></li> + </Td> + <TD ALIGN="center"> + <a href="Attributes.html"> Attributes</a></li> + </Td> + <TD ALIGN="center"> + <a href="States.html"> States</a></li> + </Td> +</TABLE> +<Br> +<Br> +<Br> +<FONT SIZE="+2"><u> + Properties +</u></Font> +</Center> + + + +<FONT SIZE="-1"> +<Br> +<Br> +<ul> + + <b> There is no class property defined.</b> + +<Br> +<Br> + + + <Table Border=2 Cellpadding=3 CELLSPACING=0> + <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> + <Td COLSPAN=4> <Font Size=+1> <Center><b> + 3 Device Properties + </b></Font></Center></td> + <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> + <Td><Center><b> + Property Name + </b></Center></td> + <Td><Center><b> + Description + </b></Center></td> + <Td><Center><b> + Property type + </b></Center></td> + <Td><Center><b> + Default Value + </b></Center></td> + </Tr> + <Tr> + <Td> InitCommand </Td> + <Td> </Td> + <Td> vector<string> </Td> + <Td> + ..... + </Td> + </td> + </Tr> + <Tr> + <Td> SerialLine </Td> + <Td> Linux serial device (ex: /dev/ttyS0) </Td> + <Td> string </Td> + <Td> + /dev/ttyS0 + </Td> + </td> + </Tr> + <Tr> + <Td> Um2PsConvFactor </Td> + <Td> Conversion factor ps = Um2PsConvFactor * um </Td> + <Td> double </Td> + <Td> + 1 + </Td> + </td> + </Tr> + </table> + + <Br> + <Br> + + +<!--- /*PROTECTED REGION ID(./doc_html/Properties.html) ENABLED START*/ ---> + <!--- Add your own documentation, pictures, links,.... ---> + <ul> + + </ul> +<!--- /*PROTECTED REGION END*/ ---> + + <Br> + <Br> +</ul> +</FONT> + + +<!--- html Footer ---> +<Center> +<Font size=-1> +<br> +<br> +<TABLE BORDER="1" WIDTH="100%"> + <Tr> + <!--- Hosted by Sourceforge ---> + <Td Align="Center"> + <Font size=-1> + <b>TANGO</b> is an open source project hosted by :<br> + <A href="http://sourceforge.net" Target="new"> + <IMG title="Sourceforge logo" + alt="Sourceforge logo small" + src="http://www.esrf.fr/computing/cs/tango/sourceforge.gif" + border=0> </a> + </Font> + </Td> + <!--- 2 Sourceforge Repositories ---> + <Td Align="Center"> + <Font size=-1> + Core and Tools : + <a href="http://tango-cs.cvs.sourceforge.net/tango-cs/" Target=new> + CVS repository</a> on + <a href="https://sourceforge.net/projects/tango-cs" Target=new> + tango-cs project</a> + <br> + Device Servers : + <a href="http://tango-ds.cvs.sourceforge.net/tango-ds/" Target=new> + CVS repository</cmda> on + <a href="https://sourceforge.net/projects/tango-ds" Target=new> + tango-ds project</a> + </Font> + </Td> + </Tr> +</Table> +</Font> +</Center> +</body> +</html> + diff --git a/doc/States.html b/doc/States.html new file mode 100644 index 0000000000000000000000000000000000000000..9d2665762e31b322e5a29336f474961b6380ebaa --- /dev/null +++ b/doc/States.html @@ -0,0 +1,186 @@ +<!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 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.elettra.trieste.it/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/elettra_logo.gif" BORDER=0 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.synchrotron-soleil.fr/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/soleil_logo.gif" BORDER=0 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.cells.es/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/alba.jpg" BORDER=0 Height="45"></A> + </TD> + <TD ALIGN="Right"> + <H2><FONT COLOR="#7F00FF"> + <Br><Center><A HREF="http://www.tango-controls.org/" TARGET="_top"> TANGO </a> + </Center></FONT> + </TD> + </TR> + <TR> + <TD ALIGN="left"> + <A HREF="http://www.desy.de/html/home/index_eng.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/desy.gif" BORDER=0 Height="44"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.maxlab.lu.se/maxlab/max4/index.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/maxlab.gif" BORDER=0 Height="40"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.frm2.tum.de/en/index.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/frm-2.jpg" BORDER=0 Height="45"></A> + </TD> + <TD> + <!-- Empty --> + </TD> + <TD ALIGN="Right"> + <H2><FONT COLOR="#7F00FF"> + <Center> Device Servers + </Center></FONT> + </TD> + </TR> +</TABLE> + +<HR WIDTH="100%"></H5> + + + +<FONT SIZE="+3"> +<center> +<u> + PZ116E Tango Class <Br> +</u> +<FONT SIZE="+1"> + ( PI Piezo PZ116E controller device server ) +<Br> +<Br> +<TABLE BORDER="1" WIDTH="100%" CELLSPACING=0> + <TD ALIGN="center"> + <a href="index.html"> Description</a> + </Td> + <TD ALIGN="center"> + <a href="Properties.html"> Properties</a></li> + </Td> + <TD ALIGN="center"> + <a href="Commands.html"> Commands</a></li> + </Td> + <TD ALIGN="center"> + <a href="Attributes.html"> Attributes</a></li> + </Td> + <TD ALIGN="center"> + <a href="States.html"> States</a></li> + </Td> +</TABLE> +<Br> +<Br> +<Br> +<FONT SIZE="+2"><u> + </center><ul>PZ116E States</ul> +</u></Font> +</Center> + + + +<FONT SIZE="-1"> +<Br> +<Br> +<ul> + + <Table Border=2 Cellpadding=3 CELLSPACING=0> + <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> + <Td COLSPAN=2> <Font Size=+1> <Center><b> + 3 Device States + </b></Font></Center></td> + <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> + <Td><Center><b> + State Name + </b></Center></td> + <Td><Center><b> + Description + </b></Center></td> + </Tr> + + <Tr> + <Td> ON </Td> + <Td> </Td> + </Tr> + <Tr> + <Td> FAULT </Td> + <Td> </Td> + </Tr> + <Tr> + <Td> MOVING </Td> + <Td> </Td> + </Tr> + </table> + + <Br> + <Br> + +<!--- /*PROTECTED REGION ID(./doc_html/States.html) ENABLED START*/ ---> + <!--- Add your own documentation, pictures, links,.... ---> + <ul> + + </ul> +<!--- /*PROTECTED REGION END*/ ---> + + <Br> + <Br> +</ul> +</FONT> + + +<!--- html Footer ---> +<Center> +<Font size=-1> +<br> +<br> +<TABLE BORDER="1" WIDTH="100%"> + <Tr> + <!--- Hosted by Sourceforge ---> + <Td Align="Center"> + <Font size=-1> + <b>TANGO</b> is an open source project hosted by :<br> + <A href="http://sourceforge.net" Target="new"> + <IMG title="Sourceforge logo" + alt="Sourceforge logo small" + src="http://www.esrf.fr/computing/cs/tango/sourceforge.gif" + border=0> </a> + </Font> + </Td> + <!--- 2 Sourceforge Repositories ---> + <Td Align="Center"> + <Font size=-1> + Core and Tools : + <a href="http://tango-cs.cvs.sourceforge.net/tango-cs/" Target=new> + CVS repository</a> on + <a href="https://sourceforge.net/projects/tango-cs" Target=new> + tango-cs project</a> + <br> + Device Servers : + <a href="http://tango-ds.cvs.sourceforge.net/tango-ds/" Target=new> + CVS repository</cmda> on + <a href="https://sourceforge.net/projects/tango-ds" Target=new> + tango-ds project</a> + </Font> + </Td> + </Tr> +</Table> +</Font> +</Center> +</body> +</html> + diff --git a/doc/index.html b/doc/index.html new file mode 100644 index 0000000000000000000000000000000000000000..6d2ecaeda20f6bf291fe4ed7f586a46aeb306bef --- /dev/null +++ b/doc/index.html @@ -0,0 +1,199 @@ +<!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 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.elettra.trieste.it/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/elettra_logo.gif" BORDER=0 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.synchrotron-soleil.fr/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/soleil_logo.gif" BORDER=0 Height="60"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.cells.es/" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/alba.jpg" BORDER=0 Height="45"></A> + </TD> + <TD ALIGN="Right"> + <H2><FONT COLOR="#7F00FF"> + <Br><Center><A HREF="http://www.tango-controls.org/" TARGET="_top"> TANGO </a> + </Center></FONT> + </TD> + </TR> + <TR> + <TD ALIGN="left"> + <A HREF="http://www.desy.de/html/home/index_eng.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/desy.gif" BORDER=0 Height="44"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.maxlab.lu.se/maxlab/max4/index.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/maxlab.gif" BORDER=0 Height="40"></A> + </TD> + <TD ALIGN="center"> + <A HREF="http://www.frm2.tum.de/en/index.html" TARGET=new> + <IMG SRC="http://www.esrf.fr/computing/cs/tango/frm-2.jpg" BORDER=0 Height="45"></A> + </TD> + <TD> + <!-- Empty --> + </TD> + <TD ALIGN="Right"> + <H2><FONT COLOR="#7F00FF"> + <Center> Device Servers + </Center></FONT> + </TD> + </TR> +</TABLE> + +<HR WIDTH="100%"></H5> + + + +<FONT SIZE="+3"> +<center> +<u> + PZ116E Tango Class <Br> +</u> +<FONT SIZE="+1"> + ( PI Piezo PZ116E controller device server ) +<Br> +<Br> +<TABLE BORDER="1" WIDTH="100%" CELLSPACING=0> + <TD ALIGN="center"> + <a href="index.html"> Description</a> + </Td> + <TD ALIGN="center"> + <a href="Properties.html"> Properties</a></li> + </Td> + <TD ALIGN="center"> + <a href="Commands.html"> Commands</a></li> + </Td> + <TD ALIGN="center"> + <a href="Attributes.html"> Attributes</a></li> + </Td> + <TD ALIGN="center"> + <a href="States.html"> States</a></li> + </Td> +</TABLE> +<Br> +<Br> +<Br> +<FONT SIZE="+2"><u> + TANGO Cpp Class Decription +</u></Font> +</Center> + + + +<FONT SIZE="-1"> +<Br> +<Br> +<Br> +<Br> +<ul> + <Font SIZE="+0"> <b><u> Class Identification :</u></b> </Font> + <ul> + <TABLE BORDER="0"> + <Tr> + <td> Contact </td><td> : at elettra.trieste.it - giulio.gaio</td> + </tr> + <tr> + <td> Class Family </td><td> : Motion + + </tr> + <tr> + <td> Platform </td><td> : Unix Like </td> + </tr> + <tr> + <td> Bus </td><td> : Serial Line </td> + </tr> + <tr> + <td> Manufacturer </td><td> : PI </td> + </tr> + <tr> + <td> Manufacturer ref.</td><td> : PZ116E </td> + </tr> + </Table> + </ul> + <Br> + <Br> + <Font SIZE="+0"> <b><u> Class Inheritance :</u></b> </Font> + <ul> + <li> <a href="http://www.esrf.fr/computing/cs/tango/tango_doc/kernel_doc/cpp_doc/"> Tango::DeviceImpl</a></li> + <ul><li><b> PZ116E </b></ul> + + </ul> + <Br> + <Br> + <Font SIZE="+0"> <b><u> Class Description :</u></b> </Font> + <ul> + PI Piezo PZ116E controller device server + </ul> + + <Br> + <Br> + + +<!--- /*PROTECTED REGION ID(./doc_html/index.html) ENABLED START*/ ---> + <!--- Add your own documentation, pictures, links,.... ---> + <ul> + + </ul> +<!--- /*PROTECTED REGION END*/ ---> + + <Br> + <Br> +</ul> +</FONT> + + +<!--- html Footer ---> +<Center> +<Font size=-1> +<br> +<br> +<TABLE BORDER="1" WIDTH="100%"> + <Tr> + <!--- Hosted by Sourceforge ---> + <Td Align="Center"> + <Font size=-1> + <b>TANGO</b> is an open source project hosted by :<br> + <A href="http://sourceforge.net" Target="new"> + <IMG title="Sourceforge logo" + alt="Sourceforge logo small" + src="http://www.esrf.fr/computing/cs/tango/sourceforge.gif" + border=0> </a> + </Font> + </Td> + <!--- 2 Sourceforge Repositories ---> + <Td Align="Center"> + <Font size=-1> + Core and Tools : + <a href="http://tango-cs.cvs.sourceforge.net/tango-cs/" Target=new> + CVS repository</a> on + <a href="https://sourceforge.net/projects/tango-cs" Target=new> + tango-cs project</a> + <br> + Device Servers : + <a href="http://tango-ds.cvs.sourceforge.net/tango-ds/" Target=new> + CVS repository</cmda> on + <a href="https://sourceforge.net/projects/tango-ds" Target=new> + tango-ds project</a> + </Font> + </Td> + </Tr> +</Table> +</Font> +</Center> +</body> +</html> + diff --git a/src/ClassFactory.cpp b/src/ClassFactory.cpp new file mode 100644 index 0000000000000000000000000000000000000000..e799f44164d9b7cbca1830fd260dd2261614acf7 --- /dev/null +++ b/src/ClassFactory.cpp @@ -0,0 +1,55 @@ +/*----- PROTECTED REGION ID(PZ116E::ClassFactory.cpp) ENABLED START -----*/ +static const char *RcsId = "$Id: ClassFactory.cpp,v 1.2 2015-08-27 14:51:04 giulio Exp $"; +//============================================================================= +// +// file : ClassFactory.cpp +// +// description : C++ source for the class_factory method of the DServer +// device class. This method is responsible for the creation of +// all class singleton for a device server. It is called +// at device server startup. +// +// project : PI Piezo PZ116E controller device server. +// +// $Author: giulio $ +// +// $Revision: 1.2 $ +// $Date: 2015-08-27 14:51:04 $ +// +// SVN only: +// $HeadURL: $ +// +// CVS only: +// $Source: /home/cvsadm/cvsroot/fermi/servers/pz116e/src/ClassFactory.cpp,v $ +// $Log: ClassFactory.cpp,v $ +// Revision 1.2 2015-08-27 14:51:04 giulio +// Supported open-loop mode +// +// Revision 1.1.1.1 2012-06-06 14:03:00 giulio +// First release +// +// +//============================================================================= +// This file is generated by POGO +// (Program Obviously used to Generate tango Object) +//============================================================================= + + +#include <tango.h> +#include <PZ116EClass.h> + +// Add class header files if needed + + +/** + * Create PZ116E Class singleton and store it in DServer object. + */ + +void Tango::DServer::class_factory() +{ + // Add method class init if needed + + add_class(PZ116E_ns::PZ116EClass::init("PZ116E")); +} + +/*----- PROTECTED REGION END -----*/ // PZ116E::ClassFactory.cpp diff --git a/src/PZ116E.cpp b/src/PZ116E.cpp new file mode 100644 index 0000000000000000000000000000000000000000..64ff40b8e9b8f154783eb487208698a2cc8da0fe --- /dev/null +++ b/src/PZ116E.cpp @@ -0,0 +1,1236 @@ +/*----- PROTECTED REGION ID(PZ116E.cpp) ENABLED START -----*/ +static const char *RcsId = "$Id: PZ116E.cpp,v 1.9 2015-08-27 14:51:04 giulio Exp $"; +//============================================================================= +// +// file : PZ116E.cpp +// +// description : C++ source for the PZ116E and its commands. +// The class is derived from Device. It represents the +// CORBA servant object which will be accessed from the +// network. All commands which can be executed on the +// PZ116E are implemented in this file. +// +// project : PI Piezo PZ116E controller device server. +// +// $Author: giulio $ +// +// $Revision: 1.9 $ +// $Date: 2015-08-27 14:51:04 $ +// +// SVN only: +// $HeadURL: $ +// +// CVS only: +// $Source: /home/cvsadm/cvsroot/fermi/servers/pz116e/src/PZ116E.cpp,v $ +// $Log: PZ116E.cpp,v $ +// Revision 1.9 2015-08-27 14:51:04 giulio +// Supported open-loop mode +// +// Revision 1.8 2013-12-30 11:10:54 giulio +// Moved to Tango8 +// +// Revision 1.7 2012-07-02 08:27:40 giulio +// Reset errors before rtmode/reset commands +// +// Revision 1.6 2012-06-28 08:19:30 giulio +// Modified rtmode attribute +// +// Revision 1.5 2012-06-11 15:35:07 giulio +// fixed waveform write attribute +// +// Revision 1.4 2012-06-11 15:11:54 giulio +// fixed send_cmd command inout +// +// Revision 1.3 2012-06-07 09:57:21 giulio +// Added status strings, load waveform in init procedure +// +// Revision 1.2 2012-06-06 14:35:08 giulio +// Fixed sendcmd bug +// +// +//============================================================================= +// This file is generated by POGO +// (Program Obviously used to Generate tango Object) +//============================================================================= + + +#include <PZ116E.h> +#include <PZ116EClass.h> + +const char err_msg_table[PZ116E_NUM_ERRORS][PZ116E_ERR_MSG_SIZE] = { + "0", "no errror", + "1", "Parameter syntax error", + "2", "Unknown command", + "3", "Command length out of limits or command buffer overrun", + "5", "Unallowable move attempted on unreferenced axis, or move attempted with servo off", + "10", "Controller was stopped by command", + "15", "Invalid axis identifier", + "17", "Parameter out of range", + "20", "Macro not found", + "54", "Unknown parameter", + "56", "Password invalid", + "60", "Protected Param: current Command Level (CCL) too low", + "73", "Motion commands are not allowed when wave generator is active", + "79", "Open-loop commands (SVA, SVR) are not allowed when servo is on", + "89", "Command not allowed in current motion mode", + "210", "Illegal file name (must be 8-0 format)", + "232", "Save system configuration failed", + "233", "Load system configuration failed", + "306", "Error on I2C bus", + "309", "Insufficient space to store macro", + "405", "Wave parameter out of range" + }; + +/*----- PROTECTED REGION END -----*/ // PZ116E.cpp + +/** + * PZ116E class description: + * PI Piezo PZ116E controller device server + */ + +//================================================================ +// The following table gives the correspondence +// between command and method names. +// +// Command name | Method name +//================================================================ +// State | Inherited (no method) +// Status | Inherited (no method) +// Forward | forward +// Backward | backward +// Stop | stop +// Reset | reset +// StartWaveform | start_waveform +// StopWaveform | stop_waveform +// SendCmd | send_cmd +//================================================================ + +//================================================================ +// Attributes managed are: +//================================================================ +// RtMode | Tango::DevBoolean Scalar +// Position | Tango::DevDouble Scalar +// IdentityNumber | Tango::DevString Scalar +// OneshotWaveform | Tango::DevBoolean Scalar +// Stat | Tango::DevBoolean Spectrum ( max = 32) +// Waveform | Tango::DevDouble Spectrum ( max = 256) +//================================================================ + +namespace PZ116E_ns +{ +/*----- PROTECTED REGION ID(PZ116E::namespace_starting) ENABLED START -----*/ + + // static initializations + + /*----- PROTECTED REGION END -----*/ // PZ116E::namespace_starting + +//-------------------------------------------------------- +/** + * Method : PZ116E::PZ116E() + * Description : Constructors for a Tango device + * implementing the classPZ116E + */ +//-------------------------------------------------------- +PZ116E::PZ116E(Tango::DeviceClass *cl, string &s) + : TANGO_BASE_CLASS(cl, s.c_str()) +{ + /*----- PROTECTED REGION ID(PZ116E::constructor_1) ENABLED START -----*/ + + init_device(); + + /*----- PROTECTED REGION END -----*/ // PZ116E::constructor_1 +} +//-------------------------------------------------------- +PZ116E::PZ116E(Tango::DeviceClass *cl, const char *s) + : TANGO_BASE_CLASS(cl, s) +{ + /*----- PROTECTED REGION ID(PZ116E::constructor_2) ENABLED START -----*/ + + init_device(); + + /*----- PROTECTED REGION END -----*/ // PZ116E::constructor_2 +} +//-------------------------------------------------------- +PZ116E::PZ116E(Tango::DeviceClass *cl, const char *s, const char *d) + : TANGO_BASE_CLASS(cl, s, d) +{ + /*----- PROTECTED REGION ID(PZ116E::constructor_3) ENABLED START -----*/ + + init_device(); + + /*----- PROTECTED REGION END -----*/ // PZ116E::constructor_3 +} + +//-------------------------------------------------------- +/** + * Method : PZ116E::delete_device() + * Description : will be called at device destruction or at init command + */ +//-------------------------------------------------------- +void PZ116E::delete_device() +{ + DEBUG_STREAM << "PZ116E::delete_device() " << device_name << endl; + /*----- PROTECTED REGION ID(PZ116E::delete_device) ENABLED START -----*/ + + // Delete device allocated objects + + /*----- PROTECTED REGION END -----*/ // PZ116E::delete_device + delete[] attr_RtMode_read; + delete[] attr_Position_read; + delete[] attr_IdentityNumber_read; + delete[] attr_OneshotWaveform_read; + delete[] attr_Stat_read; + delete[] attr_Waveform_read; +} + +//-------------------------------------------------------- +/** + * Method : PZ116E::init_device() + * Description : will be called at device initialization. + */ +//-------------------------------------------------------- +void PZ116E::init_device() +{ + DEBUG_STREAM << "PZ116E::init_device() create device " << device_name << endl; + /*----- PROTECTED REGION ID(PZ116E::init_device_before) ENABLED START -----*/ + + // Initialization before get_device_property() call + + /*----- PROTECTED REGION END -----*/ // PZ116E::init_device_before + + + // Get the device properties from database + get_device_property(); + + attr_RtMode_read = new Tango::DevBoolean[1]; + attr_Position_read = new Tango::DevDouble[1]; + attr_IdentityNumber_read = new Tango::DevString[1]; + attr_OneshotWaveform_read = new Tango::DevBoolean[1]; + attr_Stat_read = new Tango::DevBoolean[32]; + attr_Waveform_read = new Tango::DevDouble[256]; + + /*----- PROTECTED REGION ID(PZ116E::init_device) ENABLED START -----*/ + + // Initialize device + mutex_cmd = new omni_mutex::omni_mutex(); + + clock_gettime(CLOCK_MONOTONIC, &last_state_time); + last_state_time.tv_sec -= 10; + last_reset_time.tv_sec = last_state_time.tv_sec; + last_pos_time.tv_sec = last_state_time.tv_sec; + + try { + Tango::MultiAttribute *attr_list = get_device_attr(); + attr_position = 0; + attr_position = &(attr_list->get_w_attr_by_name("Position")); + } + catch(...) { + INFO_STREAM << "PZ116E::init_device(): error getting position attribute" << endl; + } + + for (int i = 0; i < PZ116E_NUM_STATES; i++) { + attr_Stat_read[i] = false; + } + + for (int i = 0; i < 256; i++) + attr_Waveform_read[i] = 0; + wsize = 0; + start_wave_idx = 0; + stop_wave_idx = 0; + + open_tty(); + + try { + check_err(); + } + catch(Tango::DevFailed e) {} + try { + init_pi(); + } + catch(Tango::DevFailed e) { + set_state(Tango::FAULT); + set_status("Initialization failed\n"); + } + + *attr_RtMode_read = false; + *attr_IdentityNumber_read = idn_name; + + + /*----- PROTECTED REGION END -----*/ // PZ116E::init_device +} + +//-------------------------------------------------------- +/** + * Method : PZ116E::get_device_property() + * Description : Read database to initialize property data members. + */ +//-------------------------------------------------------- +void PZ116E::get_device_property() +{ + /*----- PROTECTED REGION ID(PZ116E::get_device_property_before) ENABLED START -----*/ + + // Initialize property data members + + /*----- PROTECTED REGION END -----*/ // PZ116E::get_device_property_before + + + // Read device properties from database. + Tango::DbData dev_prop; + dev_prop.push_back(Tango::DbDatum("InitCommand")); + dev_prop.push_back(Tango::DbDatum("SerialLine")); + dev_prop.push_back(Tango::DbDatum("Um2PsConvFactor")); + dev_prop.push_back(Tango::DbDatum("TxRxSleep")); + dev_prop.push_back(Tango::DbDatum("ClosedLoop")); + + // is there at least one property to be read ? + if (dev_prop.size()>0) + { + // Call database and extract values + if (Tango::Util::instance()->_UseDb==true) + get_db_device()->get_property(dev_prop); + + // get instance on PZ116EClass to get class property + Tango::DbDatum def_prop, cl_prop; + PZ116EClass *ds_class = + (static_cast<PZ116EClass *>(get_device_class())); + int i = -1; + + // Try to initialize InitCommand from class property + cl_prop = ds_class->get_class_property(dev_prop[++i].name); + if (cl_prop.is_empty()==false) cl_prop >> initCommand; + else { + // Try to initialize InitCommand from default device value + def_prop = ds_class->get_default_device_property(dev_prop[i].name); + if (def_prop.is_empty()==false) def_prop >> initCommand; + } + // And try to extract InitCommand value from database + if (dev_prop[i].is_empty()==false) dev_prop[i] >> initCommand; + + // Try to initialize SerialLine from class property + cl_prop = ds_class->get_class_property(dev_prop[++i].name); + if (cl_prop.is_empty()==false) cl_prop >> serialLine; + else { + // Try to initialize SerialLine from default device value + def_prop = ds_class->get_default_device_property(dev_prop[i].name); + if (def_prop.is_empty()==false) def_prop >> serialLine; + } + // And try to extract SerialLine value from database + if (dev_prop[i].is_empty()==false) dev_prop[i] >> serialLine; + + // Try to initialize Um2PsConvFactor from class property + cl_prop = ds_class->get_class_property(dev_prop[++i].name); + if (cl_prop.is_empty()==false) cl_prop >> um2PsConvFactor; + else { + // Try to initialize Um2PsConvFactor from default device value + def_prop = ds_class->get_default_device_property(dev_prop[i].name); + if (def_prop.is_empty()==false) def_prop >> um2PsConvFactor; + } + // And try to extract Um2PsConvFactor value from database + if (dev_prop[i].is_empty()==false) dev_prop[i] >> um2PsConvFactor; + + // Try to initialize TxRxSleep from class property + cl_prop = ds_class->get_class_property(dev_prop[++i].name); + if (cl_prop.is_empty()==false) cl_prop >> txRxSleep; + else { + // Try to initialize TxRxSleep from default device value + def_prop = ds_class->get_default_device_property(dev_prop[i].name); + if (def_prop.is_empty()==false) def_prop >> txRxSleep; + } + // And try to extract TxRxSleep value from database + if (dev_prop[i].is_empty()==false) dev_prop[i] >> txRxSleep; + + // Try to initialize ClosedLoop from class property + cl_prop = ds_class->get_class_property(dev_prop[++i].name); + if (cl_prop.is_empty()==false) cl_prop >> closedLoop; + else { + // Try to initialize ClosedLoop from default device value + def_prop = ds_class->get_default_device_property(dev_prop[i].name); + if (def_prop.is_empty()==false) def_prop >> closedLoop; + } + // And try to extract ClosedLoop value from database + if (dev_prop[i].is_empty()==false) dev_prop[i] >> closedLoop; + + } + + /*----- PROTECTED REGION ID(PZ116E::get_device_property_after) ENABLED START -----*/ + + // Check device property data members init + + /*----- PROTECTED REGION END -----*/ // PZ116E::get_device_property_after +} + +//-------------------------------------------------------- +/** + * Method : PZ116E::always_executed_hook() + * Description : method always executed before any command is executed + */ +//-------------------------------------------------------- +void PZ116E::always_executed_hook() +{ + INFO_STREAM << "PZ116E::always_executed_hook() " << device_name << endl; + /*----- PROTECTED REGION ID(PZ116E::always_executed_hook) ENABLED START -----*/ + + // code always executed before all requests + set_DevState(); + + /*----- PROTECTED REGION END -----*/ // PZ116E::always_executed_hook +} + +//-------------------------------------------------------- +/** + * Method : PZ116E::read_attr_hardware() + * Description : Hardware acquisition for attributes + */ +//-------------------------------------------------------- +void PZ116E::read_attr_hardware(TANGO_UNUSED(vector<long> &attr_list)) +{ + DEBUG_STREAM << "PZ116E::read_attr_hardware(vector<long> &attr_list) entering... " << endl; + /*----- PROTECTED REGION ID(PZ116E::read_attr_hardware) ENABLED START -----*/ + + // Add your own code + + /*----- PROTECTED REGION END -----*/ // PZ116E::read_attr_hardware +} +//-------------------------------------------------------- +/** + * Method : PZ116E::write_attr_hardware() + * Description : Hardware writing for attributes + */ +//-------------------------------------------------------- +void PZ116E::write_attr_hardware(TANGO_UNUSED(vector<long> &attr_list)) +{ + DEBUG_STREAM << "PZ116E::write_attr_hardware(vector<long> &attr_list) entering... " << endl; + /*----- PROTECTED REGION ID(PZ116E::write_attr_hardware) ENABLED START -----*/ + + // Add your own code + + /*----- PROTECTED REGION END -----*/ // PZ116E::write_attr_hardware +} + +//-------------------------------------------------------- +/** + * Read attribute RtMode related method + * Description: If enabled, do not readback position, do not check errors in mov command + * + * Data type: Tango::DevBoolean + * Attr type: Scalar + */ +//-------------------------------------------------------- +void PZ116E::read_RtMode(Tango::Attribute &attr) +{ + DEBUG_STREAM << "PZ116E::read_RtMode(Tango::Attribute &attr) entering... " << endl; + /*----- PROTECTED REGION ID(PZ116E::read_RtMode) ENABLED START -----*/ + + // Set the attribute value + attr.set_value(attr_RtMode_read); + + /*----- PROTECTED REGION END -----*/ // PZ116E::read_RtMode +} +//-------------------------------------------------------- +/** + * Write attribute RtMode related method + * Description: If enabled, do not readback position, do not check errors in mov command + * + * Data type: Tango::DevBoolean + * Attr type: Scalar + */ +//-------------------------------------------------------- +void PZ116E::write_RtMode(Tango::WAttribute &attr) +{ + DEBUG_STREAM << "PZ116E::write_RtMode(Tango::WAttribute &attr) entering... " << endl; + // Retrieve write value + Tango::DevBoolean w_val; + attr.get_write_value(w_val); + /*----- PROTECTED REGION ID(PZ116E::write_RtMode) ENABLED START -----*/ + /* clean errors */ + try { + check_err(); + } + catch(Tango::DevFailed e) {} + + if (closedLoop) { + if (w_val) { + /* disable drift compensation */ + write_read((char *)"DCO A 0\r",NULL,false,0); + } + else { + /* enable drift compensation */ + write_read((char *)"DCO A 1\r",NULL,false,0); + } + check_err(); + } + + *attr_RtMode_read = w_val; + + /*----- PROTECTED REGION END -----*/ // PZ116E::write_RtMode +} +//-------------------------------------------------------- +/** + * Read attribute Position related method + * Description: + * + * Data type: Tango::DevDouble + * Attr type: Scalar + */ +//-------------------------------------------------------- +void PZ116E::read_Position(Tango::Attribute &attr) +{ + DEBUG_STREAM << "PZ116E::read_Position(Tango::Attribute &attr) entering... " << endl; + /*----- PROTECTED REGION ID(PZ116E::read_Position) ENABLED START -----*/ + + // Set the attribute value + attr.set_value(attr_Position_read); + + /*----- PROTECTED REGION END -----*/ // PZ116E::read_Position +} +//-------------------------------------------------------- +/** + * Write attribute Position related method + * Description: + * + * Data type: Tango::DevDouble + * Attr type: Scalar + */ +//-------------------------------------------------------- +void PZ116E::write_Position(Tango::WAttribute &attr) +{ + DEBUG_STREAM << "PZ116E::write_Position(Tango::WAttribute &attr) entering... " << endl; + // Retrieve write value + Tango::DevDouble w_val; + attr.get_write_value(w_val); + /*----- PROTECTED REGION ID(PZ116E::write_Position) ENABLED START -----*/ + char instr[PZ116E_STRING_SIZE]; + if (closedLoop) { + sprintf(instr,"MOV A %.3f\r", (w_val / um2PsConvFactor)); + } + else { + sprintf(instr,"SVA A %.1f\r", (w_val / um2PsConvFactor)); + } + write_read(instr,NULL,false,0); + + if (*attr_RtMode_read) { + *attr_Position_read = w_val; + } + else { + check_err(); + } + + /*----- PROTECTED REGION END -----*/ // PZ116E::write_Position +} +//-------------------------------------------------------- +/** + * Read attribute IdentityNumber related method + * Description: + * + * Data type: Tango::DevString + * Attr type: Scalar + */ +//-------------------------------------------------------- +void PZ116E::read_IdentityNumber(Tango::Attribute &attr) +{ + DEBUG_STREAM << "PZ116E::read_IdentityNumber(Tango::Attribute &attr) entering... " << endl; + /*----- PROTECTED REGION ID(PZ116E::read_IdentityNumber) ENABLED START -----*/ + + // Set the attribute value + + attr.set_value(attr_IdentityNumber_read); + + /*----- PROTECTED REGION END -----*/ // PZ116E::read_IdentityNumber +} +//-------------------------------------------------------- +/** + * Read attribute OneshotWaveform related method + * Description: + * + * Data type: Tango::DevBoolean + * Attr type: Scalar + */ +//-------------------------------------------------------- +void PZ116E::read_OneshotWaveform(Tango::Attribute &attr) +{ + DEBUG_STREAM << "PZ116E::read_OneshotWaveform(Tango::Attribute &attr) entering... " << endl; + /*----- PROTECTED REGION ID(PZ116E::read_OneshotWaveform) ENABLED START -----*/ + + // Set the attribute value + attr.set_value(attr_OneshotWaveform_read); + + /*----- PROTECTED REGION END -----*/ // PZ116E::read_OneshotWaveform +} +//-------------------------------------------------------- +/** + * Write attribute OneshotWaveform related method + * Description: + * + * Data type: Tango::DevBoolean + * Attr type: Scalar + */ +//-------------------------------------------------------- +void PZ116E::write_OneshotWaveform(Tango::WAttribute &attr) +{ + DEBUG_STREAM << "PZ116E::write_OneshotWaveform(Tango::WAttribute &attr) entering... " << endl; + // Retrieve write value + Tango::DevBoolean w_val; + attr.get_write_value(w_val); + /*----- PROTECTED REGION ID(PZ116E::write_OneshotWaveform) ENABLED START -----*/ + + * attr_OneshotWaveform_read = w_val; + + /*----- PROTECTED REGION END -----*/ // PZ116E::write_OneshotWaveform +} +//-------------------------------------------------------- +/** + * Read attribute Stat related method + * Description: 0) moving=true. not moving=false + * 1) comm. error=true comm. ok=false + * + * + * Data type: Tango::DevBoolean + * Attr type: Spectrum max = 32 + */ +//-------------------------------------------------------- +void PZ116E::read_Stat(Tango::Attribute &attr) +{ + DEBUG_STREAM << "PZ116E::read_Stat(Tango::Attribute &attr) entering... " << endl; + /*----- PROTECTED REGION ID(PZ116E::read_Stat) ENABLED START -----*/ + + // Set the attribute value + + attr.set_value(attr_Stat_read, PZ116E_NUM_STATES); + + /*----- PROTECTED REGION END -----*/ // PZ116E::read_Stat +} +//-------------------------------------------------------- +/** + * Read attribute Waveform related method + * Description: + * + * Data type: Tango::DevDouble + * Attr type: Spectrum max = 256 + */ +//-------------------------------------------------------- +void PZ116E::read_Waveform(Tango::Attribute &attr) +{ + DEBUG_STREAM << "PZ116E::read_Waveform(Tango::Attribute &attr) entering... " << endl; + /*----- PROTECTED REGION ID(PZ116E::read_Waveform) ENABLED START -----*/ + + // Set the attribute value + attr.set_value(attr_Waveform_read,wsize); + + /*----- PROTECTED REGION END -----*/ // PZ116E::read_Waveform +} +//-------------------------------------------------------- +/** + * Write attribute Waveform related method + * Description: + * + * Data type: Tango::DevDouble + * Attr type: Spectrum max = 256 + */ +//-------------------------------------------------------- +void PZ116E::write_Waveform(Tango::WAttribute &attr) +{ + DEBUG_STREAM << "PZ116E::write_Waveform(Tango::WAttribute &attr) entering... " << endl; + // Retrieve number of write values + int w_length = attr.get_write_value_length(); + + // Retrieve pointer on write values (Do not delete !) + const Tango::DevDouble *w_val; + attr.get_write_value(w_val); + /*----- PROTECTED REGION ID(PZ116E::write_Waveform) ENABLED START -----*/ + /* clean errors */ + try { + check_err(); + } + catch(Tango::DevFailed e) {} + + + /* load waveform */ + char instr[PZ116E_STRING_SIZE], outstr[PZ116E_STRING_SIZE]; + for (int i = 0; i < w_length; i++) { + sprintf(instr,"SWT A %d %.3f\r", i, w_val[i]/um2PsConvFactor); + write_read(instr, outstr, true, 10000); + if (outstr[0] != '0') { + TangoSys_MemStream out_stream; + out_stream << "Failed to write waveform position " << i << ", value=" << w_val[i] << ends; + Tango::Except::throw_exception( + out_stream.str(), (const char *) "Failed to write waveform", + (const char *) "Z116E::write_Waveform()", Tango::ERR); + } + } + if (*attr_OneshotWaveform_read) { + for (int i = w_length; i < 256; i++) { + sprintf(instr,"SWT A %d %.3f\r", i, w_val[w_length-1]/um2PsConvFactor); + write_read(instr, outstr, true, 10000); + if (outstr[0] != '0') { + TangoSys_MemStream out_stream; + out_stream << "Failed to write waveform position " << i << ", value=" << w_val[i] << ends; + Tango::Except::throw_exception( + out_stream.str(), (const char *) "Failed to write waveform", + (const char *) "Z116E::write_Waveform()", Tango::ERR); + } + } + } + check_err(); + + for (int i = 0; i < w_length; i++) + attr_Waveform_read[i] = w_val[i]; + + wsize = w_length; + + + + /*----- PROTECTED REGION END -----*/ // PZ116E::write_Waveform +} + +//-------------------------------------------------------- +/** + * Method : PZ116E::add_dynamic_attributes() + * Description : Create the dynamic attributes if any + * for specified device. + */ +//-------------------------------------------------------- +void PZ116E::add_dynamic_attributes() +{ + /*----- PROTECTED REGION ID(PZ116E::add_dynamic_attributes) ENABLED START -----*/ + + // Add your own code to create and add dynamic attributes if any + + /*----- PROTECTED REGION END -----*/ // PZ116E::add_dynamic_attributes +} + +//-------------------------------------------------------- +/** + * Command Forward related method + * Description: Move forward + * + * @param argin + */ +//-------------------------------------------------------- +void PZ116E::forward(Tango::DevDouble argin) +{ + DEBUG_STREAM << "PZ116E::Forward() - " << device_name << endl; + /*----- PROTECTED REGION ID(PZ116E::forward) ENABLED START -----*/ + + // Add your own code + char instr[PZ116E_STRING_SIZE]; + sprintf(instr,"MVR A %.3f\r", (argin / um2PsConvFactor)); + write_read(instr,NULL,false,0); + /*----- PROTECTED REGION END -----*/ // PZ116E::forward +} +//-------------------------------------------------------- +/** + * Command Backward related method + * Description: Move backward + * + * @param argin + */ +//-------------------------------------------------------- +void PZ116E::backward(Tango::DevDouble argin) +{ + DEBUG_STREAM << "PZ116E::Backward() - " << device_name << endl; + /*----- PROTECTED REGION ID(PZ116E::backward) ENABLED START -----*/ + + // Add your own code + char instr[PZ116E_STRING_SIZE]; + sprintf(instr,"MVR A %.3f\r", -(argin / um2PsConvFactor)); + write_read(instr,NULL,false,0); + /*----- PROTECTED REGION END -----*/ // PZ116E::backward +} +//-------------------------------------------------------- +/** + * Command Stop related method + * Description: Stop motion + * + */ +//-------------------------------------------------------- +void PZ116E::stop() +{ + DEBUG_STREAM << "PZ116E::Stop() - " << device_name << endl; + /*----- PROTECTED REGION ID(PZ116E::stop) ENABLED START -----*/ + + // Add your own code + char instr[2] = {24, '\r'}; + write_read(instr,NULL,false,0); + + /*----- PROTECTED REGION END -----*/ // PZ116E::stop +} +//-------------------------------------------------------- +/** + * Command Reset related method + * Description: Reset controller + * + */ +//-------------------------------------------------------- +void PZ116E::reset() +{ + DEBUG_STREAM << "PZ116E::Reset() - " << device_name << endl; + /*----- PROTECTED REGION ID(PZ116E::reset) ENABLED START -----*/ + + // Add your own code + /* clean errors */ + try { + check_err(); + } + catch(Tango::DevFailed e) {} + + write_read((char *)"RST\r",NULL,false,0); + clock_gettime(CLOCK_MONOTONIC, &last_reset_time); + attr_Stat_read[PZ116E_STATE_RESET] = true; + + /*----- PROTECTED REGION END -----*/ // PZ116E::reset +} +//-------------------------------------------------------- +/** + * Command StartWaveform related method + * Description: + * + */ +//-------------------------------------------------------- +void PZ116E::start_waveform() +{ + DEBUG_STREAM << "PZ116E::StartWaveform() - " << device_name << endl; + /*----- PROTECTED REGION ID(PZ116E::start_waveform) ENABLED START -----*/ + + // Add your own code + char instr[PZ116E_STRING_SIZE], outstr[PZ116E_STRING_SIZE]; + + try { + write_read((char *)"WTO A 0\r",NULL,false,0); + /* go to start position */ + sprintf(instr,"MOV A %.3f\r", attr_Waveform_read[0]/um2PsConvFactor); + write_read(instr, NULL, false,0); + /* check errors */ + check_err(); + /* wait until arrived on target */ + int count = 0; + while (count < 20) { + write_read((char *)"ONT? A\r",outstr,true,0); + if (outstr[0] == '1') break; + count++; usleep(50000); + } + if (count >= 20) { + TangoSys_MemStream out_stream; + out_stream << "Can't reach scan start value " << attr_Waveform_read[0] << ends; + Tango::Except::throw_exception( + out_stream.str(), (const char *) "Failed to start scan", + (const char *) "Z116E::start_waveform()", Tango::ERR); + } + write_read((char *)"SPA A 12 0 \r",NULL,false,0); + /* start waveform on trigger */ + if (*attr_OneshotWaveform_read) + sprintf(instr,"WTO A 255 0\r"); + else + sprintf(instr,"WTO A %d 0\r", (int)wsize); + write_read(instr,NULL,false,0); + /* check errors */ + check_err(); + } + catch(Tango::DevFailed &e) { + Tango::Except::re_throw_exception(e, + (const char *)"Error from serial line", + (const char *)"Can't start scan", + (const char *) "PZ116E::start_waveform()", Tango::ERR); + } + /* disable realtime mode during trigger scan */ + backup_rt_mode = *attr_RtMode_read; + *attr_RtMode_read = false; + attr_Stat_read[PZ116E_STATE_SCAN_START] = true; + + /*----- PROTECTED REGION END -----*/ // PZ116E::start_waveform +} +//-------------------------------------------------------- +/** + * Command StopWaveform related method + * Description: + * + */ +//-------------------------------------------------------- +void PZ116E::stop_waveform() +{ + DEBUG_STREAM << "PZ116E::StopWaveform() - " << device_name << endl; + /*----- PROTECTED REGION ID(PZ116E::stop_waveform) ENABLED START -----*/ + + // Add your own code + /* move on trigger */ + write_read((char *)"WTO A 0\r",NULL,false,0); + + if (attr_Stat_read[PZ116E_STATE_SCAN_START] == true) { + attr_Stat_read[PZ116E_STATE_SCAN_START] = false; + *attr_RtMode_read = backup_rt_mode ; + start_wave_idx = 0; + stop_wave_idx = 0; + if (*attr_RtMode_read) { + *attr_Position_read = attr_Waveform_read[wsize-1]; + attr_position->set_write_value(attr_Waveform_read[wsize-1]); + } + } + + /*----- PROTECTED REGION END -----*/ // PZ116E::stop_waveform +} +//-------------------------------------------------------- +/** + * Command SendCmd related method + * Description: + * + * @param argin + * @returns + */ +//-------------------------------------------------------- +Tango::DevString PZ116E::send_cmd(Tango::DevString argin) +{ + Tango::DevString argout; + DEBUG_STREAM << "PZ116E::SendCmd() - " << device_name << endl; + /*----- PROTECTED REGION ID(PZ116E::send_cmd) ENABLED START -----*/ + + // Add your own code + char strin[1000], strout[1000]; + bool readback = false; + if (strlen((char*) argin) >= 999) { + Tango::Except::throw_exception( + (const char *) "Failed to send command", + (const char *) "Too large string", + (const char *) "PZ116E::send_cmd", Tango::ERR); + } + memset(strout, 0, 1000); + sprintf(strin,"%s\r",(char *)argin); + for (unsigned int i = 0; i < strlen(strin); i++) { + if (strin[i] == '?') + readback = true; + } + write_read(strin, strout,readback, 10000); + + argout = CORBA::string_dup(strout); + + /*----- PROTECTED REGION END -----*/ // PZ116E::send_cmd + return argout; +} + +/*----- PROTECTED REGION ID(PZ116E::namespace_ending) ENABLED START -----*/ + + // Additional Methods + +//+------------------------------------------------------------------ +/** + * method: PZ116E::write_read + * + * description: method to write read from twt ampl + * + */ +//+------------------------------------------------------------------ +void PZ116E::write_read(char *instr, char *outstr, bool rx, long plus_usleep) +{ + DEBUG_STREAM << "PZ116E::write_read(): entering... !" << endl; + + // Add your own code to control device here + int in_len = strlen(instr); + + INFO_STREAM<< "instr: " << instr << endl; + + if (instr[in_len-1] != 13) { + instr[in_len] = 13; /* add CR(13) */ + } + + mutex_cmd->lock(); + + if (write(tty, instr, in_len) != in_len) { + INFO_STREAM << "write_read(): write error, " << instr << endl; + attr_Stat_read[PZ116E_STATE_COMM_ERR] = true; + mutex_cmd->unlock(); + Tango::Except::throw_exception( + (const char *) "Serial communication error", + (const char *) "Error writing to serial line", + (const char *) "PZ116E::write_read", Tango::ERR); + + } + + usleep(txRxSleep + plus_usleep); /* sleep between tx and rx, sleep also from txrx handshakes */ + + if (!rx) { + mutex_cmd->unlock(); + return; + } + + memset(outstr, 0, PZ116E_STRING_SIZE); + + if (read(tty, outstr, PZ116E_STRING_SIZE) == 0) { + INFO_STREAM << "Error (rx): no data from serial line " << serialLine << endl; + attr_Stat_read[PZ116E_STATE_COMM_ERR] = true; + mutex_cmd->unlock(); + Tango::Except::throw_exception( + (const char *) "Serial communication error", + (const char *) "No data from serial line", + (const char *) "PZ116E::write_read", Tango::ERR); + } + + /* look for LF(10) char */ + long found_flag = 0; + for (unsigned int i = 0; i < strlen(outstr); i++) { + if (outstr[i] == 10) { + outstr[i] = 0; + found_flag++; + } + } + + /* it must be only one LF */ + if (found_flag != 1) { + INFO_STREAM << "Error (rx): corrupted string: " << outstr << endl; + attr_Stat_read[PZ116E_STATE_COMM_ERR] = true; + mutex_cmd->unlock(); + Tango::Except::throw_exception( + (const char *) "Serial communication error", + (const char *) "Corrupted string from serial line", + (const char *) "PZ116E::write_read", Tango::ERR); + } + + attr_Stat_read[PZ116E_STATE_COMM_ERR] = false; + mutex_cmd->unlock(); + + INFO_STREAM << "outstr: " << outstr << endl; + +} + + +//+------------------------------------------------------------------ +/** + * method: PZ116E::open_tty + * + * description: + * + */ +//+------------------------------------------------------------------ +bool PZ116E::open_tty(void) +{ + tty = 0; + + if ((tty = open(serialLine.c_str(), O_RDWR | O_NOCTTY | O_NONBLOCK)) < 0) { + printf("PZ116E::open_tty: error opening %s\n", serialLine.c_str()); + return false; + } + else { + printf("%s opened successfully (fd=%d)\n",serialLine.c_str(),tty); + } + + /* save current modem settings */ + tcgetattr(tty, &attr_tty); + + attr_tty.c_cflag = B115200 | CS8 | CLOCAL | CREAD; + + /* Ignore bytes with parity errors and make terminal raw and dumb */ + attr_tty.c_iflag = IGNPAR; + + /* Raw output. */ + attr_tty.c_oflag = 0; + + /* Don't echo characters and don't generate signals. */ + attr_tty.c_lflag = 0; + attr_tty.c_cc[VMIN] = 0; + attr_tty.c_cc[VTIME] = 0; /* minimum time to read chars after their arrival */ + + /* now clean the modem line and activate the settings for modem */ + tcflush(tty, TCIFLUSH); + tcsetattr(tty, TCSANOW, &attr_tty); + + return true; + +} + + +//+------------------------------------------------------------------ +/** + * method: PZ116E::close_tty + * + * description: + * + */ +//+------------------------------------------------------------------ +void PZ116E::close_tty(void) +{ + if (tty != 0) + close(tty); + +} + + +//+------------------------------------------------------------------ +/** + * method: PZ116E::check_err + * + * description: method to check cmd error + * + */ +//+------------------------------------------------------------------ +void PZ116E::check_err() +{ + char outstr[PZ116E_STRING_SIZE]; + write_read((char *)"ERR?\r",outstr,true,0); + + if (outstr[0] == '0') + return; + + for (int i = 0; i < PZ116E_NUM_ERRORS/2 ; i++) { + if ((strcmp(err_msg_table[i*2], outstr) == 0)) { + TangoSys_MemStream out_stream; + out_stream << err_msg_table[i*2+1] << ends; + Tango::Except::throw_exception( + out_stream.str(), + (const char *) "Command failed", + (const char *) "PZ116E::check_err", Tango::ERR); + } + } + +} + + +//+------------------------------------------------------------------ +/** + * method: PZ116E::init_pi + * + * description: method to check cmd error + * + */ +//+------------------------------------------------------------------ +void PZ116E::init_pi() +{ + char instr[PZ116E_STRING_SIZE], outstr[PZ116E_STRING_SIZE]; + + /* disable trigger mode */ + write_read((char *)"WTO A 0\r",outstr,false,0); + /* enable close loop */ + if (closedLoop) { + write_read((char *)"SVO A 1\r",outstr,false,0); + } + else { + write_read((char *)"SVO A 0\r",outstr,false,0); + } + /* disable move on trigger */ + write_read((char *)"MVT A 0\r",outstr,false,0); + /* get identity number */ + write_read((char *)"*IDN?\r",idn_name,true,0); + + bool wsize_found = false; + for (int i = 0; i < 256; i++) { + sprintf(instr,"SWT? A %d\r",255-i); + write_read(instr ,outstr, true, 10000); + attr_Waveform_read[255-i] = (double)atof(outstr)*um2PsConvFactor; + if ((attr_Waveform_read[255] != attr_Waveform_read[255-i]) && (wsize_found == false)) { + wsize_found = true; + wsize = 255 - i + 2; + } + } + + + check_err(); + +} + + +//+------------------------------------------------------------------ +/** + * method: PZ116E::set_DevState + * + * description: method to check cmd error + * + */ +//+------------------------------------------------------------------ +void PZ116E::set_DevState() +{ + + int exp_time; + + std::stringstream s; + + if (*attr_RtMode_read) { + s << "RT mode enabled" << endl; + set_status(s.str()); + return; + } + + if (attr_Stat_read[PZ116E_STATE_SCAN_START]) + exp_time = 250000; + else + exp_time = 500000; + + struct timespec now; + clock_gettime(CLOCK_MONOTONIC, &now); + + if (abs((now.tv_sec - last_state_time.tv_sec)*1000000+(now.tv_nsec - last_state_time.tv_nsec)/1000) < exp_time) + return; + + last_state_time.tv_sec = now.tv_sec; + + /* get position */ + try { + char outstr[PZ116E_STRING_SIZE]; + /* get real position */ + if (closedLoop) { + write_read((char *)"POS? A\r",outstr,true,0); + } + else { + write_read((char *)"SVA? A\r",outstr,true,0); + } + *attr_Position_read = um2PsConvFactor * (double)atof(outstr); + /* get readback setting */ + + if (closedLoop) + write_read((char *)"MOV? A\r",outstr,true,0); + else + write_read((char *)"SVA? A\r",outstr,true,0); + attr_position->set_write_value((double)atof(outstr)); + /* get on target status */ + write_read((char *)"ONT? A\r",outstr,true,0); + if ((outstr[0] == '0') && closedLoop) { + set_state(Tango::MOVING); + s << "Piezo MOVING" << endl; + } + else { + set_state(Tango::ON); + s << "Piezo ON target" << endl; + } + + /* get running waveform on trigger status */ + write_read((char *)"WTO? A\r",outstr,true,0); + if (outstr[0] != '0') { + set_state(Tango::RUNNING); + s << "Waveform RUNNING" << endl; + } + + if (attr_Stat_read[PZ116E_STATE_RESET]) { + set_state(Tango::INIT); + s << "INIT procedure (" << 10 - (now.tv_sec-last_reset_time.tv_sec) << "sec.)" << endl; + } + + } + catch(Tango::DevFailed e) { + set_state(Tango::FAULT); + s << "Communication breakdown" << endl; + } + + /* init after a reset */ + if (((now.tv_sec-last_reset_time.tv_sec) > 10) && attr_Stat_read[PZ116E_STATE_RESET]) { + try { + init_pi(); + if (closedLoop) { + write_read((char *)"MOV A 0\r",NULL,false,0); + } + else { + //write_read((char *)"SVA A 0\r",NULL,false,0); + } + attr_Stat_read[PZ116E_STATE_RESET] = false; + } + catch(Tango::DevFailed e) {} + } + + + if (*attr_OneshotWaveform_read && (get_state() != (Tango::FAULT)) && (attr_Stat_read[PZ116E_STATE_SCAN_START] == true)) { + /* if end position target differs by 1 um then disable triggered scan */ + if ((fabs(*attr_Position_read - attr_Waveform_read[wsize-1])/um2PsConvFactor) < 0.1) { + stop_waveform(); + } + } + + set_status(s.str()); + +} + + /*----- PROTECTED REGION END -----*/ // PZ116E::namespace_ending +} // namespace diff --git a/src/PZ116E.h b/src/PZ116E.h new file mode 100644 index 0000000000000000000000000000000000000000..02161f64a78a36dd5a3be69bd5ea0e860627bb53 --- /dev/null +++ b/src/PZ116E.h @@ -0,0 +1,335 @@ +/*----- PROTECTED REGION ID(PZ116E.h) ENABLED START -----*/ +//============================================================================= +// +// file : PZ116E.h +// +// description : Include for the PZ116E class. +// +// project : PI Piezo PZ116E controller device server. +// +// $Author: giulio $ +// +// $Revision: 1.3 $ +// $Date: 2015-08-27 14:51:04 $ +// +// SVN only: +// $HeadURL: $ +// +// CVS only: +// $Source: /home/cvsadm/cvsroot/fermi/servers/pz116e/src/PZ116E.h,v $ +// $Log: PZ116E.h,v $ +// Revision 1.3 2015-08-27 14:51:04 giulio +// Supported open-loop mode +// +// Revision 1.2 2012-06-07 09:57:21 giulio +// Added status strings, load waveform in init procedure +// +// Revision 1.1.1.1 2012-06-06 14:03:00 giulio +// First release +// +// +//============================================================================= +// This file is generated by POGO +// (Program Obviously used to Generate tango Object) +//============================================================================= + + +#ifndef PZ116E_H +#define PZ116E_H + + +#include <termios.h> +#include <stdio.h> +#include <unistd.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <time.h> +#include <signal.h> +#include <math.h> + +#include <tango.h> + +#define PZ116E_STRING_SIZE 50 + +#define PZ116E_NUM_STATES 4 +#define PZ116E_STATE_MOVING 0 +#define PZ116E_STATE_COMM_ERR 1 +#define PZ116E_STATE_SCAN_START 2 +#define PZ116E_STATE_RESET 3 + +#define PZ116E_NUM_ERRORS 42 /* 21 errors x 2 */ +#define PZ116E_ERR_MSG_SIZE 200 + + +/*----- PROTECTED REGION END -----*/ // PZ116E.h + +/** + * PZ116E class description: + * PI Piezo PZ116E controller device server + */ + +namespace PZ116E_ns +{ +/*----- PROTECTED REGION ID(PZ116E::Additional Class Declarations) ENABLED START -----*/ + + // Additional Class Declarations + + /*----- PROTECTED REGION END -----*/ // PZ116E::Additional Class Declarations + +class PZ116E : public TANGO_BASE_CLASS +{ + +/*----- PROTECTED REGION ID(PZ116E::Data Members) ENABLED START -----*/ + + // Add your own data members + omni_mutex::omni_mutex *mutex_cmd; + struct termios attr_tty; + int tty; + struct timespec last_state_time, last_reset_time, last_pos_time; + Tango::WAttribute *attr_position; + long wsize; + bool backup_rt_mode; + char idn_name[PZ116E_STRING_SIZE]; + long start_wave_idx, stop_wave_idx; + /*----- PROTECTED REGION END -----*/ // PZ116E::Data Members + +// Device property data members +public: + // InitCommand: + vector<string> initCommand; + // SerialLine: Linux serial device (ex: /dev/ttyS0) + string serialLine; + // Um2PsConvFactor: Conversion factor ps = Um2PsConvFactor * um + Tango::DevDouble um2PsConvFactor; + // TxRxSleep: ms to sleep between tx and rx + Tango::DevLong txRxSleep; + // ClosedLoop: + Tango::DevBoolean closedLoop; + +// Attribute data members +public: + Tango::DevBoolean *attr_RtMode_read; + Tango::DevDouble *attr_Position_read; + Tango::DevString *attr_IdentityNumber_read; + Tango::DevBoolean *attr_OneshotWaveform_read; + Tango::DevBoolean *attr_Stat_read; + Tango::DevDouble *attr_Waveform_read; + +// Constructors and destructors +public: + /** + * Constructs a newly device object. + * + * @param cl Class. + * @param s Device Name + */ + PZ116E(Tango::DeviceClass *cl,string &s); + /** + * Constructs a newly device object. + * + * @param cl Class. + * @param s Device Name + */ + PZ116E(Tango::DeviceClass *cl,const char *s); + /** + * Constructs a newly device object. + * + * @param cl Class. + * @param s Device name + * @param d Device description. + */ + PZ116E(Tango::DeviceClass *cl,const char *s,const char *d); + /** + * The device object destructor. + */ + ~PZ116E() {delete_device();}; + + +// Miscellaneous methods +public: + /* + * will be called at device destruction or at init command. + */ + void delete_device(); + /* + * Initialize the device + */ + virtual void init_device(); + /* + * Read the device properties from database + */ + void get_device_property(); + /* + * Always executed method before execution command method. + */ + virtual void always_executed_hook(); + + +// Attribute methods +public: + //-------------------------------------------------------- + /* + * Method : PZ116E::read_attr_hardware() + * Description : Hardware acquisition for attributes. + */ + //-------------------------------------------------------- + virtual void read_attr_hardware(vector<long> &attr_list); + //-------------------------------------------------------- + /* + * Method : PZ116E::write_attr_hardware() + * Description : Hardware writing for attributes. + */ + //-------------------------------------------------------- + virtual void write_attr_hardware(vector<long> &attr_list); + +/** + * Attribute RtMode related methods + * Description: If enabled, do not readback position, do not check errors in mov command + * + * Data type: Tango::DevBoolean + * Attr type: Scalar + */ + virtual void read_RtMode(Tango::Attribute &attr); + virtual void write_RtMode(Tango::WAttribute &attr); + virtual bool is_RtMode_allowed(Tango::AttReqType type); +/** + * Attribute Position related methods + * Description: + * + * Data type: Tango::DevDouble + * Attr type: Scalar + */ + virtual void read_Position(Tango::Attribute &attr); + virtual void write_Position(Tango::WAttribute &attr); + virtual bool is_Position_allowed(Tango::AttReqType type); +/** + * Attribute IdentityNumber related methods + * Description: + * + * Data type: Tango::DevString + * Attr type: Scalar + */ + virtual void read_IdentityNumber(Tango::Attribute &attr); + virtual bool is_IdentityNumber_allowed(Tango::AttReqType type); +/** + * Attribute OneshotWaveform related methods + * Description: + * + * Data type: Tango::DevBoolean + * Attr type: Scalar + */ + virtual void read_OneshotWaveform(Tango::Attribute &attr); + virtual void write_OneshotWaveform(Tango::WAttribute &attr); + virtual bool is_OneshotWaveform_allowed(Tango::AttReqType type); +/** + * Attribute Stat related methods + * Description: 0) moving=true. not moving=false + * 1) comm. error=true comm. ok=false + * + * + * Data type: Tango::DevBoolean + * Attr type: Spectrum max = 32 + */ + virtual void read_Stat(Tango::Attribute &attr); + virtual bool is_Stat_allowed(Tango::AttReqType type); +/** + * Attribute Waveform related methods + * Description: + * + * Data type: Tango::DevDouble + * Attr type: Spectrum max = 256 + */ + virtual void read_Waveform(Tango::Attribute &attr); + virtual void write_Waveform(Tango::WAttribute &attr); + virtual bool is_Waveform_allowed(Tango::AttReqType type); + + + //-------------------------------------------------------- + /** + * Method : PZ116E::add_dynamic_attributes() + * Description : Add dynamic attributes if any. + */ + //-------------------------------------------------------- + void add_dynamic_attributes(); + + + +// Command related methods +public: + /** + * Command Forward related method + * Description: Move forward + * + * @param argin + */ + virtual void forward(Tango::DevDouble argin); + virtual bool is_Forward_allowed(const CORBA::Any &any); + /** + * Command Backward related method + * Description: Move backward + * + * @param argin + */ + virtual void backward(Tango::DevDouble argin); + virtual bool is_Backward_allowed(const CORBA::Any &any); + /** + * Command Stop related method + * Description: Stop motion + * + */ + virtual void stop(); + virtual bool is_Stop_allowed(const CORBA::Any &any); + /** + * Command Reset related method + * Description: Reset controller + * + */ + virtual void reset(); + virtual bool is_Reset_allowed(const CORBA::Any &any); + /** + * Command StartWaveform related method + * Description: + * + */ + virtual void start_waveform(); + virtual bool is_StartWaveform_allowed(const CORBA::Any &any); + /** + * Command StopWaveform related method + * Description: + * + */ + virtual void stop_waveform(); + virtual bool is_StopWaveform_allowed(const CORBA::Any &any); + /** + * Command SendCmd related method + * Description: + * + * @param argin + * @returns + */ + virtual Tango::DevString send_cmd(Tango::DevString argin); + virtual bool is_SendCmd_allowed(const CORBA::Any &any); + + +/*----- PROTECTED REGION ID(PZ116E::Additional Method prototypes) ENABLED START -----*/ + + // Additional Method prototypes + void write_read(char *instr, char *outstr, bool norx, long plus_usleep); + bool open_tty(void); + void close_tty(void); + void check_err(void); + void init_pi(void); + void set_DevState(void); + /*----- PROTECTED REGION END -----*/ // PZ116E::Additional Method prototypes +}; + +/*----- PROTECTED REGION ID(PZ116E::Additional Classes Definitions) ENABLED START -----*/ + + // Additional Classes definitions + + /*----- PROTECTED REGION END -----*/ // PZ116E::Additional Classes Definitions + +} // End of namespace + +#endif // PZ116E_H diff --git a/src/PZ116E.xmi b/src/PZ116E.xmi new file mode 100644 index 0000000000000000000000000000000000000000..ce00ac65f85d3eddc93682af654ea485b9918b36 --- /dev/null +++ b/src/PZ116E.xmi @@ -0,0 +1,188 @@ +<?xml version="1.0" encoding="ASCII"?> +<pogoDsl:PogoSystem xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:pogoDsl="http://www.esrf.fr/tango/pogo/PogoDsl"> + <classes name="PZ116E" pogoRevision="8.3"> + <description description="PI Piezo PZ116E controller device server" title="PI Piezo PZ116E controller device server" sourcePath="/home/giulio/pz116e/src" language="Cpp" filestogenerate="XMI file,Code files" hasMandatoryProperty="false" hasConcreteProperty="true" hasAbstractCommand="false" hasAbstractAttribute="false"> + <inheritances classname="Device_Impl" sourcePath=""/> + <identification contact="at elettra.trieste.it - giulio.gaio" author="giulio.gaio" emailDomain="elettra.trieste.it" classFamily="Motion" siteSpecific="" platform="Unix Like" bus="Serial Line" manufacturer="PI" reference="PZ116E"/> + </description> + <deviceProperties name="InitCommand" description=""> + <type xsi:type="pogoDsl:StringVectorType"/> + <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> + </deviceProperties> + <deviceProperties name="SerialLine" description="Linux serial device (ex: /dev/ttyS0)"> + <type xsi:type="pogoDsl:StringType"/> + <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> + <DefaultPropValue>/dev/ttyS0</DefaultPropValue> + </deviceProperties> + <deviceProperties name="Um2PsConvFactor" description="Conversion factor ps = Um2PsConvFactor * um"> + <type xsi:type="pogoDsl:DoubleType"/> + <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> + <DefaultPropValue>1</DefaultPropValue> + </deviceProperties> + <deviceProperties name="TxRxSleep" description="ms to sleep between tx and rx"> + <type xsi:type="pogoDsl:IntType"/> + <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> + <DefaultPropValue>5000</DefaultPropValue> + </deviceProperties> + <deviceProperties name="ClosedLoop" description=""> + <type xsi:type="pogoDsl:BooleanType"/> + <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> + <DefaultPropValue>true</DefaultPropValue> + </deviceProperties> + <commands name="State" description="This command gets the device state (stored in its device_state data member) and returns it to the caller." execMethod="dev_state" displayLevel="OPERATOR" polledPeriod="0"> + <argin description="none"> + <type xsi:type="pogoDsl:VoidType"/> + </argin> + <argout description="Device state"> + <type xsi:type="pogoDsl:StateType"/> + </argout> + <status abstract="true" inherited="true" concrete="true"/> + </commands> + <commands name="Status" description="This command gets the device status (stored in its device_status data member) and returns it to the caller." execMethod="dev_status" displayLevel="OPERATOR" polledPeriod="0"> + <argin description="none"> + <type xsi:type="pogoDsl:VoidType"/> + </argin> + <argout description="Device status"> + <type xsi:type="pogoDsl:ConstStringType"/> + </argout> + <status abstract="true" inherited="true" concrete="true"/> + </commands> + <commands name="Forward" description="Move forward" execMethod="forward" displayLevel="OPERATOR" polledPeriod="0"> + <argin description=""> + <type xsi:type="pogoDsl:DoubleType"/> + </argin> + <argout description=""> + <type xsi:type="pogoDsl:VoidType"/> + </argout> + <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> + <excludedStates>FAULT</excludedStates> + <excludedStates>RUNNING</excludedStates> + <excludedStates>INIT</excludedStates> + </commands> + <commands name="Backward" description="Move backward" execMethod="backward" displayLevel="OPERATOR" polledPeriod="0"> + <argin description=""> + <type xsi:type="pogoDsl:DoubleType"/> + </argin> + <argout description=""> + <type xsi:type="pogoDsl:VoidType"/> + </argout> + <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> + <excludedStates>FAULT</excludedStates> + <excludedStates>RUNNING</excludedStates> + <excludedStates>INIT</excludedStates> + </commands> + <commands name="Stop" description="Stop motion" execMethod="stop" displayLevel="OPERATOR" polledPeriod="0"> + <argin description=""> + <type xsi:type="pogoDsl:VoidType"/> + </argin> + <argout description=""> + <type xsi:type="pogoDsl:VoidType"/> + </argout> + <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> + <excludedStates>INIT</excludedStates> + </commands> + <commands name="Reset" description="Reset controller" execMethod="reset" displayLevel="OPERATOR" polledPeriod="0"> + <argin description=""> + <type xsi:type="pogoDsl:VoidType"/> + </argin> + <argout description=""> + <type xsi:type="pogoDsl:VoidType"/> + </argout> + <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> + <excludedStates>INIT</excludedStates> + </commands> + <commands name="StartWaveform" description="" execMethod="start_waveform" displayLevel="OPERATOR" polledPeriod="0"> + <argin description=""> + <type xsi:type="pogoDsl:VoidType"/> + </argin> + <argout description=""> + <type xsi:type="pogoDsl:VoidType"/> + </argout> + <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> + </commands> + <commands name="StopWaveform" description="" execMethod="stop_waveform" displayLevel="OPERATOR" polledPeriod="0"> + <argin description=""> + <type xsi:type="pogoDsl:VoidType"/> + </argin> + <argout description=""> + <type xsi:type="pogoDsl:VoidType"/> + </argout> + <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> + </commands> + <commands name="SendCmd" description="" execMethod="send_cmd" displayLevel="OPERATOR" polledPeriod="0"> + <argin description=""> + <type xsi:type="pogoDsl:StringType"/> + </argin> + <argout description=""> + <type xsi:type="pogoDsl:StringType"/> + </argout> + <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> + <excludedStates>INIT</excludedStates> + </commands> + <attributes name="RtMode" attType="Scalar" rwType="READ_WRITE" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" memorized="true" memorizedAtInit="true" allocReadMember="true"> + <dataType xsi:type="pogoDsl:BooleanType"/> + <changeEvent fire="false" libCheckCriteria="true"/> + <archiveEvent fire="false" libCheckCriteria="true"/> + <dataReadyEvent fire="false" libCheckCriteria="true"/> + <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> + <properties description="If enabled, do not readback position, do not check errors in mov command" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/> + </attributes> + <attributes name="Position" attType="Scalar" rwType="READ_WRITE" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true"> + <dataType xsi:type="pogoDsl:DoubleType"/> + <changeEvent fire="false" libCheckCriteria="true"/> + <archiveEvent fire="false" libCheckCriteria="true"/> + <dataReadyEvent fire="false" libCheckCriteria="true"/> + <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> + <properties description="" label="" unit="um" standardUnit="" displayUnit="um" format="%.4f" maxValue="999" minValue="-999" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/> + <readExcludedStates>FAULT</readExcludedStates> + </attributes> + <attributes name="IdentityNumber" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true"> + <dataType xsi:type="pogoDsl:StringType"/> + <changeEvent fire="false" libCheckCriteria="true"/> + <archiveEvent fire="false" libCheckCriteria="true"/> + <dataReadyEvent fire="false" libCheckCriteria="true"/> + <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> + <properties description="" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/> + </attributes> + <attributes name="OneshotWaveform" attType="Scalar" rwType="READ_WRITE" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" memorized="true" memorizedAtInit="true" allocReadMember="true"> + <dataType xsi:type="pogoDsl:BooleanType"/> + <changeEvent fire="false" libCheckCriteria="true"/> + <archiveEvent fire="false" libCheckCriteria="true"/> + <dataReadyEvent fire="false" libCheckCriteria="true"/> + <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> + <properties description="" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/> + </attributes> + <attributes name="Stat" attType="Spectrum" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="32" maxY="" allocReadMember="true"> + <dataType xsi:type="pogoDsl:BooleanType"/> + <changeEvent fire="false" libCheckCriteria="true"/> + <archiveEvent fire="false" libCheckCriteria="true"/> + <dataReadyEvent fire="false" libCheckCriteria="true"/> + <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> + <properties description="0) moving=true. not moving=false
1) comm. error=true comm. ok=false
" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/> + </attributes> + <attributes name="Waveform" attType="Spectrum" rwType="READ_WRITE" displayLevel="OPERATOR" polledPeriod="0" maxX="256" maxY="" allocReadMember="true"> + <dataType xsi:type="pogoDsl:DoubleType"/> + <changeEvent fire="false" libCheckCriteria="true"/> + <archiveEvent fire="false" libCheckCriteria="true"/> + <dataReadyEvent fire="false" libCheckCriteria="true"/> + <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> + <properties description="" label="" unit="um" standardUnit="" displayUnit="um" format="%.4f" maxValue="999" minValue="-999" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/> + </attributes> + <states name="ON" description=""> + <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> + </states> + <states name="FAULT" description=""> + <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> + </states> + <states name="MOVING" description=""> + <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> + </states> + <states name="RUNNING" description=""> + <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> + </states> + <states name="INIT" description=""> + <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> + </states> + <preferences docHome="./doc_html" makefileHome="/usr/local/tango-8.1.2.c/share/pogo/preferences"/> + </classes> +</pogoDsl:PogoSystem> diff --git a/src/PZ116EClass.cpp b/src/PZ116EClass.cpp new file mode 100644 index 0000000000000000000000000000000000000000..2b56dcb80aa41b7cfee3a02193e1cacd2a2e8c34 --- /dev/null +++ b/src/PZ116EClass.cpp @@ -0,0 +1,957 @@ +/*----- PROTECTED REGION ID(PZ116EClass.cpp) ENABLED START -----*/ +static const char *RcsId = "$Id: PZ116EClass.cpp,v 1.3 2015-08-27 14:51:04 giulio Exp $"; +static const char *TagName = "$Name: release_10 $"; +static const char *CvsPath = "$Source: /home/cvsadm/cvsroot/fermi/servers/pz116e/src/PZ116EClass.cpp,v $"; +static const char *SvnPath = "$HeadURL: $"; +static const char *HttpServer = "http://www.esrf.eu/computing/cs/tango/tango_doc/ds_doc/"; +//============================================================================= +// +// file : PZ116EClass.cpp +// +// description : C++ source for the PZ116EClass. A singleton +// class derived from DeviceClass. It implements the +// command list and all properties and methods required +// by the «name» once per process. +// +// project : PI Piezo PZ116E controller device server. +// +// $Author: giulio $ +// +// $Revision: 1.3 $ +// $Date: 2015-08-27 14:51:04 $ +// +// SVN only: +// $HeadURL: $ +// +// CVS only: +// $Source: /home/cvsadm/cvsroot/fermi/servers/pz116e/src/PZ116EClass.cpp,v $ +// $Log: PZ116EClass.cpp,v $ +// Revision 1.3 2015-08-27 14:51:04 giulio +// Supported open-loop mode +// +// Revision 1.2 2012-06-07 09:57:21 giulio +// Added status strings, load waveform in init procedure +// +// Revision 1.1.1.1 2012-06-06 14:03:00 giulio +// First release +// +// +//============================================================================= +// This file is generated by POGO +// (Program Obviously used to Generate tango Object) +//============================================================================= + + +#include <PZ116EClass.h> + +/*----- PROTECTED REGION END -----*/ // PZ116EClass.cpp + +//------------------------------------------------------------------- +/** + * Create PZ116EClass singleton and + * return it in a C function for Python usage + */ +//------------------------------------------------------------------- +extern "C" { +#ifdef _TG_WINDOWS_ + +__declspec(dllexport) + +#endif + + Tango::DeviceClass *_create_PZ116E_class(const char *name) { + return PZ116E_ns::PZ116EClass::init(name); + } +} + +namespace PZ116E_ns +{ +//=================================================================== +// Initialize pointer for singleton pattern +//=================================================================== +PZ116EClass *PZ116EClass::_instance = NULL; + +//-------------------------------------------------------- +/** + * method : PZ116EClass::PZ116EClass(string &s) + * description : constructor for the PZ116EClass + * + * @param s The class name + */ +//-------------------------------------------------------- +PZ116EClass::PZ116EClass(string &s):Tango::DeviceClass(s) +{ + cout2 << "Entering PZ116EClass constructor" << endl; + set_default_property(); + write_class_property(); + + /*----- PROTECTED REGION ID(PZ116EClass::constructor) ENABLED START -----*/ + + /*----- PROTECTED REGION END -----*/ // PZ116EClass::constructor + + cout2 << "Leaving PZ116EClass constructor" << endl; +} + +//-------------------------------------------------------- +/** + * method : PZ116EClass::~PZ116EClass() + * description : destructor for the PZ116EClass + */ +//-------------------------------------------------------- +PZ116EClass::~PZ116EClass() +{ + /*----- PROTECTED REGION ID(PZ116EClass::destructor) ENABLED START -----*/ + + /*----- PROTECTED REGION END -----*/ // PZ116EClass::destructor + + _instance = NULL; +} + + +//-------------------------------------------------------- +/** + * method : PZ116EClass::init + * description : Create the object if not already done. + * Otherwise, just return a pointer to the object + * + * @param name The class name + */ +//-------------------------------------------------------- +PZ116EClass *PZ116EClass::init(const char *name) +{ + if (_instance == NULL) + { + try + { + string s(name); + _instance = new PZ116EClass(s); + } + catch (bad_alloc &) + { + throw; + } + } + return _instance; +} + +//-------------------------------------------------------- +/** + * method : PZ116EClass::instance + * description : Check if object already created, + * and return a pointer to the object + */ +//-------------------------------------------------------- +PZ116EClass *PZ116EClass::instance() +{ + if (_instance == NULL) + { + cerr << "Class is not initialised !!" << endl; + exit(-1); + } + return _instance; +} + + + +//=================================================================== +// Command execution method calls +//=================================================================== +//-------------------------------------------------------- +/** + * method : ForwardClass::execute() + * description : method to trigger the execution of the command. + * + * @param device The device on which the command must be executed + * @param in_any The command input data + * + * returns The command output data (packed in the Any object) + */ +//-------------------------------------------------------- +CORBA::Any *ForwardClass::execute(Tango::DeviceImpl *device, const CORBA::Any &in_any) +{ + cout2 << "ForwardClass::execute(): arrived" << endl; + Tango::DevDouble argin; + extract(in_any, argin); + ((static_cast<PZ116E *>(device))->forward(argin)); + return new CORBA::Any(); +} + +//-------------------------------------------------------- +/** + * method : BackwardClass::execute() + * description : method to trigger the execution of the command. + * + * @param device The device on which the command must be executed + * @param in_any The command input data + * + * returns The command output data (packed in the Any object) + */ +//-------------------------------------------------------- +CORBA::Any *BackwardClass::execute(Tango::DeviceImpl *device, const CORBA::Any &in_any) +{ + cout2 << "BackwardClass::execute(): arrived" << endl; + Tango::DevDouble argin; + extract(in_any, argin); + ((static_cast<PZ116E *>(device))->backward(argin)); + return new CORBA::Any(); +} + +//-------------------------------------------------------- +/** + * method : StopClass::execute() + * description : method to trigger the execution of the command. + * + * @param device The device on which the command must be executed + * @param in_any The command input data + * + * returns The command output data (packed in the Any object) + */ +//-------------------------------------------------------- +CORBA::Any *StopClass::execute(Tango::DeviceImpl *device, TANGO_UNUSED(const CORBA::Any &in_any)) +{ + cout2 << "StopClass::execute(): arrived" << endl; + ((static_cast<PZ116E *>(device))->stop()); + return new CORBA::Any(); +} + +//-------------------------------------------------------- +/** + * method : ResetClass::execute() + * description : method to trigger the execution of the command. + * + * @param device The device on which the command must be executed + * @param in_any The command input data + * + * returns The command output data (packed in the Any object) + */ +//-------------------------------------------------------- +CORBA::Any *ResetClass::execute(Tango::DeviceImpl *device, TANGO_UNUSED(const CORBA::Any &in_any)) +{ + cout2 << "ResetClass::execute(): arrived" << endl; + ((static_cast<PZ116E *>(device))->reset()); + return new CORBA::Any(); +} + +//-------------------------------------------------------- +/** + * method : StartWaveformClass::execute() + * description : method to trigger the execution of the command. + * + * @param device The device on which the command must be executed + * @param in_any The command input data + * + * returns The command output data (packed in the Any object) + */ +//-------------------------------------------------------- +CORBA::Any *StartWaveformClass::execute(Tango::DeviceImpl *device, TANGO_UNUSED(const CORBA::Any &in_any)) +{ + cout2 << "StartWaveformClass::execute(): arrived" << endl; + ((static_cast<PZ116E *>(device))->start_waveform()); + return new CORBA::Any(); +} + +//-------------------------------------------------------- +/** + * method : StopWaveformClass::execute() + * description : method to trigger the execution of the command. + * + * @param device The device on which the command must be executed + * @param in_any The command input data + * + * returns The command output data (packed in the Any object) + */ +//-------------------------------------------------------- +CORBA::Any *StopWaveformClass::execute(Tango::DeviceImpl *device, TANGO_UNUSED(const CORBA::Any &in_any)) +{ + cout2 << "StopWaveformClass::execute(): arrived" << endl; + ((static_cast<PZ116E *>(device))->stop_waveform()); + return new CORBA::Any(); +} + +//-------------------------------------------------------- +/** + * method : SendCmdClass::execute() + * description : method to trigger the execution of the command. + * + * @param device The device on which the command must be executed + * @param in_any The command input data + * + * returns The command output data (packed in the Any object) + */ +//-------------------------------------------------------- +CORBA::Any *SendCmdClass::execute(Tango::DeviceImpl *device, const CORBA::Any &in_any) +{ + cout2 << "SendCmdClass::execute(): arrived" << endl; + Tango::DevString argin; + extract(in_any, argin); + return insert((static_cast<PZ116E *>(device))->send_cmd(argin)); +} + + +//=================================================================== +// Properties management +//=================================================================== +//-------------------------------------------------------- +/** + * Method : PZ116EClass::get_class_property() + * Description : Get the class property for specified name. + */ +//-------------------------------------------------------- +Tango::DbDatum PZ116EClass::get_class_property(string &prop_name) +{ + for (unsigned int i=0 ; i<cl_prop.size() ; i++) + if (cl_prop[i].name == prop_name) + return cl_prop[i]; + // if not found, returns an empty DbDatum + return Tango::DbDatum(prop_name); +} + +//-------------------------------------------------------- +/** + * Method : PZ116EClass::get_default_device_property() + * Description : Return the default value for device property. + */ +//-------------------------------------------------------- +Tango::DbDatum PZ116EClass::get_default_device_property(string &prop_name) +{ + for (unsigned 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 : PZ116EClass::get_default_class_property() + * Description : Return the default value for class property. + */ +//-------------------------------------------------------- +Tango::DbDatum PZ116EClass::get_default_class_property(string &prop_name) +{ + for (unsigned 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 : PZ116EClass::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 PZ116EClass::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 = "InitCommand"; + prop_desc = ""; + prop_def = ""; + vect_data.clear(); + 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); + prop_name = "SerialLine"; + prop_desc = "Linux serial device (ex: /dev/ttyS0)"; + prop_def = "/dev/ttyS0"; + vect_data.clear(); + vect_data.push_back("/dev/ttyS0"); + 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); + prop_name = "Um2PsConvFactor"; + prop_desc = "Conversion factor ps = Um2PsConvFactor * um"; + prop_def = "1"; + vect_data.clear(); + vect_data.push_back("1"); + 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); + prop_name = "TxRxSleep"; + prop_desc = "ms to sleep between tx and rx"; + prop_def = "5000"; + vect_data.clear(); + vect_data.push_back("5000"); + 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); + prop_name = "ClosedLoop"; + prop_desc = ""; + prop_def = "true"; + vect_data.clear(); + vect_data.push_back("true"); + if (prop_def.length()>0) + { + Tango::DbDatum data(prop_name); + data << vect_data ; + dev_def_prop.push_back(data); + add_wiz_dev_prop(prop_name, prop_desc, prop_def); + } + else + add_wiz_dev_prop(prop_name, prop_desc); +} + +//-------------------------------------------------------- +/** + * Method : PZ116EClass::write_class_property() + * Description : Set class description fields as property in database + */ +//-------------------------------------------------------- +void PZ116EClass::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("PI Piezo PZ116E controller device server"); + title << str_title; + data.push_back(title); + + // Put Description + Tango::DbDatum description("Description"); + vector<string> str_desc; + str_desc.push_back("PI Piezo PZ116E controller device server"); + description << str_desc; + data.push_back(description); + + // put cvs or svn location + string filename("PZ116E"); + filename += "Class.cpp"; + + // check for cvs information + string src_path(CvsPath); + start = src_path.find("/"); + if (start!=string::npos) + { + end = src_path.find(filename); + if (end>start) + { + string strloc = src_path.substr(start, end-start); + // Check if specific repository + start = strloc.find("/cvsroot/"); + if (start!=string::npos && start>0) + { + string repository = strloc.substr(0, start); + if (repository.find("/segfs/")!=string::npos) + strloc = "ESRF:" + strloc.substr(start, strloc.length()-start); + } + Tango::DbDatum cvs_loc("cvs_location"); + cvs_loc << strloc; + data.push_back(cvs_loc); + } + } + + // check for svn information + else + { + string src_path(SvnPath); + start = src_path.find("://"); + if (start!=string::npos) + { + end = src_path.find(filename); + if (end>start) + { + header = "$HeadURL: "; + start = header.length(); + string strloc = src_path.substr(start, (end-start)); + + Tango::DbDatum svn_loc("svn_location"); + svn_loc << strloc; + data.push_back(svn_loc); + } + } + } + + // Get CVS or SVN revision tag + + // CVS tag + string tagname(TagName); + header = "$Name: "; + start = header.length(); + string endstr(" $"); + + end = tagname.find(endstr); + if (end!=string::npos && end>start) + { + string strtag = tagname.substr(start, end-start); + Tango::DbDatum cvs_tag("cvs_tag"); + cvs_tag << strtag; + data.push_back(cvs_tag); + } + + // SVN tag + string svnpath(SvnPath); + header = "$HeadURL: "; + start = header.length(); + + end = svnpath.find(endstr); + if (end!=string::npos && end>start) + { + string strloc = svnpath.substr(start, end-start); + + string tagstr ("/tags/"); + start = strloc.find(tagstr); + if ( start!=string::npos ) + { + start = start + tagstr.length(); + end = strloc.find(filename); + string strtag = strloc.substr(start, end-start-1); + + Tango::DbDatum svn_tag("svn_tag"); + svn_tag << strtag; + data.push_back(svn_tag); + } + } + + // Get URL location + string httpServ(HttpServer); + if (httpServ.length()>0) + { + Tango::DbDatum db_doc_url("doc_url"); + db_doc_url << httpServ; + data.push_back(db_doc_url); + } + + // Put inheritance + Tango::DbDatum inher_datum("InheritedFrom"); + vector<string> inheritance; + inheritance.push_back("TANGO_BASE_CLASS"); + inher_datum << inheritance; + data.push_back(inher_datum); + + // Call database and and values + get_db_class()->put_property(data); +} + +//=================================================================== +// Factory methods +//=================================================================== + +//-------------------------------------------------------- +/** + * Method : PZ116EClass::device_factory() + * Description : Create the device object(s) + * and store them in the device list + */ +//-------------------------------------------------------- +void PZ116EClass::device_factory(const Tango::DevVarStringArray *devlist_ptr) +{ + /*----- PROTECTED REGION ID(PZ116EClass::device_factory_before) ENABLED START -----*/ + + // Add your own code + + /*----- PROTECTED REGION END -----*/ // PZ116EClass::device_factory_before + + // Create devices and add it into the device list + for (unsigned long i=0 ; i<devlist_ptr->length() ; i++) + { + cout4 << "Device name : " << (*devlist_ptr)[i].in() << endl; + device_list.push_back(new PZ116E(this, (*devlist_ptr)[i])); + } + + // Manage dynamic attributes if any + erase_dynamic_attributes(devlist_ptr, get_class_attr()->get_attr_list()); + + // Export devices to the outside world + for (unsigned long i=1 ; i<=devlist_ptr->length() ; i++) + { + // Add dynamic attributes if any + PZ116E *dev = static_cast<PZ116E *>(device_list[device_list.size()-i]); + dev->add_dynamic_attributes(); + + // Check before if database used. + if ((Tango::Util::_UseDb == true) && (Tango::Util::_FileDb == false)) + export_device(dev); + else + export_device(dev, dev->get_name().c_str()); + } + + /*----- PROTECTED REGION ID(PZ116EClass::device_factory_after) ENABLED START -----*/ + + // Add your own code + + /*----- PROTECTED REGION END -----*/ // PZ116EClass::device_factory_after +} +//-------------------------------------------------------- +/** + * Method : PZ116EClass::attribute_factory() + * Description : Create the attribute object(s) + * and store them in the attribute list + */ +//-------------------------------------------------------- +void PZ116EClass::attribute_factory(vector<Tango::Attr *> &att_list) +{ + /*----- PROTECTED REGION ID(PZ116EClass::attribute_factory_before) ENABLED START -----*/ + + // Add your own code + + /*----- PROTECTED REGION END -----*/ // PZ116EClass::attribute_factory_before + // Attribute : RtMode + RtModeAttrib *rtmode = new RtModeAttrib(); + Tango::UserDefaultAttrProp rtmode_prop; + rtmode_prop.set_description("If enabled, do not readback position, do not check errors in mov command"); + // label not set for RtMode + // unit not set for RtMode + // standard_unit not set for RtMode + // display_unit not set for RtMode + // format not set for RtMode + // max_value not set for RtMode + // min_value not set for RtMode + // max_alarm not set for RtMode + // min_alarm not set for RtMode + // max_warning not set for RtMode + // min_warning not set for RtMode + // delta_t not set for RtMode + // delta_val not set for RtMode + + rtmode->set_default_properties(rtmode_prop); + // Not Polled + rtmode->set_disp_level(Tango::OPERATOR); + rtmode->set_memorized(); + rtmode->set_memorized_init(true); + att_list.push_back(rtmode); + + // Attribute : Position + PositionAttrib *position = new PositionAttrib(); + Tango::UserDefaultAttrProp position_prop; + // description not set for Position + // label not set for Position + position_prop.set_unit("um"); + // standard_unit not set for Position + position_prop.set_display_unit("um"); + position_prop.set_format("%.4f"); + position_prop.set_max_value("999"); + position_prop.set_min_value("-999"); + // max_alarm not set for Position + // min_alarm not set for Position + // max_warning not set for Position + // min_warning not set for Position + // delta_t not set for Position + // delta_val not set for Position + + position->set_default_properties(position_prop); + // Not Polled + position->set_disp_level(Tango::OPERATOR); + // Not Memorized + att_list.push_back(position); + + // Attribute : IdentityNumber + IdentityNumberAttrib *identitynumber = new IdentityNumberAttrib(); + Tango::UserDefaultAttrProp identitynumber_prop; + // description not set for IdentityNumber + // label not set for IdentityNumber + // unit not set for IdentityNumber + // standard_unit not set for IdentityNumber + // display_unit not set for IdentityNumber + // format not set for IdentityNumber + // max_value not set for IdentityNumber + // min_value not set for IdentityNumber + // max_alarm not set for IdentityNumber + // min_alarm not set for IdentityNumber + // max_warning not set for IdentityNumber + // min_warning not set for IdentityNumber + // delta_t not set for IdentityNumber + // delta_val not set for IdentityNumber + + identitynumber->set_default_properties(identitynumber_prop); + // Not Polled + identitynumber->set_disp_level(Tango::OPERATOR); + // Not Memorized + att_list.push_back(identitynumber); + + // Attribute : OneshotWaveform + OneshotWaveformAttrib *oneshotwaveform = new OneshotWaveformAttrib(); + Tango::UserDefaultAttrProp oneshotwaveform_prop; + // description not set for OneshotWaveform + // label not set for OneshotWaveform + // unit not set for OneshotWaveform + // standard_unit not set for OneshotWaveform + // display_unit not set for OneshotWaveform + // format not set for OneshotWaveform + // max_value not set for OneshotWaveform + // min_value not set for OneshotWaveform + // max_alarm not set for OneshotWaveform + // min_alarm not set for OneshotWaveform + // max_warning not set for OneshotWaveform + // min_warning not set for OneshotWaveform + // delta_t not set for OneshotWaveform + // delta_val not set for OneshotWaveform + + oneshotwaveform->set_default_properties(oneshotwaveform_prop); + // Not Polled + oneshotwaveform->set_disp_level(Tango::OPERATOR); + oneshotwaveform->set_memorized(); + oneshotwaveform->set_memorized_init(true); + att_list.push_back(oneshotwaveform); + + // Attribute : Stat + StatAttrib *stat = new StatAttrib(); + Tango::UserDefaultAttrProp stat_prop; + stat_prop.set_description("0) moving=true. not moving=false\n1) comm. error=true comm. ok=false\n"); + // label not set for Stat + // unit not set for Stat + // standard_unit not set for Stat + // display_unit not set for Stat + // format not set for Stat + // max_value not set for Stat + // min_value not set for Stat + // max_alarm not set for Stat + // min_alarm not set for Stat + // max_warning not set for Stat + // min_warning not set for Stat + // delta_t not set for Stat + // delta_val not set for Stat + + stat->set_default_properties(stat_prop); + // Not Polled + stat->set_disp_level(Tango::OPERATOR); + // Not Memorized + att_list.push_back(stat); + + // Attribute : Waveform + WaveformAttrib *waveform = new WaveformAttrib(); + Tango::UserDefaultAttrProp waveform_prop; + // description not set for Waveform + // label not set for Waveform + waveform_prop.set_unit("um"); + // standard_unit not set for Waveform + waveform_prop.set_display_unit("um"); + waveform_prop.set_format("%.4f"); + waveform_prop.set_max_value("999"); + waveform_prop.set_min_value("-999"); + // max_alarm not set for Waveform + // min_alarm not set for Waveform + // max_warning not set for Waveform + // min_warning not set for Waveform + // delta_t not set for Waveform + // delta_val not set for Waveform + + waveform->set_default_properties(waveform_prop); + // Not Polled + waveform->set_disp_level(Tango::OPERATOR); + // Not Memorized + att_list.push_back(waveform); + + // Create a list of static attributes + create_static_attribute_list(get_class_attr()->get_attr_list()); + /*----- PROTECTED REGION ID(PZ116EClass::attribute_factory_after) ENABLED START -----*/ + + // Add your own code + + /*----- PROTECTED REGION END -----*/ // PZ116EClass::attribute_factory_after +} +//-------------------------------------------------------- +/** + * Method : PZ116EClass::command_factory() + * Description : Create the command object(s) + * and store them in the command list + */ +//-------------------------------------------------------- +void PZ116EClass::command_factory() +{ + /*----- PROTECTED REGION ID(PZ116EClass::command_factory_before) ENABLED START -----*/ + + /*----- PROTECTED REGION END -----*/ // PZ116EClass::command_factory_before + + + // Command Forward + ForwardClass *pForwardCmd = + new ForwardClass("Forward", + Tango::DEV_DOUBLE, Tango::DEV_VOID, + "", + "", + Tango::OPERATOR); + command_list.push_back(pForwardCmd); + + // Command Backward + BackwardClass *pBackwardCmd = + new BackwardClass("Backward", + Tango::DEV_DOUBLE, Tango::DEV_VOID, + "", + "", + Tango::OPERATOR); + command_list.push_back(pBackwardCmd); + + // Command Stop + StopClass *pStopCmd = + new StopClass("Stop", + Tango::DEV_VOID, Tango::DEV_VOID, + "", + "", + Tango::OPERATOR); + command_list.push_back(pStopCmd); + + // Command Reset + ResetClass *pResetCmd = + new ResetClass("Reset", + Tango::DEV_VOID, Tango::DEV_VOID, + "", + "", + Tango::OPERATOR); + command_list.push_back(pResetCmd); + + // Command StartWaveform + StartWaveformClass *pStartWaveformCmd = + new StartWaveformClass("StartWaveform", + Tango::DEV_VOID, Tango::DEV_VOID, + "", + "", + Tango::OPERATOR); + command_list.push_back(pStartWaveformCmd); + + // Command StopWaveform + StopWaveformClass *pStopWaveformCmd = + new StopWaveformClass("StopWaveform", + Tango::DEV_VOID, Tango::DEV_VOID, + "", + "", + Tango::OPERATOR); + command_list.push_back(pStopWaveformCmd); + + // Command SendCmd + SendCmdClass *pSendCmdCmd = + new SendCmdClass("SendCmd", + Tango::DEV_STRING, Tango::DEV_STRING, + "", + "", + Tango::OPERATOR); + command_list.push_back(pSendCmdCmd); + + /*----- PROTECTED REGION ID(PZ116EClass::command_factory_after) ENABLED START -----*/ + + /*----- PROTECTED REGION END -----*/ // PZ116EClass::command_factory_after +} + +//=================================================================== +// Dynamic attributes related methods +//=================================================================== + +//-------------------------------------------------------- +/** + * method : PZ116EClass::create_static_attribute_list + * description : Create the a list of static attributes + * + * @param att_list the ceated attribute list + */ +//-------------------------------------------------------- +void PZ116EClass::create_static_attribute_list(vector<Tango::Attr *> &att_list) +{ + for (unsigned long i=0 ; i<att_list.size() ; i++) + { + string att_name(att_list[i]->get_name()); + transform(att_name.begin(), att_name.end(), att_name.begin(), ::tolower); + defaultAttList.push_back(att_name); + } + + cout2 << defaultAttList.size() << " attributes in default list" << endl; + + /*----- PROTECTED REGION ID(PZ116EClass::create_static_att_list) ENABLED START -----*/ + + /*----- PROTECTED REGION END -----*/ // PZ116EClass::create_static_att_list +} + + +//-------------------------------------------------------- +/** + * method : PZ116EClass::erase_dynamic_attributes + * description : delete the dynamic attributes if any. + * + * @param devlist_ptr the device list pointer + * @param list of all attributes + */ +//-------------------------------------------------------- +void PZ116EClass::erase_dynamic_attributes(const Tango::DevVarStringArray *devlist_ptr, vector<Tango::Attr *> &att_list) +{ + Tango::Util *tg = Tango::Util::instance(); + + for (unsigned long i=0 ; i<devlist_ptr->length() ; i++) + { + Tango::DeviceImpl *dev_impl = tg->get_device_by_name(((string)(*devlist_ptr)[i]).c_str()); + PZ116E *dev = static_cast<PZ116E *> (dev_impl); + + vector<Tango::Attribute *> &dev_att_list = dev->get_device_attr()->get_attribute_list(); + vector<Tango::Attribute *>::iterator ite_att; + for (ite_att=dev_att_list.begin() ; ite_att != dev_att_list.end() ; ++ite_att) + { + string att_name((*ite_att)->get_name_lower()); + if ((att_name == "state") || (att_name == "status")) + continue; + vector<string>::iterator ite_str = find(defaultAttList.begin(), defaultAttList.end(), att_name); + if (ite_str == defaultAttList.end()) + { + cout2 << att_name << " is a UNWANTED dynamic attribute for device " << (*devlist_ptr)[i] << endl; + Tango::Attribute &att = dev->get_device_attr()->get_attr_by_name(att_name.c_str()); + dev->remove_attribute(att_list[att.get_attr_idx()], true, false); + --ite_att; + } + } + } + /*----- PROTECTED REGION ID(PZ116EClass::erase_dynamic_attributes) ENABLED START -----*/ + + /*----- PROTECTED REGION END -----*/ // PZ116EClass::erase_dynamic_attributes +} + +//-------------------------------------------------------- +/** + * Method : PZ116EClass::get_attr_by_name() + * Description : returns Tango::Attr * object found by name + */ +//-------------------------------------------------------- +Tango::Attr *PZ116EClass::get_attr_object_by_name(vector<Tango::Attr *> &att_list, string attname) +{ + vector<Tango::Attr *>::iterator it; + for (it=att_list.begin() ; it<att_list.end() ; it++) + if ((*it)->get_name()==attname) + return (*it); + // Attr does not exist + return NULL; +} + + +/*----- PROTECTED REGION ID(PZ116EClass::Additional Methods) ENABLED START -----*/ + + /*----- PROTECTED REGION END -----*/ // PZ116EClass::Additional Methods +} // namespace diff --git a/src/PZ116EClass.h b/src/PZ116EClass.h new file mode 100644 index 0000000000000000000000000000000000000000..6f4ac6c5c56a8c1ae72ed1c072b6477bfc3ce2af --- /dev/null +++ b/src/PZ116EClass.h @@ -0,0 +1,360 @@ +/*----- PROTECTED REGION ID(PZ116EClass.h) ENABLED START -----*/ +//============================================================================= +// +// file : PZ116EClass.h +// +// description : Include for the PZ116EClass root class. +// This class is the singleton class for. +// the PZ116E device class.. +// It contains all properties and methods which the . +// PZ116E requires only once e.g. the commands. +// +// project : PI Piezo PZ116E controller device server. +// +// $Author: giulio $ +// +// $Revision: 1.3 $ +// $Date: 2015-08-27 14:51:04 $ +// +// SVN only: +// $HeadURL: $ +// +// CVS only: +// $Source: /home/cvsadm/cvsroot/fermi/servers/pz116e/src/PZ116EClass.h,v $ +// $Log: PZ116EClass.h,v $ +// Revision 1.3 2015-08-27 14:51:04 giulio +// Supported open-loop mode +// +// Revision 1.2 2012-06-07 09:57:21 giulio +// Added status strings, load waveform in init procedure +// +// Revision 1.1.1.1 2012-06-06 14:03:00 giulio +// First release +// +// +//============================================================================= +// This file is generated by POGO +// (Program Obviously used to Generate tango Object) +//============================================================================= + + +#ifndef PZ116ECLASS_H +#define PZ116ECLASS_H + +#include <tango.h> +#include <PZ116E.h> + +/*----- PROTECTED REGION END -----*/ // PZ116EClass.h + + +namespace PZ116E_ns +{ +/*----- PROTECTED REGION ID(PZ116EClass::classes for dynamic creation) ENABLED START -----*/ + + /*----- PROTECTED REGION END -----*/ // PZ116EClass::classes for dynamic creation + +//========================================= +// Define classes for attributes +//========================================= +// Attribute RtMode class definition +class RtModeAttrib: public Tango::Attr +{ +public: + RtModeAttrib():Attr("RtMode", + Tango::DEV_BOOLEAN, Tango::READ_WRITE) {}; + ~RtModeAttrib() {}; + virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att) + {(static_cast<PZ116E *>(dev))->read_RtMode(att);} + virtual void write(Tango::DeviceImpl *dev,Tango::WAttribute &att) + {(static_cast<PZ116E *>(dev))->write_RtMode(att);} + virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty) + {return (static_cast<PZ116E *>(dev))->is_RtMode_allowed(ty);} +}; + +// Attribute Position class definition +class PositionAttrib: public Tango::Attr +{ +public: + PositionAttrib():Attr("Position", + Tango::DEV_DOUBLE, Tango::READ_WRITE) {}; + ~PositionAttrib() {}; + virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att) + {(static_cast<PZ116E *>(dev))->read_Position(att);} + virtual void write(Tango::DeviceImpl *dev,Tango::WAttribute &att) + {(static_cast<PZ116E *>(dev))->write_Position(att);} + virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty) + {return (static_cast<PZ116E *>(dev))->is_Position_allowed(ty);} +}; + +// Attribute IdentityNumber class definition +class IdentityNumberAttrib: public Tango::Attr +{ +public: + IdentityNumberAttrib():Attr("IdentityNumber", + Tango::DEV_STRING, Tango::READ) {}; + ~IdentityNumberAttrib() {}; + virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att) + {(static_cast<PZ116E *>(dev))->read_IdentityNumber(att);} + virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty) + {return (static_cast<PZ116E *>(dev))->is_IdentityNumber_allowed(ty);} +}; + +// Attribute OneshotWaveform class definition +class OneshotWaveformAttrib: public Tango::Attr +{ +public: + OneshotWaveformAttrib():Attr("OneshotWaveform", + Tango::DEV_BOOLEAN, Tango::READ_WRITE) {}; + ~OneshotWaveformAttrib() {}; + virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att) + {(static_cast<PZ116E *>(dev))->read_OneshotWaveform(att);} + virtual void write(Tango::DeviceImpl *dev,Tango::WAttribute &att) + {(static_cast<PZ116E *>(dev))->write_OneshotWaveform(att);} + virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty) + {return (static_cast<PZ116E *>(dev))->is_OneshotWaveform_allowed(ty);} +}; + +// Attribute Stat class definition +class StatAttrib: public Tango::SpectrumAttr +{ +public: + StatAttrib():SpectrumAttr("Stat", + Tango::DEV_BOOLEAN, Tango::READ, 32) {}; + ~StatAttrib() {}; + virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att) + {(static_cast<PZ116E *>(dev))->read_Stat(att);} + virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty) + {return (static_cast<PZ116E *>(dev))->is_Stat_allowed(ty);} +}; + +// Attribute Waveform class definition +class WaveformAttrib: public Tango::SpectrumAttr +{ +public: + WaveformAttrib():SpectrumAttr("Waveform", + Tango::DEV_DOUBLE, Tango::READ_WRITE, 256) {}; + ~WaveformAttrib() {}; + virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att) + {(static_cast<PZ116E *>(dev))->read_Waveform(att);} + virtual void write(Tango::DeviceImpl *dev,Tango::WAttribute &att) + {(static_cast<PZ116E *>(dev))->write_Waveform(att);} + virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty) + {return (static_cast<PZ116E *>(dev))->is_Waveform_allowed(ty);} +}; + + +//========================================= +// Define classes for commands +//========================================= +// Command Forward class definition +class ForwardClass : public Tango::Command +{ +public: + ForwardClass(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) {}; + + ForwardClass(const char *name, + Tango::CmdArgType in, + Tango::CmdArgType out) + :Command(name,in,out) {}; + ~ForwardClass() {}; + + 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<PZ116E *>(dev))->is_Forward_allowed(any);} +}; + +// Command Backward class definition +class BackwardClass : public Tango::Command +{ +public: + BackwardClass(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) {}; + + BackwardClass(const char *name, + Tango::CmdArgType in, + Tango::CmdArgType out) + :Command(name,in,out) {}; + ~BackwardClass() {}; + + 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<PZ116E *>(dev))->is_Backward_allowed(any);} +}; + +// Command Stop class definition +class StopClass : public Tango::Command +{ +public: + StopClass(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) {}; + + StopClass(const char *name, + Tango::CmdArgType in, + Tango::CmdArgType out) + :Command(name,in,out) {}; + ~StopClass() {}; + + 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<PZ116E *>(dev))->is_Stop_allowed(any);} +}; + +// Command Reset class definition +class ResetClass : public Tango::Command +{ +public: + ResetClass(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) {}; + + ResetClass(const char *name, + Tango::CmdArgType in, + Tango::CmdArgType out) + :Command(name,in,out) {}; + ~ResetClass() {}; + + 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<PZ116E *>(dev))->is_Reset_allowed(any);} +}; + +// Command StartWaveform class definition +class StartWaveformClass : public Tango::Command +{ +public: + StartWaveformClass(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) {}; + + StartWaveformClass(const char *name, + Tango::CmdArgType in, + Tango::CmdArgType out) + :Command(name,in,out) {}; + ~StartWaveformClass() {}; + + 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<PZ116E *>(dev))->is_StartWaveform_allowed(any);} +}; + +// Command StopWaveform class definition +class StopWaveformClass : public Tango::Command +{ +public: + StopWaveformClass(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) {}; + + StopWaveformClass(const char *name, + Tango::CmdArgType in, + Tango::CmdArgType out) + :Command(name,in,out) {}; + ~StopWaveformClass() {}; + + 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<PZ116E *>(dev))->is_StopWaveform_allowed(any);} +}; + +// Command SendCmd class definition +class SendCmdClass : public Tango::Command +{ +public: + SendCmdClass(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) {}; + + SendCmdClass(const char *name, + Tango::CmdArgType in, + Tango::CmdArgType out) + :Command(name,in,out) {}; + ~SendCmdClass() {}; + + 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<PZ116E *>(dev))->is_SendCmd_allowed(any);} +}; + + +/** + * The PZ116EClass singleton definition + */ + +#ifdef _TG_WINDOWS_ +class __declspec(dllexport) PZ116EClass : public Tango::DeviceClass +#else +class PZ116EClass : public Tango::DeviceClass +#endif +{ + /*----- PROTECTED REGION ID(PZ116EClass::Additionnal DServer data members) ENABLED START -----*/ + + /*----- PROTECTED REGION END -----*/ // PZ116EClass::Additionnal DServer data members + + public: + // write class properties data members + Tango::DbData cl_prop; + Tango::DbData cl_def_prop; + Tango::DbData dev_def_prop; + + // Method prototypes + static PZ116EClass *init(const char *); + static PZ116EClass *instance(); + ~PZ116EClass(); + Tango::DbDatum get_class_property(string &); + Tango::DbDatum get_default_device_property(string &); + Tango::DbDatum get_default_class_property(string &); + + protected: + PZ116EClass(string &); + static PZ116EClass *_instance; + void command_factory(); + void attribute_factory(vector<Tango::Attr *> &); + void write_class_property(); + void set_default_property(); + void get_class_property(); + string get_cvstag(); + string get_cvsroot(); + + private: + void device_factory(const Tango::DevVarStringArray *); + void create_static_attribute_list(vector<Tango::Attr *> &); + void erase_dynamic_attributes(const Tango::DevVarStringArray *,vector<Tango::Attr *> &); + vector<string> defaultAttList; + Tango::Attr *get_attr_object_by_name(vector<Tango::Attr *> &att_list, string attname); +}; + +} // End of namespace + +#endif // PZ116E_H diff --git a/src/PZ116EStateMachine.cpp b/src/PZ116EStateMachine.cpp new file mode 100644 index 0000000000000000000000000000000000000000..a4246cf3c8fb639239120111a1bf60274a5020d7 --- /dev/null +++ b/src/PZ116EStateMachine.cpp @@ -0,0 +1,315 @@ +/*----- PROTECTED REGION ID(PZ116EStateMachine.cpp) ENABLED START -----*/ +static const char *RcsId = "$Id: PZ116EStateMachine.cpp,v 1.3 2015-08-27 14:51:04 giulio Exp $"; +//============================================================================= +// +// file : PZ116EStateMachine.cpp +// +// description : C++ source for the PZ116E and its alowed +// methods for commands and attributes +// +// project : PI Piezo PZ116E controller device server. +// +// $Author: giulio $ +// +// $Revision: 1.3 $ +// $Date: 2015-08-27 14:51:04 $ +// +// SVN only: +// $HeadURL: $ +// +// CVS only: +// $Source: /home/cvsadm/cvsroot/fermi/servers/pz116e/src/PZ116EStateMachine.cpp,v $ +// $Log: PZ116EStateMachine.cpp,v $ +// Revision 1.3 2015-08-27 14:51:04 giulio +// Supported open-loop mode +// +// Revision 1.2 2012-06-07 09:57:21 giulio +// Added status strings, load waveform in init procedure +// +// Revision 1.1.1.1 2012-06-06 14:03:00 giulio +// First release +// +// +//============================================================================= +// This file is generated by POGO +// (Program Obviously used to Generate tango Object) +//============================================================================= + + + +#include <PZ116E.h> +#include <PZ116EClass.h> + +/*----- PROTECTED REGION END -----*/ // PZ116E::PZ116EStateMachine.cpp + +//================================================================ +// States | Description +//================================================================ +// ON | +// FAULT | +// MOVING | +// RUNNING | +// INIT | + + +namespace PZ116E_ns +{ +//================================================= +// Attributes Allowed Methods +//================================================= + +//-------------------------------------------------------- +/** + * Method : PZ116E::is_RtMode_allowed() + * Description : Execution allowed for RtMode attribute + */ +//-------------------------------------------------------- +bool PZ116E::is_RtMode_allowed(TANGO_UNUSED(Tango::AttReqType type)) +{ + // Not any excluded states for RtMode attribute in Write access. + /*----- PROTECTED REGION ID(PZ116E::RtModeStateAllowed_WRITE) ENABLED START -----*/ + + /*----- PROTECTED REGION END -----*/ // PZ116E::RtModeStateAllowed_WRITE + + // Not any excluded states for RtMode attribute in read access. + /*----- PROTECTED REGION ID(PZ116E::RtModeStateAllowed_READ) ENABLED START -----*/ + + /*----- PROTECTED REGION END -----*/ // PZ116E::RtModeStateAllowed_READ + return true; +} + +//-------------------------------------------------------- +/** + * Method : PZ116E::is_Position_allowed() + * Description : Execution allowed for Position attribute + */ +//-------------------------------------------------------- +bool PZ116E::is_Position_allowed(TANGO_UNUSED(Tango::AttReqType type)) +{ + // Not any excluded states for Position attribute in Write access. + /*----- PROTECTED REGION ID(PZ116E::PositionStateAllowed_WRITE) ENABLED START -----*/ + + /*----- PROTECTED REGION END -----*/ // PZ116E::PositionStateAllowed_WRITE + + // Check access type. + if ( type==Tango::READ_REQ ) + { + // Compare device state with not allowed states for READ + if (get_state()==Tango::FAULT) + { + /*----- PROTECTED REGION ID(PZ116E::PositionStateAllowed_READ) ENABLED START -----*/ + + /*----- PROTECTED REGION END -----*/ // PZ116E::PositionStateAllowed_READ + return false; + } + return true; + } + return true; +} + +//-------------------------------------------------------- +/** + * Method : PZ116E::is_IdentityNumber_allowed() + * Description : Execution allowed for IdentityNumber attribute + */ +//-------------------------------------------------------- +bool PZ116E::is_IdentityNumber_allowed(TANGO_UNUSED(Tango::AttReqType type)) +{ + + // Not any excluded states for IdentityNumber attribute in read access. + /*----- PROTECTED REGION ID(PZ116E::IdentityNumberStateAllowed_READ) ENABLED START -----*/ + + /*----- PROTECTED REGION END -----*/ // PZ116E::IdentityNumberStateAllowed_READ + return true; +} + +//-------------------------------------------------------- +/** + * Method : PZ116E::is_OneshotWaveform_allowed() + * Description : Execution allowed for OneshotWaveform attribute + */ +//-------------------------------------------------------- +bool PZ116E::is_OneshotWaveform_allowed(TANGO_UNUSED(Tango::AttReqType type)) +{ + // Not any excluded states for OneshotWaveform attribute in Write access. + /*----- PROTECTED REGION ID(PZ116E::OneshotWaveformStateAllowed_WRITE) ENABLED START -----*/ + + /*----- PROTECTED REGION END -----*/ // PZ116E::OneshotWaveformStateAllowed_WRITE + + // Not any excluded states for OneshotWaveform attribute in read access. + /*----- PROTECTED REGION ID(PZ116E::OneshotWaveformStateAllowed_READ) ENABLED START -----*/ + + /*----- PROTECTED REGION END -----*/ // PZ116E::OneshotWaveformStateAllowed_READ + return true; +} + +//-------------------------------------------------------- +/** + * Method : PZ116E::is_Stat_allowed() + * Description : Execution allowed for Stat attribute + */ +//-------------------------------------------------------- +bool PZ116E::is_Stat_allowed(TANGO_UNUSED(Tango::AttReqType type)) +{ + + // Not any excluded states for Stat attribute in read access. + /*----- PROTECTED REGION ID(PZ116E::StatStateAllowed_READ) ENABLED START -----*/ + + /*----- PROTECTED REGION END -----*/ // PZ116E::StatStateAllowed_READ + return true; +} + +//-------------------------------------------------------- +/** + * Method : PZ116E::is_Waveform_allowed() + * Description : Execution allowed for Waveform attribute + */ +//-------------------------------------------------------- +bool PZ116E::is_Waveform_allowed(TANGO_UNUSED(Tango::AttReqType type)) +{ + // Not any excluded states for Waveform attribute in Write access. + /*----- PROTECTED REGION ID(PZ116E::WaveformStateAllowed_WRITE) ENABLED START -----*/ + + /*----- PROTECTED REGION END -----*/ // PZ116E::WaveformStateAllowed_WRITE + + // Not any excluded states for Waveform attribute in read access. + /*----- PROTECTED REGION ID(PZ116E::WaveformStateAllowed_READ) ENABLED START -----*/ + + /*----- PROTECTED REGION END -----*/ // PZ116E::WaveformStateAllowed_READ + return true; +} + +//================================================= +// Commands Allowed Methods +//================================================= + +//-------------------------------------------------------- +/** + * Method : PZ116E::is_Forward_allowed() + * Description : Execution allowed for Forward attribute + */ +//-------------------------------------------------------- +bool PZ116E::is_Forward_allowed(TANGO_UNUSED(const CORBA::Any &any)) +{ + // Compare device state with not allowed states. + if (get_state()==Tango::FAULT || + get_state()==Tango::RUNNING || + get_state()==Tango::INIT) + { + /*----- PROTECTED REGION ID(PZ116E::ForwardStateAllowed) ENABLED START -----*/ + + /*----- PROTECTED REGION END -----*/ // PZ116E::ForwardStateAllowed + return false; + } + return true; +} + +//-------------------------------------------------------- +/** + * Method : PZ116E::is_Backward_allowed() + * Description : Execution allowed for Backward attribute + */ +//-------------------------------------------------------- +bool PZ116E::is_Backward_allowed(TANGO_UNUSED(const CORBA::Any &any)) +{ + // Compare device state with not allowed states. + if (get_state()==Tango::FAULT || + get_state()==Tango::RUNNING || + get_state()==Tango::INIT) + { + /*----- PROTECTED REGION ID(PZ116E::BackwardStateAllowed) ENABLED START -----*/ + + /*----- PROTECTED REGION END -----*/ // PZ116E::BackwardStateAllowed + return false; + } + return true; +} + +//-------------------------------------------------------- +/** + * Method : PZ116E::is_Stop_allowed() + * Description : Execution allowed for Stop attribute + */ +//-------------------------------------------------------- +bool PZ116E::is_Stop_allowed(TANGO_UNUSED(const CORBA::Any &any)) +{ + // Compare device state with not allowed states. + if (get_state()==Tango::INIT) + { + /*----- PROTECTED REGION ID(PZ116E::StopStateAllowed) ENABLED START -----*/ + + /*----- PROTECTED REGION END -----*/ // PZ116E::StopStateAllowed + return false; + } + return true; +} + +//-------------------------------------------------------- +/** + * Method : PZ116E::is_Reset_allowed() + * Description : Execution allowed for Reset attribute + */ +//-------------------------------------------------------- +bool PZ116E::is_Reset_allowed(TANGO_UNUSED(const CORBA::Any &any)) +{ + // Compare device state with not allowed states. + if (get_state()==Tango::INIT) + { + /*----- PROTECTED REGION ID(PZ116E::ResetStateAllowed) ENABLED START -----*/ + + /*----- PROTECTED REGION END -----*/ // PZ116E::ResetStateAllowed + return false; + } + return true; +} + +//-------------------------------------------------------- +/** + * Method : PZ116E::is_StartWaveform_allowed() + * Description : Execution allowed for StartWaveform attribute + */ +//-------------------------------------------------------- +bool PZ116E::is_StartWaveform_allowed(TANGO_UNUSED(const CORBA::Any &any)) +{ + // Not any excluded states for StartWaveform command. + /*----- PROTECTED REGION ID(PZ116E::StartWaveformStateAllowed) ENABLED START -----*/ + + /*----- PROTECTED REGION END -----*/ // PZ116E::StartWaveformStateAllowed + return true; +} + +//-------------------------------------------------------- +/** + * Method : PZ116E::is_StopWaveform_allowed() + * Description : Execution allowed for StopWaveform attribute + */ +//-------------------------------------------------------- +bool PZ116E::is_StopWaveform_allowed(TANGO_UNUSED(const CORBA::Any &any)) +{ + // Not any excluded states for StopWaveform command. + /*----- PROTECTED REGION ID(PZ116E::StopWaveformStateAllowed) ENABLED START -----*/ + + /*----- PROTECTED REGION END -----*/ // PZ116E::StopWaveformStateAllowed + return true; +} + +//-------------------------------------------------------- +/** + * Method : PZ116E::is_SendCmd_allowed() + * Description : Execution allowed for SendCmd attribute + */ +//-------------------------------------------------------- +bool PZ116E::is_SendCmd_allowed(TANGO_UNUSED(const CORBA::Any &any)) +{ + // Compare device state with not allowed states. + if (get_state()==Tango::INIT) + { + /*----- PROTECTED REGION ID(PZ116E::SendCmdStateAllowed) ENABLED START -----*/ + + /*----- PROTECTED REGION END -----*/ // PZ116E::SendCmdStateAllowed + return false; + } + return true; +} + +} // End of namespace diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000000000000000000000000000000000000..53f8830f85a6a3629945d84167b487d71fe86ca7 --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,75 @@ +/*PROTECTED REGION ID(PZ116E::main.cpp) ENABLED START*/ +static const char *RcsId = "$Id: main.cpp,v 1.2 2015-08-27 14:51:04 giulio Exp $"; +//============================================================================= +// +// file : PZ116E.cpp +// +// description : C++ source for the PZ116E 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 : PI Piezo PZ116E controller device server. +// +// $Author: giulio $ +// +// $Revision: 1.2 $ +// $Date: 2015-08-27 14:51:04 $ +// +// SVN only: +// $HeadURL: $ +// +// CVS only: +// $Source: /home/cvsadm/cvsroot/fermi/servers/pz116e/src/main.cpp,v $ +// $Log: main.cpp,v $ +// Revision 1.2 2015-08-27 14:51:04 giulio +// Supported open-loop mode +// +// Revision 1.1.1.1 2012-06-06 14:03:00 giulio +// First release +// +// +//============================================================================= +// This file is generated by POGO +// (Program Obviously used to Generate tango Object) +//============================================================================= + +#include <tango.h> + + +int main(int argc,char *argv[]) +{ + Tango::Util *tg = NULL; + 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; + } + if (tg!=NULL) + tg->server_cleanup(); + return(0); +} +/*PROTECTED REGION END*/ // PZ116E::main.cpp