diff --git a/src/AcquireWaveformLecroy.cpp b/src/AcquireWaveformLecroy.cpp index da6986e8b07b4045f78a493dc99df1805e4f37f5..a783c058b924aba8964c6ac3194cfc9acab3b6e1 100644 --- a/src/AcquireWaveformLecroy.cpp +++ b/src/AcquireWaveformLecroy.cpp @@ -1,19 +1,19 @@ -static const char *RcsId = "$Header: /users/chaize/newsvn/cvsroot/Instrumentation/AcquireWaveformLecroy/src/AcquireWaveformLecroy.cpp,v 1.8 2008-02-26 08:32:59 xavela Exp $"; +static const char *RcsId = "$Header: /users/chaize/newsvn/cvsroot/Instrumentation/AcquireWaveformLecroy/src/AcquireWaveformLecroy.cpp,v 1.9 2008-02-28 09:02:05 xavela Exp $"; //+============================================================================= // -// file : AcquireWaveformLecroy.cpp +// file : AcquireWaveformLecroy.cpp // // description : C++ source for the AcquireWaveformLecroy 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 -// AcquireWaveformLecroy are implemented in this file. +// 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 +// AcquireWaveformLecroy are implemented in this file. // -// project : TANGO Device Server +// project : TANGO Device Server // // $Author: xavela $ // -// $Revision: 1.8 $ +// $Revision: 1.9 $ // // $Log: not supported by cvs2svn $ // Revision 1.7 2004/10/22 13:24:47 buteau @@ -48,61 +48,69 @@ static const char *RcsId = "$Header: /users/chaize/newsvn/cvsroot/Instrumentatio // //-============================================================================= // -// This file is generated by POGO +// This file is generated by POGO // (Program Obviously used to Generate tango Object) // -// (c) - Software Engineering Group - ESRF +// (c) - Software Engineering Group - ESRF //============================================================================= + //=================================================================== // -// The folowing table gives the correspondance +// The following table gives the correspondance // between commands and method's name. // -// Command's name | Method's name +// Command's name| Method's name // ---------------------------------------- -// State | dev_state() -// Status | dev_status() +// State | dev_state() +// Status | dev_status() +// WriteRead | write_read() // //=================================================================== + #include <tango.h> #include <AcquireWaveformLecroy.h> +#include <AcquireWaveformLecroyClass.h> -namespace AcquireWaveformLecroy +static const int MAX_RESPONSE_LENGTH = 150000; + +namespace AcquireWaveformLecroy_ns { //+---------------------------------------------------------------------------- // -// method : AcquireWaveformLecroy::AcquireWaveformLecroy(string &s) +// method : AcquireWaveformLecroy::AcquireWaveformLecroy(string &s) // -// description : constructor for simulated AcquireWaveformLecroy +// description : constructor for simulated AcquireWaveformLecroy // // in : - cl : Pointer to the DeviceClass object -// - s : Device name +// - s : Device name // //----------------------------------------------------------------------------- -AcquireWaveformLecroy::AcquireWaveformLecroy(Tango::DeviceClass *cl,string &s):Tango::Device_2Impl(cl,s.c_str()) +AcquireWaveformLecroy::AcquireWaveformLecroy(Tango::DeviceClass *cl,string &s) +:Tango::Device_3Impl(cl,s.c_str()) { init_device(); } -AcquireWaveformLecroy::AcquireWaveformLecroy(Tango::DeviceClass *cl,const char *s):Tango::Device_2Impl(cl,s) +AcquireWaveformLecroy::AcquireWaveformLecroy(Tango::DeviceClass *cl,const char *s) +:Tango::Device_3Impl(cl,s) { init_device(); } AcquireWaveformLecroy::AcquireWaveformLecroy(Tango::DeviceClass *cl,const char *s,const char *d) -:Tango::Device_2Impl(cl,s,d) +:Tango::Device_3Impl(cl,s,d) { init_device(); } //+---------------------------------------------------------------------------- // -// method : AcquireWaveformLecroy::delete_device() +// method : AcquireWaveformLecroy::delete_device() // -// description : will be called at device destruction or at init command. +// description : will be called at device destruction or at init command. // //----------------------------------------------------------------------------- void AcquireWaveformLecroy::delete_device() @@ -165,13 +173,18 @@ void AcquireWaveformLecroy::delete_device() delete waveform_ptr; waveform_ptr = 0; } + if(_deviceResponse) + { + delete [] _deviceResponse; + _deviceResponse = 0; + } } //+---------------------------------------------------------------------------- // -// method : AcquireWaveformLecroy::init_device() +// method : AcquireWaveformLecroy::init_device() // -// description : will be called at device initialization. +// description : will be called at device initialization. // //----------------------------------------------------------------------------- void AcquireWaveformLecroy::init_device() @@ -217,6 +230,8 @@ void AcquireWaveformLecroy::init_device() *attr_triggerTime_read = new char[MAX_STRING_LENGTH]; ::memset(*attr_triggerTime_read, 0, MAX_STRING_LENGTH * sizeof(char)); + _deviceResponse = new char[MAX_RESPONSE_LENGTH]; + //- Initialise variables to default values //-------------------------------------------- data_value=0; @@ -248,9 +263,9 @@ void AcquireWaveformLecroy::init_device() //+---------------------------------------------------------------------------- // -// method : AcquireWaveformLecroy::readDeviceProperies() +// method : AcquireWaveformLecroy::get_device_property() // -// description : Read the device properties from database. +// description : Read the device properties from database. // //----------------------------------------------------------------------------- void AcquireWaveformLecroy::get_device_property() @@ -262,43 +277,67 @@ void AcquireWaveformLecroy::get_device_property() //- Read device properties from database.(Automatic code generation) //------------------------------------------------------------- - Tango::DbData data; - data.push_back(Tango::DbDatum("IPaddress")); - data.push_back(Tango::DbDatum("ChannelName")); + Tango::DbData dev_prop; + dev_prop.push_back(Tango::DbDatum("IPaddress")); + dev_prop.push_back(Tango::DbDatum("ChannelName")); // Call database and extract values //-------------------------------------------- - get_db_device()->get_property(data); - if (data[0].is_empty()==false) data[0] >> iPaddress; - if (data[1].is_empty()==false) data[1] >> channelName; + if (Tango::Util::instance()->_UseDb==true) + get_db_device()->get_property(dev_prop); + Tango::DbDatum def_prop, cl_prop; + AcquireWaveformLecroyClass *ds_class = + (static_cast<AcquireWaveformLecroyClass *>(get_device_class())); + int i = -1; + + // Try to initialize IPaddress from class property + cl_prop = ds_class->get_class_property(dev_prop[++i].name); + if (cl_prop.is_empty()==false) cl_prop >> iPaddress; + // Try to initialize IPaddress from default device value + def_prop = ds_class->get_default_device_property(dev_prop[i].name); + if (def_prop.is_empty()==false) def_prop >> iPaddress; + // And try to extract IPaddress value from database + if (dev_prop[i].is_empty()==false) dev_prop[i] >> iPaddress; + + // Try to initialize ChannelName from class property + cl_prop = ds_class->get_class_property(dev_prop[++i].name); + if (cl_prop.is_empty()==false) cl_prop >> channelName; + // Try to initialize ChannelName from default device value + def_prop = ds_class->get_default_device_property(dev_prop[i].name); + if (def_prop.is_empty()==false) def_prop >> channelName; + // And try to extract ChannelName value from database + if (dev_prop[i].is_empty()==false) dev_prop[i] >> channelName; + //- End of Automatic code generation //------------------------------------------------------------- Tango::DbData data_put; - if (data[0].is_empty()==true) + if (dev_prop[0].is_empty()==true) { Tango::DbDatum property("IPaddress"); property << iPaddress; data_put.push_back(property); } - if (data[1].is_empty()==true) + if (dev_prop[1].is_empty()==true) { Tango::DbDatum property("ChannelName"); property << channelName; data_put.push_back(property); } + // End of Automatic code generation + //------------------------------------------------------------------ if( !data_put.empty() ) get_db_device()->put_property(data_put); } //+---------------------------------------------------------------------------- // -// method : AcquireWaveformLecroy::always_executed_hook() +// method : AcquireWaveformLecroy::always_executed_hook() // -// description : method always executed before any command is executed +// description : method always executed before any command is executed // //----------------------------------------------------------------------------- void AcquireWaveformLecroy::always_executed_hook() @@ -478,6 +517,160 @@ void AcquireWaveformLecroy::read_attr_hardware(vector<long> &attr_list) } } +//+---------------------------------------------------------------------------- +// +// method : AcquireWaveformLecroy::read_verticalScaledData +// +// description : Extract real attribute values for verticalScaledData acquisition result. +// +//----------------------------------------------------------------------------- +void AcquireWaveformLecroy::read_verticalScaledData(Tango::Attribute &attr) +{ + DEBUG_STREAM << "AcquireWaveformLecroy::read_verticalScaledData(Tango::Attribute &attr) entering... "<< endl; + // Add your own code here + attr.set_value(attr_verticalScaledData_read, data_length); +} + +//+---------------------------------------------------------------------------- +// +// method : AcquireWaveformLecroy::read_triggerTime +// +// description : Extract real attribute values for triggerTime acquisition result. +// +//----------------------------------------------------------------------------- +void AcquireWaveformLecroy::read_triggerTime(Tango::Attribute &attr) +{ + DEBUG_STREAM << "AcquireWaveformLecroy::read_triggerTime(Tango::Attribute &attr) entering... "<< endl; + // Add your own code here + attr.set_value(attr_triggerTime_read); +} + +//+---------------------------------------------------------------------------- +// +// method : AcquireWaveformLecroy::read_verticalOffset +// +// description : Extract real attribute values for verticalOffset acquisition result. +// +//----------------------------------------------------------------------------- +void AcquireWaveformLecroy::read_verticalOffset(Tango::Attribute &attr) +{ + DEBUG_STREAM << "AcquireWaveformLecroy::read_verticalOffset(Tango::Attribute &attr) entering... "<< endl; + //- Add your own code here + attr.set_value(attr_verticalOffset_read); +} + +//+---------------------------------------------------------------------------- +// +// method : AcquireWaveformLecroy::read_verticalGain +// +// description : Extract real attribute values for verticalGain acquisition result. +// +//----------------------------------------------------------------------------- +void AcquireWaveformLecroy::read_verticalGain(Tango::Attribute &attr) +{ + DEBUG_STREAM << "AcquireWaveformLecroy::read_verticalGain(Tango::Attribute &attr) entering... "<< endl; + //- Add your own code here + attr.set_value(attr_verticalGain_read); +} + +//+---------------------------------------------------------------------------- +// +// method : AcquireWaveformLecroy::read_horizontalOffset +// +// description : Extract real attribute values for horizontalOffset acquisition result. +// +//----------------------------------------------------------------------------- +void AcquireWaveformLecroy::read_horizontalOffset(Tango::Attribute &attr) +{ + DEBUG_STREAM << "AcquireWaveformLecroy::read_horizontalOffset(Tango::Attribute &attr) entering... "<< endl; + //- Add your own code here + attr.set_value(attr_horizontalOffset_read); +} + +//+---------------------------------------------------------------------------- +// +// method : AcquireWaveformLecroy::read_horizontalInterval +// +// description : Extract real attribute values for horizontalInterval acquisition result. +// +//----------------------------------------------------------------------------- +void AcquireWaveformLecroy::read_horizontalInterval(Tango::Attribute &attr) +{ + DEBUG_STREAM << "AcquireWaveformLecroy::read_horizontalInterval(Tango::Attribute &attr) entering... "<< endl; + //- Add your own code here + attr.set_value(attr_horizontalInterval_read); +} + +//+---------------------------------------------------------------------------- +// +// method : AcquireWaveformLecroy::read_nominalBits +// +// description : Extract real attribute values for nominalBits acquisition result. +// +//----------------------------------------------------------------------------- +void AcquireWaveformLecroy::read_nominalBits(Tango::Attribute &attr) +{ + DEBUG_STREAM << "AcquireWaveformLecroy::read_nominalBits(Tango::Attribute &attr) entering... "<< endl; + //- Add your own code here + attr.set_value(attr_nominalBits_read); +} + +//+---------------------------------------------------------------------------- +// +// method : AcquireWaveformLecroy::read_waveArrayCount +// +// description : Extract real attribute values for waveArrayCount acquisition result. +// +//----------------------------------------------------------------------------- +void AcquireWaveformLecroy::read_waveArrayCount(Tango::Attribute &attr) +{ + DEBUG_STREAM << "AcquireWaveformLecroy::read_waveArrayCount(Tango::Attribute &attr) entering... "<< endl; + //- Add your own code here + attr.set_value(attr_waveArrayCount_read); +} + +//+---------------------------------------------------------------------------- +// +// method : AcquireWaveformLecroy::read_waveArray2 +// +// description : Extract real attribute values for waveArray2 acquisition result. +// +//----------------------------------------------------------------------------- +void AcquireWaveformLecroy::read_waveArray2(Tango::Attribute &attr) +{ + DEBUG_STREAM << "AcquireWaveformLecroy::read_waveArray2(Tango::Attribute &attr) entering... "<< endl; + // Add your own code here + attr.set_value(attr_waveArray2_read); +} + +//+---------------------------------------------------------------------------- +// +// method : AcquireWaveformLecroy::read_waveArray1 +// +// description : Extract real attribute values for waveArray1 acquisition result. +// +//----------------------------------------------------------------------------- +void AcquireWaveformLecroy::read_waveArray1(Tango::Attribute &attr) +{ + DEBUG_STREAM << "AcquireWaveformLecroy::read_waveArray1(Tango::Attribute &attr) entering... "<< endl; + //- Add your own code here + attr.set_value(attr_waveArray1_read); +} + +//+---------------------------------------------------------------------------- +// +// method : AcquireWaveformLecroy::read_rawWaveformData +// +// description : Extract real attribute values for rawWaveformData acquisition result. +// +//----------------------------------------------------------------------------- +void AcquireWaveformLecroy::read_rawWaveformData(Tango::Attribute &attr) +{ + DEBUG_STREAM << "AcquireWaveformLecroy::read_rawWaveformData(Tango::Attribute &attr) entering... "<< endl; + //- Add your own code here + attr.set_value(attr_rawWaveformData_read, data_length); +} + //+---------------------------------------------------------------------------- // @@ -487,6 +680,11 @@ void AcquireWaveformLecroy::read_attr_hardware(vector<long> &attr_list) // hardware acquisition result. // //----------------------------------------------------------------------------- +#ifdef DEV_IMPL_2 +#ifdef DEV_IMPL_2 +#ifdef DEV_IMPL_2 +#ifdef DEV_IMPL_2 +#ifdef DEV_IMPL_2 void AcquireWaveformLecroy::read_attr(Tango::Attribute &attr) { string &attr_name = attr.get_name(); @@ -562,6 +760,11 @@ void AcquireWaveformLecroy::read_attr(Tango::Attribute &attr) } } +#endif +#endif +#endif +#endif +#endif //+---------------------------------------------------------------------------- // @@ -606,4 +809,73 @@ Tango::DevFailed AcquireWaveformLecroy::lecroy_to_tango_exception(const lecroy:: } +//+------------------------------------------------------------------ +/** + * method: AcquireWaveformLecroy::write_read + * + * description: method to execute "WriteRead" + * Command to send a specific command to the Lecroy device + * + * @param argin char command, int lentgh, int bytes_written + * @return bytes written + * + */ +//+------------------------------------------------------------------ +//Tango::DevLong AcquireWaveformLecroy::write_read(const Tango::DevVarLongStringArray *argin) +//{ +// DEBUG_STREAM << "AcquireWaveformLecroy::write_read(): entering... !" << endl; +// +// // Add your own code to control device here +// std::string cmd_to_send(argin->svalue[0]); +// int length = (*argin)dvalue[0]; +// int bytes_written = -1; +// +// ptr_com->TCP_WriteDevice(cmd_to_send.c_str(), cmd_to_send.size(), true); +// +// //- check if a response is expected (must found ? character) +// if(cmd_to_send.find('?') +// { +// ptr_com->TCP_ReadDevice(response, max_length, &bytes_written); +// } +// +// return bytes_written; +//} + +//+------------------------------------------------------------------ +/** + * method: AcquireWaveformLecroy::write_read + * + * description: method to execute "WriteRead" + * Command to send a specific command to the Lecroy device + * + * @param argin command to send + * @return device response (if any) + * + */ +//+------------------------------------------------------------------ +Tango::DevString AcquireWaveformLecroy::write_read(Tango::DevString argin) +{ + // POGO has generated a method core with argout allocation. + // If you would like to use a static reference without copying, + // See "TANGO Device Server Programmer's Manual" + // (chapter : Writing a TANGO DS / Exchanging data) + //------------------------------------------------------------ + DEBUG_STREAM << "AcquireWaveformLecroy::write_read(): entering... !" << endl; + + // Add your own code to control device here + std::string cmd_to_send(argin); + int bytes_received = -1; + + ptr_com->TCP_WriteDevice(argin, cmd_to_send.size(), true); + + //- check if a response is expected (must found ? character) + strcpy(_deviceResponse, "No response"); + if( cmd_to_send.find('?') != std::string::npos ) + { + ptr_com->TCP_ReadDevice(_deviceResponse, MAX_RESPONSE_LENGTH, &bytes_received); + } + + return _deviceResponse; +} + } // namespace diff --git a/src/AcquireWaveformLecroy.dsp b/src/AcquireWaveformLecroy.dsp index 9b55fe7dd35f5172e5479a361ad6f39867be203c..f21b11dc33511bf7a23ae8ae74e29857c1825af0 100644 --- a/src/AcquireWaveformLecroy.dsp +++ b/src/AcquireWaveformLecroy.dsp @@ -86,23 +86,39 @@ LINK32=link.exe # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File +SOURCE=AcquireWaveformLecroy.cpp +# End Source File +# Begin Source File + +SOURCE=AcquireWaveformLecroyClass.cpp +# End Source File +# Begin Source File + +SOURCE=AcquireWaveformLecroyStateMachine.cpp +# End Source File +# Begin Source File + SOURCE=ClassFactory.cpp # End Source File # Begin Source File +SOURCE=.\LecroyException.cpp +# End Source File +# Begin Source File + SOURCE=main.cpp # End Source File # Begin Source File -SOURCE=AcquireWaveformLecroy.cpp +SOURCE=.\SocketException.cpp # End Source File # Begin Source File -SOURCE=AcquireWaveformLecroyClass.cpp +SOURCE=.\SocketLecroy.cpp # End Source File # Begin Source File -SOURCE=AcquireWaveformLecroyStateMachine.cpp +SOURCE=.\Waveform.cpp # End Source File # End Group # Begin Group "Header Files" diff --git a/src/AcquireWaveformLecroy.dsw b/src/AcquireWaveformLecroy.dsw new file mode 100644 index 0000000000000000000000000000000000000000..84775356bd01cecc1a844401d876baf93dbc0dec --- /dev/null +++ b/src/AcquireWaveformLecroy.dsw @@ -0,0 +1,29 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "AcquireWaveformLecroy"=.\AcquireWaveformLecroy.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/src/AcquireWaveformLecroy.h b/src/AcquireWaveformLecroy.h index 4c1ed08df5475703e188969ec526356ff40f8d0f..9eaf7786cb0730d6fa1dd62d9bdecd40879a3f2a 100644 --- a/src/AcquireWaveformLecroy.h +++ b/src/AcquireWaveformLecroy.h @@ -8,7 +8,7 @@ // // $Author: xavela $ // -// $Revision: 1.6 $ +// $Revision: 1.7 $ // // $Log: not supported by cvs2svn $ // Revision 1.5 2004/10/18 13:17:49 xavela @@ -47,14 +47,14 @@ #include <tango.h> //using namespace Tango; -#include "..\include\SocketLecroy.h" -#include "..\include\SocketException.h" -#include "..\include\Waveform.h" -#include "..\include\WaveformException.h" +#include "SocketLecroy.h" +#include "SocketException.h" +#include "Waveform.h" +#include "WaveformException.h" /** * @author $Author: xavela $ - * @version $Revision: 1.6 $ $ + * @version $Revision: 1.7 $ $ */ // Add your own constants definitions here. @@ -63,7 +63,7 @@ const int MAX_STRING_LENGTH = 256; const int MAX_SIZE = 150000; -namespace AcquireWaveformLecroy +namespace AcquireWaveformLecroy_ns { /** @@ -83,15 +83,15 @@ namespace AcquireWaveformLecroy /* * Device States Description: - * Tango::OPEN : The socket TCP IP is successfully opened between the Lecroy scope and - * this DServer. - * Tango::CLOSE : The communication between the Lecroy scope and the DServer is closed. - * Tango::FAULT : The communication between the Lecroy scope and the DServer is not done. - * Tango::ALARM : An error occured during a Write or Read command. +* Tango::OPEN : The socket TCP IP is successfully opened between the Lecroy scope and + * this DServer. +* Tango::CLOSE : The communication between the Lecroy scope and the DServer is closed. +* Tango::FAULT : The communication between the Lecroy scope and the DServer is not done. +* Tango::ALARM : An error occured during a Write or Read command. */ -class AcquireWaveformLecroy: public Tango::Device_2Impl +class AcquireWaveformLecroy: public Tango::Device_3Impl { public : // Add your own data members here @@ -105,17 +105,17 @@ public : * Attributs member data. */ //@{ - Tango::DevShort *attr_rawWaveformData_read; - Tango::DevDouble *attr_verticalScaledData_read; - Tango::DevLong *attr_waveArray1_read; - Tango::DevLong *attr_waveArray2_read; - Tango::DevLong *attr_waveArrayCount_read; - Tango::DevShort *attr_nominalBits_read; - Tango::DevDouble *attr_horizontalInterval_read; - Tango::DevDouble *attr_horizontalOffset_read; - Tango::DevDouble *attr_verticalGain_read; - Tango::DevDouble *attr_verticalOffset_read; Tango::DevString *attr_triggerTime_read; + Tango::DevDouble *attr_verticalOffset_read; + Tango::DevDouble *attr_verticalGain_read; + Tango::DevDouble *attr_horizontalOffset_read; + Tango::DevDouble *attr_horizontalInterval_read; + Tango::DevShort *attr_nominalBits_read; + Tango::DevLong *attr_waveArrayCount_read; + Tango::DevLong *attr_waveArray2_read; + Tango::DevLong *attr_waveArray1_read; + Tango::DevDouble *attr_verticalScaledData_read; + Tango::DevShort *attr_rawWaveformData_read; //@} /** @@ -149,14 +149,14 @@ public : * @param cl Class. * @param s Device Name */ - AcquireWaveformLecroy(Tango::DeviceClass *,string &); + AcquireWaveformLecroy(Tango::DeviceClass *cl,string &s); /** * Constructs a newly allocated Command object. * * @param cl Class. * @param s Device Name */ - AcquireWaveformLecroy(Tango::DeviceClass *,const char *); + AcquireWaveformLecroy(Tango::DeviceClass *cl,const char *s); /** * Constructs a newly allocated Command object. * @@ -164,7 +164,7 @@ public : * @param s Device name * @param d Device description. */ - AcquireWaveformLecroy(Tango::DeviceClass *,const char *,const char *); + AcquireWaveformLecroy(Tango::DeviceClass *cl,const char *s,const char *d); //@} /**@name Destructor @@ -173,7 +173,7 @@ public : /** * The object desctructor. */ - ~AcquireWaveformLecroy() { delete_device(); }; + ~AcquireWaveformLecroy() {delete_device();}; /** * will be called at device destruction or at init command. */ @@ -204,9 +204,104 @@ public : */ virtual void read_attr_hardware(vector<long> &attr_list); /** - * Extract real attribute values from hardware acquisition result. + * Extract real attribute values for triggerTime acquisition result. + */ + virtual void read_triggerTime(Tango::Attribute &attr); +/** + * Extract real attribute values for verticalOffset acquisition result. + */ + virtual void read_verticalOffset(Tango::Attribute &attr); +/** + * Extract real attribute values for verticalGain acquisition result. + */ + virtual void read_verticalGain(Tango::Attribute &attr); +/** + * Extract real attribute values for horizontalOffset acquisition result. + */ + virtual void read_horizontalOffset(Tango::Attribute &attr); +/** + * Extract real attribute values for horizontalInterval acquisition result. + */ + virtual void read_horizontalInterval(Tango::Attribute &attr); +/** + * Extract real attribute values for nominalBits acquisition result. + */ + virtual void read_nominalBits(Tango::Attribute &attr); +/** + * Extract real attribute values for waveArrayCount acquisition result. + */ + virtual void read_waveArrayCount(Tango::Attribute &attr); +/** + * Extract real attribute values for waveArray2 acquisition result. + */ + virtual void read_waveArray2(Tango::Attribute &attr); +/** + * Extract real attribute values for waveArray1 acquisition result. + */ + virtual void read_waveArray1(Tango::Attribute &attr); +/** + * Extract real attribute values for verticalScaledData acquisition result. + */ + virtual void read_verticalScaledData(Tango::Attribute &attr); +/** + * Extract real attribute values for rawWaveformData acquisition result. + */ + virtual void read_rawWaveformData(Tango::Attribute &attr); +/** + * Read/Write allowed for triggerTime attribute. + */ + virtual bool is_triggerTime_allowed(Tango::AttReqType type); +/** + * Read/Write allowed for verticalOffset attribute. + */ + virtual bool is_verticalOffset_allowed(Tango::AttReqType type); +/** + * Read/Write allowed for verticalGain attribute. + */ + virtual bool is_verticalGain_allowed(Tango::AttReqType type); +/** + * Read/Write allowed for horizontalOffset attribute. + */ + virtual bool is_horizontalOffset_allowed(Tango::AttReqType type); +/** + * Read/Write allowed for horizontalInterval attribute. + */ + virtual bool is_horizontalInterval_allowed(Tango::AttReqType type); +/** + * Read/Write allowed for nominalBits attribute. + */ + virtual bool is_nominalBits_allowed(Tango::AttReqType type); +/** + * Read/Write allowed for waveArrayCount attribute. + */ + virtual bool is_waveArrayCount_allowed(Tango::AttReqType type); +/** + * Read/Write allowed for waveArray2 attribute. + */ + virtual bool is_waveArray2_allowed(Tango::AttReqType type); +/** + * Read/Write allowed for waveArray1 attribute. + */ + virtual bool is_waveArray1_allowed(Tango::AttReqType type); +/** + * Read/Write allowed for verticalScaledData attribute. + */ + virtual bool is_verticalScaledData_allowed(Tango::AttReqType type); +/** + * Read/Write allowed for rawWaveformData attribute. + */ + virtual bool is_rawWaveformData_allowed(Tango::AttReqType type); +/** + * Execution allowed for WriteRead command. + */ + virtual bool is_WriteRead_allowed(const CORBA::Any &any); +/** + * Command to send a specific command to the Lecroy device + * @param argin command to send + * @return device response (if any) + * @exception DevFailed */ - virtual void read_attr(Tango::Attribute &attr); + Tango::DevString write_read(Tango::DevString); /** * Read the device properties from database @@ -222,17 +317,18 @@ public : protected : // Add your own data members here //----------------------------------------- - SocketLecroy *ptr_com; - WaveForm_data *waveform_ptr; - short* data_value; - double* data_scaled_value; - long data_length; - bool _is_communication_opened; + SocketLecroy* ptr_com; + WaveForm_data* waveform_ptr; + char* _deviceResponse; + short* data_value; + double* data_scaled_value; + long data_length; + bool _is_communication_opened; //- Method to convert all lecroy exceptions (type Waveform or Socket exceptions) on Tango exception Tango::DevFailed lecroy_to_tango_exception(const lecroy::LecroyException& de); }; -} // namespace +} // namespace_ns #endif // _ACQUIREWAVEFORMLECROY_H diff --git a/src/AcquireWaveformLecroy.ncb b/src/AcquireWaveformLecroy.ncb new file mode 100644 index 0000000000000000000000000000000000000000..e19d554b47c91776a2ff0c9843b793dd64589e25 Binary files /dev/null and b/src/AcquireWaveformLecroy.ncb differ diff --git a/src/AcquireWaveformLecroy.opt b/src/AcquireWaveformLecroy.opt new file mode 100644 index 0000000000000000000000000000000000000000..1e23a12be496b39e63c9ad7bff7917e458e75e83 Binary files /dev/null and b/src/AcquireWaveformLecroy.opt differ diff --git a/src/AcquireWaveformLecroyClass.cpp b/src/AcquireWaveformLecroyClass.cpp index 2524d162acbd79831e321ef5531dd490cb80dda9..c27c7be07cf6d639f40e60c67639e97121a2278a 100644 --- a/src/AcquireWaveformLecroyClass.cpp +++ b/src/AcquireWaveformLecroyClass.cpp @@ -1,6 +1,6 @@ -static const char *RcsId = "$Header: /users/chaize/newsvn/cvsroot/Instrumentation/AcquireWaveformLecroy/src/AcquireWaveformLecroyClass.cpp,v 1.6 2008-02-26 08:32:59 xavela Exp $"; +static const char *RcsId = "$Header: /users/chaize/newsvn/cvsroot/Instrumentation/AcquireWaveformLecroy/src/AcquireWaveformLecroyClass.cpp,v 1.7 2008-02-28 09:02:05 xavela Exp $"; -static const char *TagName = "$Name: not supported by cvs2svn $"; +static const char *TagName = "$Name: not supported by cvs2svn $"; static const char *FileName= "$Source: /users/chaize/newsvn/cvsroot/Instrumentation/AcquireWaveformLecroy/src/AcquireWaveformLecroyClass.cpp,v $"; @@ -20,7 +20,7 @@ static const char *RCSfile = "$RCSfile: AcquireWaveformLecroyClass.cpp,v $"; // // $Author: xavela $ // -// $Revision: 1.6 $ +// $Revision: 1.7 $ // // $Log: not supported by cvs2svn $ // Revision 1.5 2004/10/18 13:17:49 xavela @@ -57,9 +57,50 @@ static const char *RCSfile = "$RCSfile: AcquireWaveformLecroyClass.cpp,v $"; #include <AcquireWaveformLecroyClass.h> -namespace AcquireWaveformLecroy +//+---------------------------------------------------------------------------- +/** + * Create AcquireWaveformLecroyClass singleton and return it in a C function for Python usage + */ +//+---------------------------------------------------------------------------- +extern "C" { +#ifdef WIN32 + +__declspec(dllexport) + +#endif + + Tango::DeviceClass *_create_AcquireWaveformLecroy_class(const char *name) { + return AcquireWaveformLecroy_ns::AcquireWaveformLecroyClass::init(name); + } +} + + +namespace AcquireWaveformLecroy_ns +{ +//+---------------------------------------------------------------------------- +// +// method : WriteReadCmd::execute() +// +// description : method to trigger the execution of the command. +// PLEASE DO NOT MODIFY this method core without pogo +// +// in : - device : The device on which the command must be excuted +// - in_any : The command input data +// +// returns : The command output data (packed in the Any object) +// +//----------------------------------------------------------------------------- +CORBA::Any *WriteReadCmd::execute(Tango::DeviceImpl *device,const CORBA::Any &in_any) { + cout2 << "WriteReadCmd::execute(): arrived" << endl; + + Tango::DevString argin; + extract(in_any, argin); + + return insert((static_cast<AcquireWaveformLecroy *>(device))->write_read(argin)); +} + // @@ -148,6 +189,11 @@ AcquireWaveformLecroyClass *AcquireWaveformLecroyClass::instance() //----------------------------------------------------------------------------- void AcquireWaveformLecroyClass::command_factory() { + command_list.push_back(new WriteReadCmd("WriteRead", + Tango::DEV_STRING, Tango::DEV_STRING, + "command to send", + "device response (if any)", + Tango::EXPERT)); // add polling if any for (unsigned int i=0 ; i<command_list.size(); i++) @@ -238,9 +284,58 @@ void AcquireWaveformLecroyClass::device_factory(const Tango::DevVarStringArray * //------------------------------------------------------------- } +//+---------------------------------------------------------------------------- +// Method: AcquireWaveformLecroyClass::attribute_factory(vector<Tango::Attr *> &att_list) +//----------------------------------------------------------------------------- +void AcquireWaveformLecroyClass::attribute_factory(vector<Tango::Attr *> &att_list) +{ + // Attribute : triggerTime + triggerTimeAttrib *trigger_time = new triggerTimeAttrib(); + att_list.push_back(trigger_time); + + // Attribute : verticalOffset + verticalOffsetAttrib *vertical_offset = new verticalOffsetAttrib(); + att_list.push_back(vertical_offset); + + // Attribute : verticalGain + verticalGainAttrib *vertical_gain = new verticalGainAttrib(); + att_list.push_back(vertical_gain); + + // Attribute : horizontalOffset + horizontalOffsetAttrib *horizontal_offset = new horizontalOffsetAttrib(); + att_list.push_back(horizontal_offset); + // Attribute : horizontalInterval + horizontalIntervalAttrib *horizontal_interval = new horizontalIntervalAttrib(); + att_list.push_back(horizontal_interval); + // Attribute : nominalBits + nominalBitsAttrib *nominal_bits = new nominalBitsAttrib(); + att_list.push_back(nominal_bits); + // Attribute : waveArrayCount + waveArrayCountAttrib *wave_array_count = new waveArrayCountAttrib(); + att_list.push_back(wave_array_count); + + // Attribute : waveArray2 + waveArray2Attrib *wave_array2 = new waveArray2Attrib(); + att_list.push_back(wave_array2); + + // Attribute : waveArray1 + waveArray1Attrib *wave_array1 = new waveArray1Attrib(); + att_list.push_back(wave_array1); + + // Attribute : verticalScaledData + verticalScaledDataAttrib *vertical_scaled_data = new verticalScaledDataAttrib(); + att_list.push_back(vertical_scaled_data); + + // Attribute : rawWaveformData + rawWaveformDataAttrib *raw_waveform_data = new rawWaveformDataAttrib(); + att_list.push_back(raw_waveform_data); + + // End of Automatic code generation + //------------------------------------------------------------- +} //+---------------------------------------------------------------------------- // diff --git a/src/AcquireWaveformLecroyClass.h b/src/AcquireWaveformLecroyClass.h index 5d29fd41378980616390cc40372b4d903bc783e0..3161fdc42626dde08cee70bd283b588dc5dff7e2 100644 --- a/src/AcquireWaveformLecroyClass.h +++ b/src/AcquireWaveformLecroyClass.h @@ -12,7 +12,7 @@ // // $Author: xavela $ // -// $Revision: 1.6 $ +// $Revision: 1.7 $ // // $Log: not supported by cvs2svn $ // Revision 1.5 2004/10/18 13:17:49 xavela @@ -49,23 +49,11 @@ #include <AcquireWaveformLecroy.h> -namespace AcquireWaveformLecroy +namespace AcquireWaveformLecroy_ns { //===================================== // Define classes for attributes //===================================== -class verticalScaledDataAttrib: public Tango::SpectrumAttr -{ -public: - verticalScaledDataAttrib():SpectrumAttr("verticalScaledData", Tango::DEV_DOUBLE, Tango::READ, 150000) {}; - ~verticalScaledDataAttrib() {}; - - virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att) - {(static_cast<AcquireWaveformLecroy *>(dev))->read_verticalScaledData(att);} - virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty) - {return (static_cast<AcquireWaveformLecroy *>(dev))->is_verticalScaledData_allowed(ty);} -}; - class rawWaveformDataAttrib: public Tango::SpectrumAttr { public: @@ -78,159 +66,6 @@ public: {return (static_cast<AcquireWaveformLecroy *>(dev))->is_rawWaveformData_allowed(ty);} }; -class triggerTimeAttrib: public Tango::Attr -{ -public: - triggerTimeAttrib():Attr("triggerTime", Tango::DEV_STRING, Tango::READ) {}; - ~triggerTimeAttrib() {}; - - virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att) - {(static_cast<AcquireWaveformLecroy *>(dev))->read_triggerTime(att);} - virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty) - {return (static_cast<AcquireWaveformLecroy *>(dev))->is_triggerTime_allowed(ty);} -}; - -class verticalOffsetAttrib: public Tango::Attr -{ -public: - verticalOffsetAttrib():Attr("verticalOffset", Tango::DEV_DOUBLE, Tango::READ) {}; - ~verticalOffsetAttrib() {}; - - virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att) - {(static_cast<AcquireWaveformLecroy *>(dev))->read_verticalOffset(att);} - virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty) - {return (static_cast<AcquireWaveformLecroy *>(dev))->is_verticalOffset_allowed(ty);} -}; - -class verticalGainAttrib: public Tango::Attr -{ -public: - verticalGainAttrib():Attr("verticalGain", Tango::DEV_DOUBLE, Tango::READ) {}; - ~verticalGainAttrib() {}; - - virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att) - {(static_cast<AcquireWaveformLecroy *>(dev))->read_verticalGain(att);} - virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty) - {return (static_cast<AcquireWaveformLecroy *>(dev))->is_verticalGain_allowed(ty);} -}; - -class horizontalOffsetAttrib: public Tango::Attr -{ -public: - horizontalOffsetAttrib():Attr("horizontalOffset", Tango::DEV_DOUBLE, Tango::READ) {}; - ~horizontalOffsetAttrib() {}; - - virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att) - {(static_cast<AcquireWaveformLecroy *>(dev))->read_horizontalOffset(att);} - virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty) - {return (static_cast<AcquireWaveformLecroy *>(dev))->is_horizontalOffset_allowed(ty);} -}; - -class horizontalIntervalAttrib: public Tango::Attr -{ -public: - horizontalIntervalAttrib():Attr("horizontalInterval", Tango::DEV_DOUBLE, Tango::READ) {}; - ~horizontalIntervalAttrib() {}; - - virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att) - {(static_cast<AcquireWaveformLecroy *>(dev))->read_horizontalInterval(att);} - virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty) - {return (static_cast<AcquireWaveformLecroy *>(dev))->is_horizontalInterval_allowed(ty);} -}; - -class nominalBitsAttrib: public Tango::Attr -{ -public: - nominalBitsAttrib():Attr("nominalBits", Tango::DEV_SHORT, Tango::READ) {}; - ~nominalBitsAttrib() {}; - - virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att) - {(static_cast<AcquireWaveformLecroy *>(dev))->read_nominalBits(att);} - virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty) - {return (static_cast<AcquireWaveformLecroy *>(dev))->is_nominalBits_allowed(ty);} -}; - -class waveArrayCountAttrib: public Tango::Attr -{ -public: - waveArrayCountAttrib():Attr("waveArrayCount", Tango::DEV_LONG, Tango::READ) {}; - ~waveArrayCountAttrib() {}; - - virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att) - {(static_cast<AcquireWaveformLecroy *>(dev))->read_waveArrayCount(att);} - virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty) - {return (static_cast<AcquireWaveformLecroy *>(dev))->is_waveArrayCount_allowed(ty);} -}; - -class waveArray2Attrib: public Tango::Attr -{ -public: - waveArray2Attrib():Attr("waveArray2", Tango::DEV_LONG, Tango::READ) {}; - ~waveArray2Attrib() {}; - - virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att) - {(static_cast<AcquireWaveformLecroy *>(dev))->read_waveArray2(att);} - virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty) - {return (static_cast<AcquireWaveformLecroy *>(dev))->is_waveArray2_allowed(ty);} -}; - -class waveArray1Attrib: public Tango::Attr -{ -public: - waveArray1Attrib():Attr("waveArray1", Tango::DEV_LONG, Tango::READ) {}; - ~waveArray1Attrib() {}; - - virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att) - {(static_cast<AcquireWaveformLecroy *>(dev))->read_waveArray1(att);} - virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty) - {return (static_cast<AcquireWaveformLecroy *>(dev))->is_waveArray1_allowed(ty);} -}; - -//========================================= -// Define classes for commands -//========================================= -// -// The AcquireWaveformLecroyClass singleton definition -// - -class AcquireWaveformLecroyClass : public Tango::DeviceClass -{ -public: -// properties member data - -// add your own data members here -//------------------------------------ - -public: - Tango::DbData cl_prop; - Tango::DbData cl_def_prop; - Tango::DbData dev_def_prop; - -// Method prototypes - static AcquireWaveformLecroyClass *init(const char *); - static AcquireWaveformLecroyClass *instance(); - ~AcquireWaveformLecroyClass(); - Tango::DbDatum get_class_property(string &); - Tango::DbDatum get_default_device_property(string &); - Tango::DbDatum get_default_class_property(string &); - -protected: - AcquireWaveformLecroyClass(string &); - static AcquireWaveformLecroyClass *_instance; - void command_factory(); - void get_class_property(); - void attribute_factory(vector<Tango::Attr *> &); - void write_class_property(); - void set_default_property(); - -private: - void device_factory(const Tango::DevVarStringArray *); -}; - - -} // //===================================== -// Define classes for attributes -//===================================== class verticalScaledDataAttrib: public Tango::SpectrumAttr { public: @@ -243,64 +78,52 @@ public: {return (static_cast<AcquireWaveformLecroy *>(dev))->is_verticalScaledData_allowed(ty);} }; -class rawWaveformDataAttrib: public Tango::SpectrumAttr -{ -public: - rawWaveformDataAttrib():SpectrumAttr("rawWaveformData", Tango::DEV_SHORT, Tango::READ, 150000) {}; - ~rawWaveformDataAttrib() {}; - - virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att) - {(static_cast<AcquireWaveformLecroy *>(dev))->read_rawWaveformData(att);} - virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty) - {return (static_cast<AcquireWaveformLecroy *>(dev))->is_rawWaveformData_allowed(ty);} -}; - -class triggerTimeAttrib: public Tango::Attr +class waveArray1Attrib: public Tango::Attr { public: - triggerTimeAttrib():Attr("triggerTime", Tango::DEV_STRING, Tango::READ) {}; - ~triggerTimeAttrib() {}; + waveArray1Attrib():Attr("waveArray1", Tango::DEV_LONG, Tango::READ) {}; + ~waveArray1Attrib() {}; virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att) - {(static_cast<AcquireWaveformLecroy *>(dev))->read_triggerTime(att);} + {(static_cast<AcquireWaveformLecroy *>(dev))->read_waveArray1(att);} virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty) - {return (static_cast<AcquireWaveformLecroy *>(dev))->is_triggerTime_allowed(ty);} + {return (static_cast<AcquireWaveformLecroy *>(dev))->is_waveArray1_allowed(ty);} }; -class verticalOffsetAttrib: public Tango::Attr +class waveArray2Attrib: public Tango::Attr { public: - verticalOffsetAttrib():Attr("verticalOffset", Tango::DEV_DOUBLE, Tango::READ) {}; - ~verticalOffsetAttrib() {}; + waveArray2Attrib():Attr("waveArray2", Tango::DEV_LONG, Tango::READ) {}; + ~waveArray2Attrib() {}; virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att) - {(static_cast<AcquireWaveformLecroy *>(dev))->read_verticalOffset(att);} + {(static_cast<AcquireWaveformLecroy *>(dev))->read_waveArray2(att);} virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty) - {return (static_cast<AcquireWaveformLecroy *>(dev))->is_verticalOffset_allowed(ty);} + {return (static_cast<AcquireWaveformLecroy *>(dev))->is_waveArray2_allowed(ty);} }; -class verticalGainAttrib: public Tango::Attr +class waveArrayCountAttrib: public Tango::Attr { public: - verticalGainAttrib():Attr("verticalGain", Tango::DEV_DOUBLE, Tango::READ) {}; - ~verticalGainAttrib() {}; + waveArrayCountAttrib():Attr("waveArrayCount", Tango::DEV_LONG, Tango::READ) {}; + ~waveArrayCountAttrib() {}; virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att) - {(static_cast<AcquireWaveformLecroy *>(dev))->read_verticalGain(att);} + {(static_cast<AcquireWaveformLecroy *>(dev))->read_waveArrayCount(att);} virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty) - {return (static_cast<AcquireWaveformLecroy *>(dev))->is_verticalGain_allowed(ty);} + {return (static_cast<AcquireWaveformLecroy *>(dev))->is_waveArrayCount_allowed(ty);} }; -class horizontalOffsetAttrib: public Tango::Attr +class nominalBitsAttrib: public Tango::Attr { public: - horizontalOffsetAttrib():Attr("horizontalOffset", Tango::DEV_DOUBLE, Tango::READ) {}; - ~horizontalOffsetAttrib() {}; + nominalBitsAttrib():Attr("nominalBits", Tango::DEV_SHORT, Tango::READ) {}; + ~nominalBitsAttrib() {}; virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att) - {(static_cast<AcquireWaveformLecroy *>(dev))->read_horizontalOffset(att);} + {(static_cast<AcquireWaveformLecroy *>(dev))->read_nominalBits(att);} virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty) - {return (static_cast<AcquireWaveformLecroy *>(dev))->is_horizontalOffset_allowed(ty);} + {return (static_cast<AcquireWaveformLecroy *>(dev))->is_nominalBits_allowed(ty);} }; class horizontalIntervalAttrib: public Tango::Attr @@ -315,190 +138,81 @@ public: {return (static_cast<AcquireWaveformLecroy *>(dev))->is_horizontalInterval_allowed(ty);} }; -class nominalBitsAttrib: public Tango::Attr +class horizontalOffsetAttrib: public Tango::Attr { public: - nominalBitsAttrib():Attr("nominalBits", Tango::DEV_SHORT, Tango::READ) {}; - ~nominalBitsAttrib() {}; + horizontalOffsetAttrib():Attr("horizontalOffset", Tango::DEV_DOUBLE, Tango::READ) {}; + ~horizontalOffsetAttrib() {}; virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att) - {(static_cast<AcquireWaveformLecroy *>(dev))->read_nominalBits(att);} + {(static_cast<AcquireWaveformLecroy *>(dev))->read_horizontalOffset(att);} virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty) - {return (static_cast<AcquireWaveformLecroy *>(dev))->is_nominalBits_allowed(ty);} + {return (static_cast<AcquireWaveformLecroy *>(dev))->is_horizontalOffset_allowed(ty);} }; -class waveArrayCountAttrib: public Tango::Attr +class verticalGainAttrib: public Tango::Attr { public: - waveArrayCountAttrib():Attr("waveArrayCount", Tango::DEV_LONG, Tango::READ) {}; - ~waveArrayCountAttrib() {}; + verticalGainAttrib():Attr("verticalGain", Tango::DEV_DOUBLE, Tango::READ) {}; + ~verticalGainAttrib() {}; virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att) - {(static_cast<AcquireWaveformLecroy *>(dev))->read_waveArrayCount(att);} + {(static_cast<AcquireWaveformLecroy *>(dev))->read_verticalGain(att);} virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty) - {return (static_cast<AcquireWaveformLecroy *>(dev))->is_waveArrayCount_allowed(ty);} + {return (static_cast<AcquireWaveformLecroy *>(dev))->is_verticalGain_allowed(ty);} }; -class waveArray2Attrib: public Tango::Attr +class verticalOffsetAttrib: public Tango::Attr { public: - waveArray2Attrib():Attr("waveArray2", Tango::DEV_LONG, Tango::READ) {}; - ~waveArray2Attrib() {}; + verticalOffsetAttrib():Attr("verticalOffset", Tango::DEV_DOUBLE, Tango::READ) {}; + ~verticalOffsetAttrib() {}; virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att) - {(static_cast<AcquireWaveformLecroy *>(dev))->read_waveArray2(att);} + {(static_cast<AcquireWaveformLecroy *>(dev))->read_verticalOffset(att);} virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty) - {return (static_cast<AcquireWaveformLecroy *>(dev))->is_waveArray2_allowed(ty);} + {return (static_cast<AcquireWaveformLecroy *>(dev))->is_verticalOffset_allowed(ty);} }; -class waveArray1Attrib: public Tango::Attr +class triggerTimeAttrib: public Tango::Attr { public: - waveArray1Attrib():Attr("waveArray1", Tango::DEV_LONG, Tango::READ) {}; - ~waveArray1Attrib() {}; + triggerTimeAttrib():Attr("triggerTime", Tango::DEV_STRING, Tango::READ) {}; + ~triggerTimeAttrib() {}; virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att) - {(static_cast<AcquireWaveformLecroy *>(dev))->read_waveArray1(att);} + {(static_cast<AcquireWaveformLecroy *>(dev))->read_triggerTime(att);} virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty) - {return (static_cast<AcquireWaveformLecroy *>(dev))->is_waveArray1_allowed(ty);} -}; - -//========================================= -// Define classes for commands -//========================================= -// -// The AcquireWaveformLecroyClass singleton definition -// - -class AcquireWaveformLecroyClass : public Tango::DeviceClass -{ -public: -// properties member data - -// add your own data members here -//------------------------------------ - -public: - Tango::DbData cl_prop; - Tango::DbData cl_def_prop; - Tango::DbData dev_def_prop; - -// Method prototypes - static AcquireWaveformLecroyClass *init(const char *); - static AcquireWaveformLecroyClass *instance(); - ~AcquireWaveformLecroyClass(); - Tango::DbDatum get_class_property(string &); - Tango::DbDatum get_default_device_property(string &); - Tango::DbDatum get_default_class_property(string &); - -protected: - AcquireWaveformLecroyClass(string &); - static AcquireWaveformLecroyClass *_instance; - void command_factory(); - void get_class_property(); - void attribute_factory(vector<Tango::Attr *> &); - void write_class_property(); - void set_default_property(); - -private: - void device_factory(const Tango::DevVarStringArray *); + {return (static_cast<AcquireWaveformLecroy *>(dev))->is_triggerTime_allowed(ty);} }; - -} // //===================================== -// Define classes for attributes -//===================================== //========================================= // Define classes for commands //========================================= -// -// The AcquireWaveformLecroyClass singleton definition -// - -class AcquireWaveformLecroyClass : public Tango::DeviceClass +class WriteReadCmd : public Tango::Command { public: -// properties member data - -// add your own data members here -//------------------------------------ - -public: - Tango::DbData cl_prop; - Tango::DbData cl_def_prop; - Tango::DbData dev_def_prop; - -// Method prototypes - static AcquireWaveformLecroyClass *init(const char *); - static AcquireWaveformLecroyClass *instance(); - ~AcquireWaveformLecroyClass(); - Tango::DbDatum get_class_property(string &); - Tango::DbDatum get_default_device_property(string &); - Tango::DbDatum get_default_class_property(string &); + WriteReadCmd(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) {}; + + WriteReadCmd(const char *name, + Tango::CmdArgType in, + Tango::CmdArgType out) + :Command(name,in,out) {}; + ~WriteReadCmd() {}; -protected: - AcquireWaveformLecroyClass(string &); - static AcquireWaveformLecroyClass *_instance; - void command_factory(); - void get_class_property(); - void write_class_property(); - void set_default_property(); - -private: - void device_factory(const Tango::DevVarStringArray *); + 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<AcquireWaveformLecroy *>(dev))->is_WriteRead_allowed(any);} }; -} // //===================================== -// Define classes for attributes -//===================================== -//========================================= -// Define classes for commands -//========================================= -// -// The AcquireWaveformLecroyClass singleton definition -// - -class AcquireWaveformLecroyClass : public Tango::DeviceClass -{ -public: -// properties member data -// add your own data members here -//------------------------------------ - -public: - Tango::DbData cl_prop; - Tango::DbData cl_def_prop; - Tango::DbData dev_def_prop; - -// Method prototypes - static AcquireWaveformLecroyClass *init(const char *); - static AcquireWaveformLecroyClass *instance(); - ~AcquireWaveformLecroyClass(); - Tango::DbDatum get_class_property(string &); - Tango::DbDatum get_default_device_property(string &); - Tango::DbDatum get_default_class_property(string &); - -protected: - AcquireWaveformLecroyClass(string &); - static AcquireWaveformLecroyClass *_instance; - void command_factory(); - void get_class_property(); - void write_class_property(); - void set_default_property(); - -private: - void device_factory(const Tango::DevVarStringArray *); -}; - - -} // //===================================== -// Define classes for attributes -//===================================== -//========================================= -// Define classes for commands -//========================================= // // The AcquireWaveformLecroyClass singleton definition // @@ -529,6 +243,7 @@ protected: static AcquireWaveformLecroyClass *_instance; void command_factory(); void get_class_property(); + void attribute_factory(vector<Tango::Attr *> &); void write_class_property(); void set_default_property(); diff --git a/src/AcquireWaveformLecroyStateMachine.cpp b/src/AcquireWaveformLecroyStateMachine.cpp new file mode 100644 index 0000000000000000000000000000000000000000..2171191236651e31a2f2af591abd4d2525adcdb4 --- /dev/null +++ b/src/AcquireWaveformLecroyStateMachine.cpp @@ -0,0 +1,225 @@ +static const char *RcsId = "$Header: /users/chaize/newsvn/cvsroot/Instrumentation/AcquireWaveformLecroy/src/AcquireWaveformLecroyStateMachine.cpp,v 1.1 2008-02-28 09:02:05 xavela Exp $"; +//+============================================================================= +// +// file : AcquireWaveformLecroyStateMachine.cpp +// +// description : C++ source for the AcquireWaveformLecroy and its alowed. +// method for commands and attributes +// +// project : TANGO Device Server +// +// $Author: xavela $ +// +// $Revision: 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> +#include <AcquireWaveformLecroy.h> +#include <AcquireWaveformLecroyClass.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 AcquireWaveformLecroy_ns +{ + +//================================================= +// Attributes Allowed Methods +//================================================= + +//+---------------------------------------------------------------------------- +// +// method : AcquireWaveformLecroy::is_triggerTime_allowed +// +// description : Read/Write allowed for triggerTime attribute. +// +//----------------------------------------------------------------------------- +bool AcquireWaveformLecroy::is_triggerTime_allowed(Tango::AttReqType type) +{ + // End of Generated Code + + // Re-Start of Generated Code + return true; +} +//+---------------------------------------------------------------------------- +// +// method : AcquireWaveformLecroy::is_verticalOffset_allowed +// +// description : Read/Write allowed for verticalOffset attribute. +// +//----------------------------------------------------------------------------- +bool AcquireWaveformLecroy::is_verticalOffset_allowed(Tango::AttReqType type) +{ + // End of Generated Code + + // Re-Start of Generated Code + return true; +} +//+---------------------------------------------------------------------------- +// +// method : AcquireWaveformLecroy::is_verticalGain_allowed +// +// description : Read/Write allowed for verticalGain attribute. +// +//----------------------------------------------------------------------------- +bool AcquireWaveformLecroy::is_verticalGain_allowed(Tango::AttReqType type) +{ + // End of Generated Code + + // Re-Start of Generated Code + return true; +} +//+---------------------------------------------------------------------------- +// +// method : AcquireWaveformLecroy::is_horizontalOffset_allowed +// +// description : Read/Write allowed for horizontalOffset attribute. +// +//----------------------------------------------------------------------------- +bool AcquireWaveformLecroy::is_horizontalOffset_allowed(Tango::AttReqType type) +{ + // End of Generated Code + + // Re-Start of Generated Code + return true; +} +//+---------------------------------------------------------------------------- +// +// method : AcquireWaveformLecroy::is_horizontalInterval_allowed +// +// description : Read/Write allowed for horizontalInterval attribute. +// +//----------------------------------------------------------------------------- +bool AcquireWaveformLecroy::is_horizontalInterval_allowed(Tango::AttReqType type) +{ + // End of Generated Code + + // Re-Start of Generated Code + return true; +} +//+---------------------------------------------------------------------------- +// +// method : AcquireWaveformLecroy::is_nominalBits_allowed +// +// description : Read/Write allowed for nominalBits attribute. +// +//----------------------------------------------------------------------------- +bool AcquireWaveformLecroy::is_nominalBits_allowed(Tango::AttReqType type) +{ + // End of Generated Code + + // Re-Start of Generated Code + return true; +} +//+---------------------------------------------------------------------------- +// +// method : AcquireWaveformLecroy::is_waveArrayCount_allowed +// +// description : Read/Write allowed for waveArrayCount attribute. +// +//----------------------------------------------------------------------------- +bool AcquireWaveformLecroy::is_waveArrayCount_allowed(Tango::AttReqType type) +{ + // End of Generated Code + + // Re-Start of Generated Code + return true; +} +//+---------------------------------------------------------------------------- +// +// method : AcquireWaveformLecroy::is_waveArray2_allowed +// +// description : Read/Write allowed for waveArray2 attribute. +// +//----------------------------------------------------------------------------- +bool AcquireWaveformLecroy::is_waveArray2_allowed(Tango::AttReqType type) +{ + // End of Generated Code + + // Re-Start of Generated Code + return true; +} +//+---------------------------------------------------------------------------- +// +// method : AcquireWaveformLecroy::is_waveArray1_allowed +// +// description : Read/Write allowed for waveArray1 attribute. +// +//----------------------------------------------------------------------------- +bool AcquireWaveformLecroy::is_waveArray1_allowed(Tango::AttReqType type) +{ + // End of Generated Code + + // Re-Start of Generated Code + return true; +} +//+---------------------------------------------------------------------------- +// +// method : AcquireWaveformLecroy::is_rawWaveformData_allowed +// +// description : Read/Write allowed for rawWaveformData attribute. +// +//----------------------------------------------------------------------------- +bool AcquireWaveformLecroy::is_rawWaveformData_allowed(Tango::AttReqType type) +{ + // End of Generated Code + + // Re-Start of Generated Code + return true; +} +//+---------------------------------------------------------------------------- +// +// method : AcquireWaveformLecroy::is_verticalScaledData_allowed +// +// description : Read/Write allowed for verticalScaledData attribute. +// +//----------------------------------------------------------------------------- +bool AcquireWaveformLecroy::is_verticalScaledData_allowed(Tango::AttReqType type) +{ + // End of Generated Code + + // Re-Start of Generated Code + return true; +} + +//================================================= +// Commands Allowed Methods +//================================================= + +//+---------------------------------------------------------------------------- +// +// method : AcquireWaveformLecroy::is_WriteRead_allowed +// +// description : Execution allowed for WriteRead command. +// +//----------------------------------------------------------------------------- +bool AcquireWaveformLecroy::is_WriteRead_allowed(const CORBA::Any &any) +{ + // End of Generated Code + + // Re-Start of Generated Code + return true; +} + +} // namespace AcquireWaveformLecroy_ns diff --git a/src/ClassFactory.cpp b/src/ClassFactory.cpp index d1760e2127840d0fc46b11544761c394b270728d..4ee815ef7f4122367c743da8c67edc00bfcf54cf 100644 --- a/src/ClassFactory.cpp +++ b/src/ClassFactory.cpp @@ -1,4 +1,4 @@ -static const char *RcsId = "$Header: /users/chaize/newsvn/cvsroot/Instrumentation/AcquireWaveformLecroy/src/ClassFactory.cpp,v 1.4 2004-10-18 13:17:49 xavela Exp $"; +static const char *RcsId = "$Header: /users/chaize/newsvn/cvsroot/Instrumentation/AcquireWaveformLecroy/src/ClassFactory.cpp,v 1.5 2008-02-28 09:02:05 xavela Exp $"; //+============================================================================= // // file : ClassFactory.cpp @@ -12,9 +12,14 @@ static const char *RcsId = "$Header: /users/chaize/newsvn/cvsroot/Instrumentatio // // $Author: xavela $ // -// $Revision: 1.4 $ +// $Revision: 1.5 $ // // $Log: not supported by cvs2svn $ +// Revision 1.4 2004/10/18 13:17:49 xavela +// xavier : add an attr waveArray2. +// Sorts attr in expert and operator view with Pogo. +// Inconsistencies removed. +// // Revision 1.3 2004/10/07 09:21:18 xavela // xavier : no cout now. // @@ -45,12 +50,12 @@ static const char *RcsId = "$Header: /users/chaize/newsvn/cvsroot/Instrumentatio * Create AcquireWaveformLecroyClass singleton and store it in DServer object. * * @author $Author: xavela $ - * @version $Revision: 1.4 $ $ + * @version $Revision: 1.5 $ $ */ void Tango::DServer::class_factory() { - add_class(AcquireWaveformLecroy::AcquireWaveformLecroyClass::init("AcquireWaveformLecroy")); + add_class(AcquireWaveformLecroy_ns::AcquireWaveformLecroyClass::init("AcquireWaveformLecroy")); } diff --git a/src/Makefile.VC b/src/Makefile.VC index 38929f4b892c74e9a948c2bd878aed5afb5527d2..5d001352a4def52e067e76008675b120512163cf 100644 --- a/src/Makefile.VC +++ b/src/Makefile.VC @@ -36,19 +36,8 @@ LISTEOBJ = \ $(OBJDIR)\$(device_server).OBJ\ $(OBJDIR)\ClassFactory.OBJ\ $(OBJDIR)\main.OBJ\ - $(OBJDIR)\$(device_server)Class.OBJ - -SRCS = \ - $(device_server).CPP\ - LecroyException.CPP\ - SocketLecroy.CPP\ - SocketException.CPP\ - Waveform.CPP\ - WaveformException.CPP\ - ClassFactory.CPP\ - main.CPP \ - $(device_server)Class.CPP - + $(OBJDIR)\$(device_server)StateMachine.OBJ\ + $(OBJDIR)\$(device_server)Class.OBJ # -------------------------------------- !include $(make_dir)\common_target.opt diff --git a/src/main.cpp b/src/main.cpp index 7d99251cfc653d4fb430cf4ee89aa8f2e27aeca8..bb4bdb2ccf5910dbc307f89375a13293f176fd03 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,4 +1,4 @@ -static const char *RcsId = "$Header: /users/chaize/newsvn/cvsroot/Instrumentation/AcquireWaveformLecroy/src/main.cpp,v 1.4 2004-10-18 13:17:49 xavela Exp $"; +static const char *RcsId = "$Header: /users/chaize/newsvn/cvsroot/Instrumentation/AcquireWaveformLecroy/src/main.cpp,v 1.5 2008-02-28 09:02:05 xavela Exp $"; //+============================================================================= // // file : main.cpp @@ -12,9 +12,14 @@ static const char *RcsId = "$Header: /users/chaize/newsvn/cvsroot/Instrumentatio // // $Author: xavela $ // -// $Revision: 1.4 $ $ +// $Revision: 1.5 $ $ // // $Log: not supported by cvs2svn $ +// Revision 1.4 2004/10/18 13:17:49 xavela +// xavier : add an attr waveArray2. +// Sorts attr in expert and operator view with Pogo. +// Inconsistencies removed. +// // Revision 1.3 2004/10/07 09:21:19 xavela // xavier : no cout now. // @@ -78,6 +83,5 @@ int main(int argc,char *argv[]) // clean ORB, threads..... //-------------------------- tg->server_cleanup(); - return(0); }