From 0610040ecb0fa658de6381ab266b0b61c0243c92 Mon Sep 17 00:00:00 2001
From: Giulio Gaio <giulio.gaio@elettra.eu>
Date: Tue, 7 Apr 2020 11:03:46 +0200
Subject: [PATCH] Initial import

---
 Makefile                       |    6 +
 doc/AttrIdentityNumber.html    |  259 +++++++
 doc/AttrPosition.html          |  263 +++++++
 doc/AttrRtMode.html            |  267 +++++++
 doc/AttrScanEndPosition.html   |  267 +++++++
 doc/AttrScanStartPosition.html |  267 +++++++
 doc/AttrScanStep.html          |  267 +++++++
 doc/Attributes.html            |  250 +++++++
 doc/CmdBackward.html           |  212 ++++++
 doc/CmdEndScan.html            |  212 ++++++
 doc/CmdForward.html            |  212 ++++++
 doc/CmdReset.html              |  212 ++++++
 doc/CmdStartScan.html          |  212 ++++++
 doc/CmdState.html              |  212 ++++++
 doc/CmdStatus.html             |  212 ++++++
 doc/CmdStop.html               |  212 ++++++
 doc/Commands.html              |  237 ++++++
 doc/Properties.html            |  213 ++++++
 doc/States.html                |  186 +++++
 doc/index.html                 |  199 +++++
 src/ClassFactory.cpp           |   55 ++
 src/PZ116E.cpp                 | 1236 ++++++++++++++++++++++++++++++++
 src/PZ116E.h                   |  335 +++++++++
 src/PZ116E.xmi                 |  188 +++++
 src/PZ116EClass.cpp            |  957 +++++++++++++++++++++++++
 src/PZ116EClass.h              |  360 ++++++++++
 src/PZ116EStateMachine.cpp     |  315 ++++++++
 src/main.cpp                   |   75 ++
 28 files changed, 7898 insertions(+)
 create mode 100644 Makefile
 create mode 100644 doc/AttrIdentityNumber.html
 create mode 100644 doc/AttrPosition.html
 create mode 100644 doc/AttrRtMode.html
 create mode 100644 doc/AttrScanEndPosition.html
 create mode 100644 doc/AttrScanStartPosition.html
 create mode 100644 doc/AttrScanStep.html
 create mode 100644 doc/Attributes.html
 create mode 100644 doc/CmdBackward.html
 create mode 100644 doc/CmdEndScan.html
 create mode 100644 doc/CmdForward.html
 create mode 100644 doc/CmdReset.html
 create mode 100644 doc/CmdStartScan.html
 create mode 100644 doc/CmdState.html
 create mode 100644 doc/CmdStatus.html
 create mode 100644 doc/CmdStop.html
 create mode 100644 doc/Commands.html
 create mode 100644 doc/Properties.html
 create mode 100644 doc/States.html
 create mode 100644 doc/index.html
 create mode 100644 src/ClassFactory.cpp
 create mode 100644 src/PZ116E.cpp
 create mode 100644 src/PZ116E.h
 create mode 100644 src/PZ116E.xmi
 create mode 100644 src/PZ116EClass.cpp
 create mode 100644 src/PZ116EClass.h
 create mode 100644 src/PZ116EStateMachine.cpp
 create mode 100644 src/main.cpp

diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..6ca89be
--- /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 0000000..b80be15
--- /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 0000000..4f25235
--- /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 0000000..73cb6ca
--- /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 0000000..ff40d10
--- /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 0000000..469ae4e
--- /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 0000000..257a905
--- /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 0000000..ce72259
--- /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 0000000..6d66cb0
--- /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 0000000..03fe541
--- /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 0000000..e9f72cd
--- /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 0000000..785641d
--- /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 0000000..6a5b903
--- /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 0000000..69b8724
--- /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 0000000..63b33bb
--- /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 0000000..3229aa2
--- /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 0000000..b358f1c
--- /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 0000000..e7cc27c
--- /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 0000000..9d26657
--- /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 0000000..6d2ecae
--- /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 0000000..e799f44
--- /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 0000000..64ff40b
--- /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 0000000..02161f6
--- /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 0000000..ce00ac6
--- /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&#xA;1) comm. error=true comm. ok=false&#xA;" 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 0000000..2b56dcb
--- /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 0000000..6f4ac6c
--- /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 0000000..a4246cf
--- /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 0000000..53f8830
--- /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
-- 
GitLab