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

initial import

parent f815c60a
Branches
Tags
No related merge requests found
Showing
with 2429 additions and 0 deletions
<!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>
<IMG SRC="http://www.esrf.fr/gifs/logo/80.gif" BORDER=0></A>
</Td>
<TD ALIGN="center">
<A HREF=http://www.elettra.trieste.it/>
<IMG SRC="http://www.esrf.fr/tango/elettra_logo.gif" BORDER=0></A>
</Td>
<TD ALIGN="right">
<A HREF=http://www.synchrotron-soleil.fr/>
<IMG SRC="http://www.esrf.fr/tango/soleil_logo.gif" BORDER=0></A>
</Td>
<Td>
<H1><FONT COLOR="#0000FF">
<Center>TANGO <Br> Device Server
</Center></FONT>
</Td>
</TR>
</TABLE>
<HR WIDTH="100%"></H5>
<Br>
<center>
<h1>
SY900S_Channel <Br>
Device Attributes Description <Br> <Br>
SY900S_Channel Class <Br>
</h1>
<b>
Revision: - Author:
</b>
</center>
<Br>
<Table Border=2 Cellpadding=3 CELLSPACING=0 WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<Td COLSPAN=4> <Font Size=+2><Center><b>Scalar Attributes</b></td></Font></Center>
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<Td><Center><b>Attribute name</b></td></Center>
<Td><Center><b>Data Type</b></td></Center>
<Td><Center><b>R/W Type</b></td></Center>
<Td><Center><b>Expert</b></td></Center>
<Tr><Td><b><Center>voltage</b><Br>( is the output voltage of the channel )</Center></Td>
<Td><Center>DEV_DOUBLE</Center></Td><Td><Center>READ_WRITE</Center></Td><Td><Center>No</Center></Td></Tr>
<Tr><Td><b><Center>delta_Voltage</b><Br>( This is a diffrential voltage. The Voltage attribute equal = current voltage + delta voltage )</Center></Td>
<Td><Center>DEV_DOUBLE</Center></Td><Td><Center>WRITE</Center></Td><Td><Center>No</Center></Td></Tr>
<Tr><Td><b><Center>target_Voltage</b><Br>( This is the Voltage to reach. This voltage is not applied after setting it. this is the command group which set the output voltage )</Center></Td>
<Td><Center>DEV_DOUBLE</Center></Td><Td><Center>WRITE</Center></Td><Td><Center>No</Center></Td></Tr>
<Tr><Td><b><Center>channel</b><Br>( channel number )</Center></Td>
<Td><Center>DEV_LONG</Center></Td><Td><Center>READ</Center></Td><Td><Center>No</Center></Td></Tr>
<Tr><Td><b><Center>group</b><Br>( group number )</Center></Td>
<Td><Center>DEV_LONG</Center></Td><Td><Center>READ</Center></Td><Td><Center>No</Center></Td></Tr>
</Table>
</Center>
<Br><Br><Br><Br><Br>
<Center>
<Br>
<HR WIDTH="100%"></H5>
<H3> ESRF - Software Engineering Group </H33>
</Center>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<Title> Tango Device Server User's Guide </Title>
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000FF" VLINK="#7F00FF" ALINK="#FF0000">
<P><!-------TITLE------></P>
<TABLE BORDER="0" WIDTH="100%">
<TR>
<TD ALIGN="left">
<A HREF=http://www.esrf.fr>
<IMG SRC="http://www.esrf.fr/gifs/logo/80.gif" BORDER=0></A>
</Td>
<TD ALIGN="center">
<A HREF=http://www.elettra.trieste.it/>
<IMG SRC="http://www.esrf.fr/tango/elettra_logo.gif" BORDER=0></A>
</Td>
<TD ALIGN="right">
<A HREF=http://www.synchrotron-soleil.fr/>
<IMG SRC="http://www.esrf.fr/tango/soleil_logo.gif" BORDER=0></A>
</Td>
<Td>
<H1><FONT COLOR="#0000FF">
<Center>TANGO <Br> Device Server
</Center></FONT>
</Td>
</TR>
</TABLE>
<Br>
<HR WIDTH="100%"></H5>
<Br>
<center>
<h1>
SY900S_Channel <Br>
Device Description <Br> <Br>
SY900S_Channel Class <Br>
</h1>
<b>
Revision: - Author:
</b>
</center>
<Center>
this device controls one channel of the SY900S rack
<Br>
<Br>
</Center>
<Center>
<Br>
<HR WIDTH="100%"></H5>
<H3> ESRF - Software Engineering Group </H33>
</Center>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<Title> Tango Device Server User's Guide </Title>
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000FF" VLINK="#7F00FF" ALINK="#FF0000">
<P><!-------TITLE------></P>
<TABLE BORDER="0" WIDTH="100%">
<TR>
<TD ALIGN="left">
<A HREF=http://www.esrf.fr>
<IMG SRC="http://www.esrf.fr/gifs/logo/80.gif" BORDER=0></A>
</Td>
<TD ALIGN="center">
<A HREF=http://www.elettra.trieste.it/>
<IMG SRC="http://www.esrf.fr/tango/elettra_logo.gif" BORDER=0></A>
</Td>
<TD ALIGN="right">
<A HREF=http://www.synchrotron-soleil.fr/>
<IMG SRC="http://www.esrf.fr/tango/soleil_logo.gif" BORDER=0></A>
</Td>
<Td>
<H1><FONT COLOR="#0000FF">
<Center>TANGO <Br> Device Server
</Center></FONT>
</Td>
</TR>
</TABLE>
<HR WIDTH="100%"></H5>
<Br>
<center>
<h1>
SY900S_Channel <Br>
Device Commands Description <Br> <Br>
SY900S_Channel Class <Br>
</h1>
<b>
Revision: - Author:
</b>
</center>
<Br>
<Br>
<Br>
<A NAME="Init"><!-- --></A>
<A NAME="Init"><!-- --></A>
<h2>1 - Init</h2>
<ul>
<Li><Strong>Description: </Strong> This commands re-initialise a device keeping the same network connection.<Br>
After an Init command executed on a device, it is not necessary for client to re-connect to the device.<Br>
This command first calls the device <i> delete_device() </i>method and then execute its <i> init_device()</i> method.<Br>
For C++ device server, all the memory allocated in the <i> nit_device() </i> method must be freed in the <i> delete_device() </i> method.<Br>
The language device desctructor automatically calls the <i> delete_device() </i> method.<Br>&nbsp
<Li><Strong>Argin:<Br>DEV_VOID</Strong>
: none.<Br>&nbsp
<Li><Strong>Argout:<Br>DEV_VOID</Strong>
: none.<Br>&nbsp
<Li><Strong>Command allowed for: </Strong><Ul>
<Li>Tango::ON<Li>Tango::OFF<Li>Tango::ALARM<Li>Tango::UNKNOWN<Li>Tango::FAULT</Ul>
<Br>&nbsp
</ul><Br>
<Br>
<A NAME="State"><!-- --></A>
<A NAME="State"><!-- --></A>
<h2>2 - State</h2>
<ul>
<Li><Strong>Description: </Strong> This command gets the device state (stored in its <i>device_state</i> data member) and returns it to the caller.<Br>&nbsp
<Li><Strong>Argin:<Br>DEV_VOID</Strong>
: none.<Br>&nbsp
<Li><Strong>Argout:<Br>DEV_STATE</Strong>
: State Code<Br>&nbsp
<Li><Strong>Command allowed for: </Strong><Ul>
<Li>Tango::ON<Li>Tango::OFF<Li>Tango::ALARM<Li>Tango::UNKNOWN<Li>Tango::FAULT</Ul>
<Br>&nbsp
</ul><Br>
<Br>
<A NAME="Status"><!-- --></A>
<A NAME="Status"><!-- --></A>
<h2>3 - Status</h2>
<ul>
<Li><Strong>Description: </Strong> This command gets the device status (stored in its <i>device_status</i> data member) and returns it to the caller.<Br>&nbsp
<Li><Strong>Argin:<Br>DEV_VOID</Strong>
: none.<Br>&nbsp
<Li><Strong>Argout:<Br>CONST_DEV_STRING</Strong>
: Status descrition<Br>&nbsp
<Li><Strong>Command allowed for: </Strong><Ul>
<Li>Tango::ON<Li>Tango::OFF<Li>Tango::ALARM<Li>Tango::UNKNOWN<Li>Tango::FAULT</Ul>
<Br>&nbsp
</ul><Br>
<Br>
<Center>
<Br>
<HR WIDTH="100%"></H5>
<H3> ESRF - Software Engineering Group </H33>
</Center>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<Title> Tango Device Server User's Guide </Title>
</HEAD>
<FRAMESET cols="20%,80%">
<FRAME src="DevCommandsList.html" name="DevCommandsList">
<FRAME src="DevCommands.html" name="DevCommands">
</FRAMESET>
<NOFRAMES>
<H2>
Frame Alert</H2>
<P>
This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
<BR>
Link to <A HREF="DevCommands.html">Non-frame version.</A></NOFRAMES>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML><HEAD>
<TITLE>Commands
</TITLE></HEAD>
<BODY BGCOLOR="white">
<FONT size="+1" ID="FrameHeadingFont">
<B>Commands:</B></FONT>
<Br>
<Br>
<Br>
<A Href="DevCommands.html#Init" TARGET="DevCommands"> Init</a><Br>
<A Href="DevCommands.html#State" TARGET="DevCommands"> State</a><Br>
<A Href="DevCommands.html#Status" TARGET="DevCommands"> Status</a><Br>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<Title> Tango Device Server User's Guide </Title>
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000FF" VLINK="#7F00FF" ALINK="#FF0000">
<P><!-------TITLE------></P>
<TABLE BORDER="0" WIDTH="100%">
<TR>
<TD ALIGN="left">
<A HREF=http://www.esrf.fr>
<IMG SRC="http://www.esrf.fr/gifs/logo/80.gif" BORDER=0></A>
</Td>
<TD ALIGN="center">
<A HREF=http://www.elettra.trieste.it/>
<IMG SRC="http://www.esrf.fr/tango/elettra_logo.gif" BORDER=0></A>
</Td>
<TD ALIGN="right">
<A HREF=http://www.synchrotron-soleil.fr/>
<IMG SRC="http://www.esrf.fr/tango/soleil_logo.gif" BORDER=0></A>
</Td>
<Td>
<H1><FONT COLOR="#0000FF">
<Center>TANGO <Br> Device Server
</Center></FONT>
</Td>
</TR>
</TABLE>
<HR WIDTH="100%"></H5>
<Br>
<center>
<h1>
SY900S_Channel <Br>
Device Commands Description <Br> <Br>
SY900S_Channel Class <Br>
</h1>
<b>
Revision: - Author:
</b>
</center>
<Center>
<Br><Br>
<A Href="DevCommandsFrame.html"> More Details on commands.... </a><Br>
<Br> <Br>
<Table Border=2 Cellpadding=3 CELLSPACING=0 WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<Td COLSPAN=3> <Font Size=+2><Center><b>Device Commands for Operator Level</b></td></Font></Center>
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<Td><Center><b>Command name</b></td></Center>
<Td><Center><b>Argument In</b></td></Center>
<Td><Center><b>Argument Out</b></td></Center>
<Tr><Td>Init</Td>
<Td>DEV_VOID</Td>
<Td>DEV_VOID</Td>
<Tr><Td>State</Td>
<Td>DEV_VOID</Td>
<Td>DEV_STATE</Td>
<Tr><Td>Status</Td>
<Td>DEV_VOID</Td>
<Td>CONST_DEV_STRING</Td>
</Table></Center>
<Center>
<Br>
<HR WIDTH="100%"></H5>
<H3> ESRF - Software Engineering Group </H33>
</Center>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<Title> Tango Device Server User's Guide </Title>
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000FF" VLINK="#7F00FF" ALINK="#FF0000">
<P><!-------TITLE------></P>
<TABLE BORDER="0" WIDTH="100%">
<TR>
<TD ALIGN="left">
<A HREF=http://www.esrf.fr>
<IMG SRC="http://www.esrf.fr/gifs/logo/80.gif" BORDER=0></A>
</Td>
<TD ALIGN="center">
<A HREF=http://www.elettra.trieste.it/>
<IMG SRC="http://www.esrf.fr/tango/elettra_logo.gif" BORDER=0></A>
</Td>
<TD ALIGN="right">
<A HREF=http://www.synchrotron-soleil.fr/>
<IMG SRC="http://www.esrf.fr/tango/soleil_logo.gif" BORDER=0></A>
</Td>
<Td>
<H1><FONT COLOR="#0000FF">
<Center>TANGO <Br> Device Server
</Center></FONT>
</Td>
</TR>
</TABLE>
<HR WIDTH="100%"></H5>
<Br>
<center>
<h1>
SY900S_Channel <Br>
Properties Description <Br> <Br>
SY900S_Channel Class <Br>
</h1>
<b>
Revision: - Author:
</b>
</center>
<Br> <Br> <Br>
<Center>
<Br> <Br> <Br>
<Table Border=2 Cellpadding=3 CELLSPACING=0 WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<Td COLSPAN=3> <Font Size=+2><Center><b>Device Properties</b></td></Font></Center>
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<Td><Center><b>Property name</b></td></Center>
<Td><Center><b>Property type</b></td></Center>
<Td><Center><b>Description</b></td></Center>
<Tr><Td>Group_Number</Td>
<Td>Tango::DEV_LONG</Td>
<Td>one group is consisted of severals channels. this property assigns
the group number.</Td></Tr>
<Tr><Td>Channel_Number</Td>
<Td>Tango::DEV_LONG</Td>
<Td>one channel is contained inside one group. this property assigns
the channel number</Td></Tr>
<Tr><Td>SY900S_GenericProxyName</Td>
<Td>Tango::DEV_STRING</Td>
<Td></Td></Tr>
</Table>
<Br><Br><Br>
<Center><b>
There is no Class properties.<Br><Br>
</Center></b>
<Center>
<Br>
<HR WIDTH="100%"></H5>
<H3> ESRF - Software Engineering Group </H33>
</Center>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<Title> Tango Device Server User's Guide </Title>
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000FF" VLINK="#7F00FF" ALINK="#FF0000">
<P><!-------TITLE------></P>
<TABLE BORDER="0" WIDTH="100%">
<TR>
<TD ALIGN="left">
<A HREF=http://www.esrf.fr>
<IMG SRC="http://www.esrf.fr/gifs/logo/80.gif" BORDER=0></A>
</Td>
<TD ALIGN="center">
<A HREF=http://www.elettra.trieste.it/>
<IMG SRC="http://www.esrf.fr/tango/elettra_logo.gif" BORDER=0></A>
</Td>
<TD ALIGN="right">
<A HREF=http://www.synchrotron-soleil.fr/>
<IMG SRC="http://www.esrf.fr/tango/soleil_logo.gif" BORDER=0></A>
</Td>
<Td>
<H1><FONT COLOR="#0000FF">
<Center>TANGO <Br> Device Server
</Center></FONT>
</Td>
</TR>
</TABLE>
<HR WIDTH="100%"></H5>
<Br>
<center>
<h1>
SY900S_Channel <Br>
Device States Description <Br> <Br>
SY900S_Channel Class <Br>
</h1>
<b>
Revision: - Author:
</b>
</center>
<Center>
<Br> <Br> <Br>
<Table Border=2 Cellpadding=3 CELLSPACING=0 WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<Td COLSPAN=2> <Font Size=+2><Center><b>States</b></td></Font></Center>
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<Td><Center><b>Names</b></td></Center>
<Td><Center><b>Descriptions</b></td></Center>
<Tr><Td>ON</Td>
<Td></Td></Tr>
<Tr><Td>OFF</Td>
<Td></Td></Tr>
<Tr><Td>ALARM</Td>
<Td></Td></Tr>
<Tr><Td>UNKNOWN</Td>
<Td></Td></Tr>
<Tr><Td>FAULT</Td>
<Td></Td></Tr>
</Table>
</Center>
<Center>
<Br>
<HR WIDTH="100%"></H5>
<H3> ESRF - Software Engineering Group </H33>
</Center>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<Title> Tango Device Server User's Guide </Title>
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000FF" VLINK="#7F00FF" ALINK="#FF0000">
<P><!-------TITLE------></P>
<TABLE BORDER="0" WIDTH="100%">
<TR>
<TD ALIGN="left">
<A HREF=http://www.esrf.fr>
<IMG SRC="http://www.esrf.fr/gifs/logo/80.gif" BORDER=0></A>
</Td>
<TD ALIGN="center">
<A HREF=http://www.elettra.trieste.it/>
<IMG SRC="http://www.esrf.fr/tango/elettra_logo.gif" BORDER=0></A>
</Td>
<TD ALIGN="right">
<A HREF=http://www.synchrotron-soleil.fr/>
<IMG SRC="http://www.esrf.fr/tango/soleil_logo.gif" BORDER=0></A>
</Td>
<Td>
<H1><FONT COLOR="#0000FF">
<Center>TANGO <Br> Device Server
</Center></FONT>
</Td>
</TR>
</TABLE>
<HR WIDTH="100%"></H5>
<center>
<h1>
SY900S_Channel <Br>
Device Server User's Guide <Br><Br>
SY900S_Channel Class <Br>
</h1>
<b>
Revision: - Author:
</b>
</center>
<Br>
<Br>
<Br>
<Br>
<Br>
<Br>
<h2>Introduction:</h2>
this device controls one channel of the SY900S rack<Br>
<Br>
<Br>
<h2>Description:</h2>
<ul>
<li> <a href=Description.html> Device description.</a>
<li> <a href=Properties.html> Properties description</a>
<li> <a href=TangoDevStates.html> States description</a>
<li> <a href=DevCommandsTable.html> Commands description</a>
<li> <a href=Attributes.html> Attributes description</a>
</ul>
<Br>
<Br>
<Br>
<h2>Extented User's guide (available only for complex DeviceServers): Available in French OR English versions</h2>
<ul>
<li> <a href="..\DeviceServerUsersGuide.doc"> In English word format.</a>
<li> <a href="..\DeviceServerUsersGuide.pdf"> In English PDF format.</a>
<li> <a href="..\DeviceServerUsersGuide_fr.doc"> In French word format.</a>
<li> <a href="..\DeviceServerUsersGuide_fr.pdf"> In French PDF format.</a>
</ul>
<Br>
<Br>
<h2>Programmer's guide:</h2>
<ul>
<li> <a href="html/index.html"> Software description.</a>
</ul>
<Br>
<Br>
<Br>
<h2>Conclusion:</h2>
The device server is ready for distribution application programmers.<Br>
The author will be interested in any feedback which arise from their
usage of this device server.
<Br>
<Center>
<Br>
<HR WIDTH="100%"></H5>
<H3> ESRF - Software Engineering Group </H33>
</Center>
</body>
</html>
static const char *RcsId = "$Header: /users/chaize/newsvn/cvsroot/Instrumentation/SY900S_channel/src/ClassFactory.cpp,v 1.1.1.1 2006-08-02 07:46:44 stephle Exp $";
//+=============================================================================
//
// file : ClassFactory.cpp
//
// description : C++ source for the class_factory method of the DServer
// device class. This method is responsible to create
// all class singletin for a device server. It is called
// at device server startup
//
// project : TANGO Device Server
//
// $Author: stephle $
//
// $Revision: 1.1.1.1 $
//
// $Log: not supported by cvs2svn $
//
// copyleft : Synchrotron SOLEIL
// L'Orme des Merisiers
// Saint-Aubin - BP 48
//
//-=============================================================================
//
// This file is generated by POGO
// (Program Obviously used to Generate tango Object)
//
// (c) - Software Engineering Group - ESRF
//=============================================================================
#include <tango.h>
#include <SY900S_ChannelClass.h>
/**
* Create SY900S_ChannelClass singleton and store it in DServer object.
*/
void Tango::DServer::class_factory()
{
add_class(SY900S_Channel_ns::SY900S_ChannelClass::init("SY900S_Channel"));
}
#=============================================================================
#
# file : Makefile
#
# description : Include for the SY900S_Channel class.
#
# project : Makefile to generate a Tango server
#
# $Author: stephle $
#
# $Revision: 1.1.1.1 $
#
# $Log: not supported by cvs2svn $
#
# copyleft : European Synchrotron Radiation Facility
# BP 220, Grenoble 38043
# FRANCE
#
#=============================================================================
# This file is generated by POGO
# (Program Obviously used to Generate tango Object)
#
# (c) - Software Engineering Group - ESRF
#=============================================================================
#
#-----------------------------------------
# Set default home directories
#-----------------------------------------
TANGO_HOME = /segfs/tango
CPP_SERVERS = $(TANGO_HOME)/cppserver
ifdef no_debug
DBG = -O
else
DBG = -g
endif
ifdef _solaris
CC = CC
BIN_DIR = solaris9_CC
endif
ifdef linux
CC = c++
AR = ar
BIN_DIR=suse82
endif
INCLUDE_DIRS = -I$(TANGO_HOME)/include/$(BIN_DIR) -I. \
-I$(CPP_SERVERS)/include
LIB_DIRS = -L $(TANGO_HOME)/lib/$(BIN_DIR)
TARGET_LIB = $(CPP_SERVERS)/lib/$(BIN_DIR)/libtgclasses.a
#-----------------------------------------
# Set CXXFLAGS and LFLAGS
#-----------------------------------------
ifdef _solaris
CXXFLAGS = $(DEBUG) -mt -D_PTHREADS $(INCLUDE_DIRS)
LFLAGS = $(DEBUG) $(LIB_DIRS) \
-ltango \
-llog4tango \
-lomniORB4 \
-lomniDynamic4 \
-lomnithread \
-lCOS4 \
-lpthread \
-lposix4 -lsocket -lnsl
endif
ifdef linux
CXXFLAGS = $(DEBUG) -D_REENTRANT $(INCLUDE_DIRS)
LFLAGS = $(DEBUG) $(LIB_DIRS) \
-ltango \
-llog4tango \
-lomniORB4 \
-lomniDynamic4 \
-lomnithread \
-lCOS4 \
-ldl -lpthread
endif
#-----------------------------------------
# Set dependences
#-----------------------------------------
CLASS = SY900S_Channel
SVC_OBJS = main.o \
ClassFactory.o \
$(CLASS)Class.o \
$(CLASS)StateMachine.o \
$(CLASS).o
SVC_INC = $(CLASS)Class.h \
$(CLASS).h
%.o: %.cpp $(SVC_INC)
$(CC) $(CXXFLAGS) -c $<
#-----------------------------------------
# Make Entry
#-----------------------------------------
all: $(CLASS)
$(CLASS): $(SVC_OBJS)
$(CC) $(SVC_OBJS) -o $(CLASS) $(LFLAGS)
clean:
rm -f *.o $(CLASS) core
#-----------------------------------------
# Install binary file
#-----------------------------------------
install:
cp $(CLASS) $(TANGO_HOME)/bin/$(BIN_DIR)
#-----------------------------------------
# Update class library and header files
# recompile without debug mode.
#-----------------------------------------
lib: clean
@make no_debug=1
cp *.h $(CPP_SERVERS)/include
ar ruv $(TARGET_LIB) $(CLASS).o
ar ruv $(TARGET_LIB) $(CLASS)Class.o
ar ruv $(TARGET_LIB) $(CLASS)StateMachine.o
ident $(TARGET_LIB)
#
device_server= SY900S_Channel
#
# Des includes particuliers
# Mettre /Ic:\monchemininclude /:\monautrechemininclude
INCUSER=
#
# et vos Librairies
# style
#
# LIBUSER = "x:\moncheminlibrairie\malibrairie.lib"
LIBUSER=
#vos OBJ
#OBJUSER =
# Le repertoire ou sont les sources autres que le DServeur
#CPPDIRUSER =
#
# ------------------Fin des modifications pour le end user -------------------------------------
#
make_dir=$(SOLEIL_ROOT)\env\
# Les définitions communes à tous les DeviceServeurs
!include $(make_dir)\tango.opt
exe_device_server= $(EXEDIR)\ds_$(device_server).exe
pdb_name= $(TEMPLIBDIR)\$(device_server).pdb
# --------------------------------------
# Partie spécifique Device Server
# --------------------------------------
LISTEOBJ = \
$(OBJDIR)\$(device_server).OBJ\
$(OBJDIR)\ClassFactory.OBJ\
$(OBJDIR)\main.OBJ\
$(OBJDIR)\$(device_server)StateMachine.OBJ\
$(OBJDIR)\$(device_server)Class.OBJ
SRCS = \
$(device_server).CPP\
ClassFactory.CPP\
$(device_server)StateMachine.CPP\
main.CPP \
$(device_server)Class.CPP
# --------------------------------------
!include $(make_dir)\common_target.opt
This diff is collapsed.
//=============================================================================
//
// file : SY900S_Channel.h
//
// description : Include for the SY900S_Channel class.
//
// project : SY900S_Channel
//
// $Author: stephle $
//
// $Revision: 1.1.1.1 $
//
// $Log: not supported by cvs2svn $
//
// copyleft : European Synchrotron Radiation Facility
// BP 220, Grenoble 38043
// FRANCE
//
//=============================================================================
//
// This file is generated by POGO
// (Program Obviously used to Generate tango Object)
//
// (c) - Software Engineering Group - ESRF
//=============================================================================
#ifndef _SY900S_CHANNEL_H
#define _SY900S_CHANNEL_H
#include <tango.h>
//using namespace Tango;
#include "DeviceProxyHelper.h"
/**
* @author $Author: stephle $
* @version $Revision: 1.1.1.1 $
*/
// Add your own constants definitions here.
//-----------------------------------------------
namespace SY900S_Channel_ns
{
/**
* Class Description:
* this device controls one channel of the SY900S rack
*/
/*
* Device States Description:
* Tango::ON :
* Tango::OFF :
* Tango::ALARM :
* Tango::UNKNOWN :
* Tango::FAULT :
* Tango::RUNNING :
*/
class SY900S_Channel: public Tango::Device_3Impl
{
public :
// Add your own data members here
//-----------------------------------------
// Here is the Start of the automatic code generation part
//-------------------------------------------------------------
/**
* @name attributes
* Attributs member data.
*/
//@{
Tango::DevDouble *attr_voltage_read;
Tango::DevDouble attr_voltage_write;
Tango::DevDouble attr_delta_Voltage_write;
Tango::DevDouble attr_target_Voltage_write;
Tango::DevLong *attr_channel_read;
Tango::DevLong *attr_group_read;
//@}
/**
* @name Device properties
* Device properties member data.
*/
//@{
/**
* one group is consisted of severals channels. this property assigns
* the group number.
*/
Tango::DevLong group_Number;
/**
* one channel is contained inside one group. this property assigns
* the channel number
*/
Tango::DevLong channel_Number;
/**
*
*/
string sY900S_GenericProxyName;
//@}
/**@name Constructors
* Miscellaneous constructors */
//@{
/**
* Constructs a newly allocated Command object.
*
* @param cl Class.
* @param s Device Name
*/
SY900S_Channel(Tango::DeviceClass *cl,string &s);
/**
* Constructs a newly allocated Command object.
*
* @param cl Class.
* @param s Device Name
*/
SY900S_Channel(Tango::DeviceClass *cl,const char *s);
/**
* Constructs a newly allocated Command object.
*
* @param cl Class.
* @param s Device name
* @param d Device description.
*/
SY900S_Channel(Tango::DeviceClass *cl,const char *s,const char *d);
//@}
/**@name Destructor
* Only one desctructor is defined for this class */
//@{
/**
* The object desctructor.
*/
~SY900S_Channel() {delete_device();};
/**
* will be called at device destruction or at init command.
*/
void delete_device();
//@}
/**@name Miscellaneous methods */
//@{
/**
* Initialize the device
*/
virtual void init_device();
/**
* Always executed method befor execution command method.
*/
virtual void always_executed_hook();
//@}
/**
* @name SY900S_Channel methods prototypes
*/
//@{
/**
* Hardware acquisition for attributes.
*/
virtual void read_attr_hardware(vector<long> &attr_list);
/**
* Extract real attribute values for voltage acquisition result.
*/
virtual void read_voltage(Tango::Attribute &attr);
/**
* Write voltage attribute values to hardware.
*/
virtual void write_voltage(Tango::WAttribute &attr);
/**
* Extract real attribute values for delta_Voltage acquisition result.
*/
virtual void read_delta_Voltage(Tango::Attribute &attr);
/**
* Write delta_Voltage attribute values to hardware.
*/
virtual void write_delta_Voltage(Tango::WAttribute &attr);
/**
* Extract real attribute values for target_Voltage acquisition result.
*/
virtual void read_target_Voltage(Tango::Attribute &attr);
/**
* Write target_Voltage attribute values to hardware.
*/
virtual void write_target_Voltage(Tango::WAttribute &attr);
/**
* Extract real attribute values for channel acquisition result.
*/
virtual void read_channel(Tango::Attribute &attr);
/**
* Extract real attribute values for group acquisition result.
*/
virtual void read_group(Tango::Attribute &attr);
/**
* Read/Write allowed for voltage attribute.
*/
virtual bool is_voltage_allowed(Tango::AttReqType type);
/**
* Read/Write allowed for delta_Voltage attribute.
*/
virtual bool is_delta_Voltage_allowed(Tango::AttReqType type);
/**
* Read/Write allowed for target_Voltage attribute.
*/
virtual bool is_target_Voltage_allowed(Tango::AttReqType type);
/**
* Read/Write allowed for channel attribute.
*/
virtual bool is_channel_allowed(Tango::AttReqType type);
/**
* Read/Write allowed for group attribute.
*/
virtual bool is_group_allowed(Tango::AttReqType type);
/**
* This command gets the device status (stored in its <i>device_status</i> data member) and returns it to the caller.
* @return Status descrition
* @exception DevFailed
*/
virtual Tango::ConstDevString dev_status();
/**
* Read the device properties from database
*/
void get_device_property();
//@}
// Here is the end of the automatic code generation part
//-------------------------------------------------------------
protected :
// Add your own data members here
//-----------------------------------------
//data:
std::string statusStr;
Tango::DeviceProxyHelper* SY900S_generic_Proxy;
//methodes
void init_SY900S_generic_Proxy();
std::string command_generation(long group_num,std::string specific_command_part,
double preset,long channel_num,bool set);
std::string write_read(std::string command_to_send);
double get_value(std::string string);
// std::string get_status(std::string string);
// void test_response(std::string response);
};
} // namespace
#endif // _SY900S_CHANNEL_H
static const char *RcsId = "$Header: /users/chaize/newsvn/cvsroot/Instrumentation/SY900S_channel/src/SY900S_ChannelClass.cpp,v 1.1.1.1 2006-08-02 07:46:44 stephle Exp $";
static const char *TagName = "$Name: not supported by cvs2svn $";
static const char *FileName= "$Source: /users/chaize/newsvn/cvsroot/Instrumentation/SY900S_channel/src/SY900S_ChannelClass.cpp,v $";
static const char *HttpServer= "http://controle/DeviceServer/doc/";
static const char *RCSfile = "$RCSfile: SY900S_ChannelClass.cpp,v $";
//+=============================================================================
//
// file : SY900S_ChannelClass.cpp
//
// description : C++ source for the SY900S_ChannelClass. A singleton
// class derived from DeviceClass. It implements the
// command list and all properties and methods required
// by the SY900S_Channel once per process.
//
// project : TANGO Device Server
//
// $Author: stephle $
//
// $Revision: 1.1.1.1 $
//
// $Log: not supported by cvs2svn $
//
// copyleft : Synchrotron SOLEIL
// L'Orme des Merisiers
// Saint-Aubin - BP 48
//
//-=============================================================================
//
// This file is generated by POGO
// (Program Obviously used to Generate tango Object)
//
// (c) - Software Engineering Group - ESRF
//============================================================================
#include <tango.h>
#include <SY900S_Channel.h>
#include <SY900S_ChannelClass.h>
namespace SY900S_Channel_ns
{//
//----------------------------------------------------------------
// Initialize pointer for singleton pattern
//----------------------------------------------------------------
//
SY900S_ChannelClass *SY900S_ChannelClass::_instance = NULL;
//+----------------------------------------------------------------------------
//
// method : SY900S_ChannelClass::SY900S_ChannelClass(string &s)
//
// description : constructor for the SY900S_ChannelClass
//
// in : - s : The class name
//
//-----------------------------------------------------------------------------
SY900S_ChannelClass::SY900S_ChannelClass(string &s):DeviceClass(s)
{
cout2 << "Entering SY900S_ChannelClass constructor" << endl;
write_class_property();
cout2 << "Leaving SY900S_ChannelClass constructor" << endl;
}
//+----------------------------------------------------------------------------
//
// method : SY900S_ChannelClass::~SY900S_ChannelClass()
//
// description : destructor for the SY900S_ChannelClass
//
//-----------------------------------------------------------------------------
SY900S_ChannelClass::~SY900S_ChannelClass()
{
_instance = NULL;
}
//+----------------------------------------------------------------------------
//
// method : SY900S_ChannelClass::instance
//
// description : Create the object if not already done. Otherwise, just
// return a pointer to the object
//
// in : - name : The class name
//
//-----------------------------------------------------------------------------
SY900S_ChannelClass *SY900S_ChannelClass::init(const char *name)
{
if (_instance == NULL)
{
try
{
string s(name);
_instance = new SY900S_ChannelClass(s);
}
catch (bad_alloc)
{
throw;
}
}
return _instance;
}
SY900S_ChannelClass *SY900S_ChannelClass::instance()
{
if (_instance == NULL)
{
cerr << "Class is not initialised !!" << endl;
exit(-1);
}
return _instance;
}
//+----------------------------------------------------------------------------
//
// method : SY900S_ChannelClass::command_factory
//
// description : Create the command object(s) and store them in the
// command list
//
//-----------------------------------------------------------------------------
void SY900S_ChannelClass::command_factory()
{
// add polling if any
for (unsigned int i=0 ; i<command_list.size(); i++)
{
}
}
//+----------------------------------------------------------------------------
//
// method : SY900S_ChannelClass::get_class_property
//
// description : Get the class property for specified name.
//
// in : string name : The property name
//
//+----------------------------------------------------------------------------
Tango::DbDatum SY900S_ChannelClass::get_class_property(string &name)
{
for (int i=0 ; i<cl_prop.size() ; i++)
if (cl_prop[i].name == name)
return cl_prop[i];
// if not found, return an empty DbDatum
return Tango::DbDatum(name);
}
//+----------------------------------------------------------------------------
//
// method : SY900S_ChannelClass::device_factory
//
// description : Create the device object(s) and store them in the
// device list
//
// in : Tango::DevVarStringArray *devlist_ptr : The device name list
//
//-----------------------------------------------------------------------------
void SY900S_ChannelClass::device_factory(const Tango::DevVarStringArray *devlist_ptr)
{
// Create all devices.(Automatic code generation)
//-------------------------------------------------------------
for (unsigned long i=0 ; i < devlist_ptr->length() ; i++)
{
cout4 << "Device name : " << (*devlist_ptr)[i].in() << endl;
// Create devices and add it into the device list
//----------------------------------------------------
device_list.push_back(new SY900S_Channel(this, (*devlist_ptr)[i]));
// Export device to the outside world
// Check before if database used.
//---------------------------------------------
if ((Tango::Util::_UseDb == true) && (Tango::Util::_FileDb == false))
export_device(device_list.back());
else
export_device(device_list.back(), (*devlist_ptr)[i]);
}
// End of Automatic code generation
//-------------------------------------------------------------
}
//+----------------------------------------------------------------------------
// Method: SY900S_ChannelClass::attribute_factory(vector<Tango::Attr *> &att_list)
//-----------------------------------------------------------------------------
void SY900S_ChannelClass::attribute_factory(vector<Tango::Attr *> &att_list)
{
// Attribute : voltage
voltageAttrib *voltage = new voltageAttrib();
Tango::UserDefaultAttrProp voltage_prop;
voltage_prop.set_label("Voltage");
voltage_prop.set_unit("V");
voltage_prop.set_standard_unit("V");
voltage_prop.set_display_unit("V");
voltage_prop.set_description("is the output voltage of the channel");
voltage->set_default_properties(voltage_prop);
att_list.push_back(voltage);
// Attribute : delta_Voltage
delta_VoltageAttrib *delta__voltage = new delta_VoltageAttrib();
Tango::UserDefaultAttrProp delta__voltage_prop;
delta__voltage_prop.set_label("differential voltage");
delta__voltage_prop.set_unit("V");
delta__voltage_prop.set_standard_unit("V");
delta__voltage_prop.set_display_unit("V");
delta__voltage_prop.set_description("This is a diffrential voltage. The Voltage\nattribute equal = current voltage + delta voltage");
delta__voltage->set_default_properties(delta__voltage_prop);
att_list.push_back(delta__voltage);
// Attribute : target_Voltage
target_VoltageAttrib *target__voltage = new target_VoltageAttrib();
Tango::UserDefaultAttrProp target__voltage_prop;
target__voltage_prop.set_label("Target Voltage");
target__voltage_prop.set_unit("V");
target__voltage_prop.set_standard_unit("V");
target__voltage_prop.set_display_unit("V");
target__voltage_prop.set_description("This is the Voltage to reach. This voltage is not\napplied after setting it. this is the command group\nwhich set the output voltage ");
target__voltage->set_default_properties(target__voltage_prop);
att_list.push_back(target__voltage);
// Attribute : channel
channelAttrib *channel = new channelAttrib();
Tango::UserDefaultAttrProp channel_prop;
channel_prop.set_label("channel");
channel_prop.set_unit(" ");
channel_prop.set_standard_unit(" ");
channel_prop.set_display_unit(" ");
channel_prop.set_description("channel number");
channel->set_default_properties(channel_prop);
att_list.push_back(channel);
// Attribute : group
groupAttrib *group = new groupAttrib();
Tango::UserDefaultAttrProp group_prop;
group_prop.set_label("group number");
group_prop.set_unit(" ");
group_prop.set_standard_unit(" ");
group_prop.set_display_unit(" ");
group_prop.set_description("group number");
group->set_default_properties(group_prop);
att_list.push_back(group);
}
//+----------------------------------------------------------------------------
//
// method : SY900S_ChannelClass::write_class_property
//
// description : Set class description as property in database
//
//-----------------------------------------------------------------------------
void SY900S_ChannelClass::write_class_property()
{
// First time, check if database used
//--------------------------------------------
if (Tango::Util::_UseDb == false)
return;
// Prepeare DbDatum
//--------------------------------------------
Tango::DbDatum title("ProjectTitle");
string str_title("SY900S_Channel");
title << str_title;
Tango::DbDatum description("Description");
vector<string> str_desc;
str_desc.push_back("this device controls one channel of the SY900S rack");
description << str_desc;
// Use the doc_url field to store all information
// on the server version and CVS
string::size_type pos, len;
// 1) Manage module name
// get rid of the $RCSfile: prefix and of Class.cpp suffix
string classname = RCSfile;
pos = classname.find("$RCSfile: ");
len = classname.length();
if (pos != string::npos)
classname= classname.substr(pos+10, len- pos-10);
pos = classname.find ("Class.cpp",0);
if (pos != string::npos)
classname=classname.substr(0,pos);
// 2) Manage version number with SOLEIL CVS rules
// tag name is in the form : release_1_0 ==> transform it to 1.0
//
string version ;
string str_TagName=string(TagName);
pos = str_TagName.find_first_of("_",0);
if (pos != string::npos)
version= str_TagName.substr(pos+1, 3);
pos = version.find_first_of("_",0);
if (pos != string::npos)
version[pos] = '.';
// Store all info in the str_url property
string str_url= "Documentation URL = " + string(HttpServer) + classname +"-" + version + "/index.html" + "\n";
str_url= str_url + " Version CVS Tag = " + string(TagName)+ "\n";
str_url= str_url + " CVS location = " + string(FileName)+ "\n";
Tango::DbDatum doc_url("doc_url");
doc_url << str_url;
// Push everything in DataBase
Tango::DbData data;
data.push_back(title);
data.push_back(description);
data.push_back(doc_url);
// Call database and and values
//--------------------------------------------
get_db_class()->put_property(data);
}
} // namespace
//=============================================================================
//
// file : SY900S_ChannelClass.h
//
// description : Include for the SY900S_ChannelClass class.
// This class is represents the singleton class for
// the SY900S_Channel device class.
// It contains all properties and methods which the
// SY900S_Channel requires only once e.g. the commands.
//
// project : TANGO Device Server
//
// $Author: stephle $
//
// $Revision: 1.1.1.1 $
//
// $Log: not supported by cvs2svn $
//
// copyleft : Synchrotron SOLEIL
// L'Orme des Merisiers
// Saint-Aubin - BP 48
//
//=============================================================================
//
// This file is generated by POGO
// (Program Obviously used to Generate tango Object)
//
// (c) - Software Engineering Group - ESRF
//=============================================================================
#ifndef _SY900S_CHANNELCLASS_H
#define _SY900S_CHANNELCLASS_H
#include <tango.h>
#include <SY900S_Channel.h>
namespace SY900S_Channel_ns
{
//=====================================
// Define classes for attributes
//=====================================
class groupAttrib: public Tango::Attr
{
public:
groupAttrib():Attr("group", Tango::DEV_LONG, Tango::READ) {};
~groupAttrib() {};
virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att)
{(static_cast<SY900S_Channel *>(dev))->read_group(att);}
virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty)
{return (static_cast<SY900S_Channel *>(dev))->is_group_allowed(ty);}
};
class channelAttrib: public Tango::Attr
{
public:
channelAttrib():Attr("channel", Tango::DEV_LONG, Tango::READ) {};
~channelAttrib() {};
virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att)
{(static_cast<SY900S_Channel *>(dev))->read_channel(att);}
virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty)
{return (static_cast<SY900S_Channel *>(dev))->is_channel_allowed(ty);}
};
class target_VoltageAttrib: public Tango::Attr
{
public:
target_VoltageAttrib():Attr("target_Voltage", Tango::DEV_DOUBLE, Tango::WRITE) {};
~target_VoltageAttrib() {};
virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att)
{(static_cast<SY900S_Channel *>(dev))->read_target_Voltage(att);}
virtual void write(Tango::DeviceImpl *dev,Tango::WAttribute &att)
{(static_cast<SY900S_Channel *>(dev))->write_target_Voltage(att);}
virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty)
{return (static_cast<SY900S_Channel *>(dev))->is_target_Voltage_allowed(ty);}
};
class delta_VoltageAttrib: public Tango::Attr
{
public:
delta_VoltageAttrib():Attr("delta_Voltage", Tango::DEV_DOUBLE, Tango::WRITE) {};
~delta_VoltageAttrib() {};
virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att)
{(static_cast<SY900S_Channel *>(dev))->read_delta_Voltage(att);}
virtual void write(Tango::DeviceImpl *dev,Tango::WAttribute &att)
{(static_cast<SY900S_Channel *>(dev))->write_delta_Voltage(att);}
virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty)
{return (static_cast<SY900S_Channel *>(dev))->is_delta_Voltage_allowed(ty);}
};
class voltageAttrib: public Tango::Attr
{
public:
voltageAttrib():Attr("voltage", Tango::DEV_DOUBLE, Tango::READ_WRITE) {};
~voltageAttrib() {};
virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att)
{(static_cast<SY900S_Channel *>(dev))->read_voltage(att);}
virtual void write(Tango::DeviceImpl *dev,Tango::WAttribute &att)
{(static_cast<SY900S_Channel *>(dev))->write_voltage(att);}
virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty)
{return (static_cast<SY900S_Channel *>(dev))->is_voltage_allowed(ty);}
};
//=========================================
// Define classes for commands
//=========================================
//
// The SY900S_ChannelClass singleton definition
//
class SY900S_ChannelClass : public Tango::DeviceClass
{
public:
// add your own data members here
//------------------------------------
public:
Tango::DbData cl_prop;
// Method prototypes
static SY900S_ChannelClass *init(const char *);
static SY900S_ChannelClass *instance();
~SY900S_ChannelClass();
Tango::DbDatum get_class_property(string &);
protected:
SY900S_ChannelClass(string &);
static SY900S_ChannelClass *_instance;
void command_factory();
void attribute_factory(vector<Tango::Attr *> &);
void write_class_property();
private:
void device_factory(const Tango::DevVarStringArray *);
};
} // namespace SY900S_Channel
#endif // _SY900S_CHANNELCLASS_H
static const char *RcsId = "$Header: /users/chaize/newsvn/cvsroot/Instrumentation/SY900S_channel/src/SY900S_ChannelStateMachine.cpp,v 1.1.1.1 2006-08-02 07:46:44 stephle Exp $";
//+=============================================================================
//
// file : SY900S_ChannelStateMachine.cpp
//
// description : C++ source for the SY900S_Channel and its alowed.
// method for commands and attributes
//
// project : TANGO Device Server
//
// $Author: stephle $
//
// $Revision: 1.1.1.1 $
//
// $Log: not supported by cvs2svn $
//
// copyleft : Synchrotron SOLEIL
// L'Orme des Merisiers
// Saint-Aubin - BP 48
//
//-=============================================================================
//
// This file is generated by POGO
// (Program Obviously used to Generate tango Object)
//
// (c) - Software Engineering Group - ESRF
//=============================================================================
#include <tango.h>
#include <SY900S_Channel.h>
#include <SY900S_ChannelClass.h>
/*====================================================================
* This file contains the methods to allow commands and attributes
* read or write execution.
*
* If you wand to add your own code, add it between
* the "End/Re-Start of Generated Code" comments.
*
* If you want, you can also add your own methods.
*====================================================================
*/
namespace SY900S_Channel_ns
{
//=================================================
// Attributes Allowed Methods
//=================================================
//+----------------------------------------------------------------------------
//
// method : SY900S_Channel::is_target_Voltage_allowed
//
// description : Read/Write allowed for target_Voltage attribute.
//
//-----------------------------------------------------------------------------
bool SY900S_Channel::is_target_Voltage_allowed(Tango::AttReqType type)
{
// End of Generated Code
// Re-Start of Generated Code
return true;
}
//+----------------------------------------------------------------------------
//
// method : SY900S_Channel::is_voltage_allowed
//
// description : Read/Write allowed for voltage attribute.
//
//-----------------------------------------------------------------------------
bool SY900S_Channel::is_voltage_allowed(Tango::AttReqType type)
{
// End of Generated Code
// Re-Start of Generated Code
return true;
}
//+----------------------------------------------------------------------------
//
// method : SY900S_Channel::is_delta_Voltage_allowed
//
// description : Read/Write allowed for delta_Voltage attribute.
//
//-----------------------------------------------------------------------------
bool SY900S_Channel::is_delta_Voltage_allowed(Tango::AttReqType type)
{
// End of Generated Code
// Re-Start of Generated Code
return true;
}
//+----------------------------------------------------------------------------
//
// method : SY900S_Channel::is_channel_allowed
//
// description : Read/Write allowed for channel attribute.
//
//-----------------------------------------------------------------------------
bool SY900S_Channel::is_channel_allowed(Tango::AttReqType type)
{
// End of Generated Code
// Re-Start of Generated Code
return true;
}
//+----------------------------------------------------------------------------
//
// method : SY900S_Channel::is_group_allowed
//
// description : Read/Write allowed for group attribute.
//
//-----------------------------------------------------------------------------
bool SY900S_Channel::is_group_allowed(Tango::AttReqType type)
{
// End of Generated Code
// Re-Start of Generated Code
return true;
}
//=================================================
// Commands Allowed Methods
//=================================================
} // namespace SY900S_Channel
static const char *RcsId = "$Header: /users/chaize/newsvn/cvsroot/Instrumentation/SY900S_channel/src/main.cpp,v 1.1.1.1 2006-08-02 07:46:44 stephle Exp $";
//+=============================================================================
//
// file : main.cpp
//
// description : C++ source for a TANGO device server main.
// The main rule is to initialise (and create) the Tango
// system and to create the DServerClass singleton.
// The main should be the same for every Tango device server.
//
// project : TANGO Device Server
//
// $Author: stephle $
//
// $Revision: 1.1.1.1 $ $
//
// $Log: not supported by cvs2svn $
//
// copyleft : European Synchrotron Radiation Facility
// BP 220, Grenoble 38043
// FRANCE
//
//-=============================================================================
//
// This file is generated by POGO
// (Program Obviously used to Generate tango Object)
//
// (c) - Software Engineering Group - ESRF
//=============================================================================
#include <tango.h>
int main(int argc,char *argv[])
{
Tango::Util *tg;
try
{
// Initialise the device server
//----------------------------------------
tg = Tango::Util::init(argc,argv);
// Create the device server singleton
// which will create everything
//----------------------------------------
tg->server_init(false);
// Run the endless loop
//----------------------------------------
cout << "Ready to accept request" << endl;
tg->server_run();
}
catch (bad_alloc)
{
cout << "Can't allocate memory to store device object !!!" << endl;
cout << "Exiting" << endl;
}
catch (CORBA::Exception &e)
{
Tango::Except::print_exception(e);
cout << "Received a CORBA_Exception" << endl;
cout << "Exiting" << endl;
}
tg->server_cleanup();
return(0);
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment