From 1431325e08f51f56d29a32d2af449ad2d78ecfde Mon Sep 17 00:00:00 2001 From: Xavier Elattaoui <xavier.elattaoui@synchrotron-soleil.fr> Date: Thu, 28 Feb 2008 09:02:05 +0000 Subject: [PATCH] xavier : StateMachine file added !! (oups) --- src/AcquireWaveformLecroy.cpp | 346 ++++++++++++++++-- src/AcquireWaveformLecroy.dsp | 22 +- src/AcquireWaveformLecroy.dsw | 29 ++ src/AcquireWaveformLecroy.h | 168 +++++++-- src/AcquireWaveformLecroy.ncb | Bin 0 -> 58368 bytes src/AcquireWaveformLecroy.opt | Bin 0 -> 48640 bytes src/AcquireWaveformLecroyClass.cpp | 103 +++++- src/AcquireWaveformLecroyClass.h | 405 ++++------------------ src/AcquireWaveformLecroyStateMachine.cpp | 225 ++++++++++++ src/ClassFactory.cpp | 13 +- src/Makefile.VC | 15 +- src/main.cpp | 10 +- 12 files changed, 891 insertions(+), 445 deletions(-) create mode 100644 src/AcquireWaveformLecroy.dsw create mode 100644 src/AcquireWaveformLecroy.ncb create mode 100644 src/AcquireWaveformLecroy.opt create mode 100644 src/AcquireWaveformLecroyStateMachine.cpp diff --git a/src/AcquireWaveformLecroy.cpp b/src/AcquireWaveformLecroy.cpp index da6986e..a783c05 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 9b55fe7..f21b11d 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 0000000..8477535 --- /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 4c1ed08..9eaf778 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 GIT binary patch literal 58368 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	IdBxac$jYiHH8CYVv81FZ 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 AN&o-= literal 0 HcmV?d00001 diff --git a/src/AcquireWaveformLecroy.opt b/src/AcquireWaveformLecroy.opt new file mode 100644 index 0000000000000000000000000000000000000000..1e23a12be496b39e63c9ad7bff7917e458e75e83 GIT binary patch literal 48640 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⁣U+6;A!3=B6I7#LI;85krP85q16A?HPIWn^Fg z?empjVqjRuz`zj3$iTqQ$iSe%#K7Rd#K4dPD%cqq7{nPE7^X5XFf3+dV0a82?r>*d zU`S$MU@%}{U^opG3uOY`A_Q9fCc(hK0Ha|J;?s+PEjrapE+|l|Hga?|GIum~)-^PD zGu1UTbTQC%bTf3)H85~AaJDpXvvhGat7Tx&ff@j^1T;E|j3+TLFtCAq$IQUc#|-k- z!1`Z|k%7St<WL3#4Rt<)kX}r1esXqdiBD>BQGO-W!XT4@fuWy)f#D)E1A{AgAb4QI zz>ArIA)T3l0dzwXjE04Qv|bF>Q$r~Zj6eVX|9|oS|9{YofI0&tAh?+s7)HncU_p<d z!Q+!T%nS^L;M9Wqe%{ghzp;;Fg2snO@Bc<5C@2d&&M<oaH#9V$6l}cCot1$h5p=;G z1NQs|Q#ZQ*8yav33Y@M+_kSY-1j+)3%jo`ZXlNiPaJY=_|3(A|hy^QOM)!Y%LIVYZ w)63}oZ<H_ralrGEqx-)>L4kt7^9G~)zeo3fkM92--Ty5h;GvMrFtGc-0b1w><^TWy literal 0 HcmV?d00001 diff --git a/src/AcquireWaveformLecroyClass.cpp b/src/AcquireWaveformLecroyClass.cpp index 2524d16..c27c7be 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 5d29fd4..3161fdc 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 0000000..2171191 --- /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 d1760e2..4ee815e 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 38929f4..5d00135 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 7d99251..bb4bdb2 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); } -- GitLab