From 8da26526f8c368754b463b8323c8bb8d1adc7540 Mon Sep 17 00:00:00 2001 From: Marco De Marco <demarco@oats.inaf.it> Date: Thu, 6 Mar 2014 16:27:44 +0100 Subject: [PATCH] Counters added --- src/PreProcessor.cpp | 133 ++++++++++++++++++++++++++++++- src/PreProcessor.h | 59 ++++++++++++++ src/PreProcessor.xmi | 33 ++++++++ src/PreProcessorClass.cpp | 125 ++++++++++++++++++++++++++--- src/PreProcessorClass.h | 76 ++++++++++++++++-- src/PreProcessorStateMachine.cpp | 63 +++++++++++++++ 6 files changed, 469 insertions(+), 20 deletions(-) diff --git a/src/PreProcessor.cpp b/src/PreProcessor.cpp index e7776cb..db2d5b7 100644 --- a/src/PreProcessor.cpp +++ b/src/PreProcessor.cpp @@ -59,11 +59,15 @@ // Status | Inherited (no method) // On | on // Off | off +// ResetCounter | reset_counter //================================================================ //================================================================ -// Attributes managed is: +// Attributes managed are: //================================================================ +// RegularFileCounter | Tango::DevULong Scalar +// WarningFileCounter | Tango::DevULong Scalar +// ErrorFileCounter | Tango::DevULong Scalar //================================================================ namespace PreProcessor_ns @@ -122,6 +126,9 @@ void PreProcessor::delete_device() // Delete device allocated objects /*----- PROTECTED REGION END -----*/ // PreProcessor::delete_device + delete[] attr_RegularFileCounter_read; + delete[] attr_WarningFileCounter_read; + delete[] attr_ErrorFileCounter_read; } //-------------------------------------------------------- @@ -144,6 +151,9 @@ void PreProcessor::init_device() // Get the device properties from database get_device_property(); + attr_RegularFileCounter_read = new Tango::DevULong[1]; + attr_WarningFileCounter_read = new Tango::DevULong[1]; + attr_ErrorFileCounter_read = new Tango::DevULong[1]; /*----- PROTECTED REGION ID(PreProcessor::init_device) ENABLED START -----*/ @@ -400,6 +410,60 @@ void PreProcessor::read_attr_hardware(TANGO_UNUSED(vector<long> &attr_list)) /*----- PROTECTED REGION END -----*/ // PreProcessor::read_attr_hardware } +//-------------------------------------------------------- +/** + * Read attribute RegularFileCounter related method + * Description: + * + * Data type: Tango::DevULong + * Attr type: Scalar + */ +//-------------------------------------------------------- +void PreProcessor::read_RegularFileCounter(Tango::Attribute &attr) +{ + DEBUG_STREAM << "PreProcessor::read_RegularFileCounter(Tango::Attribute &attr) entering... " << endl; + /*----- PROTECTED REGION ID(PreProcessor::read_RegularFileCounter) ENABLED START -----*/ + // Set the attribute value + attr.set_value(attr_RegularFileCounter_read); + + /*----- PROTECTED REGION END -----*/ // PreProcessor::read_RegularFileCounter +} +//-------------------------------------------------------- +/** + * Read attribute WarningFileCounter related method + * Description: + * + * Data type: Tango::DevULong + * Attr type: Scalar + */ +//-------------------------------------------------------- +void PreProcessor::read_WarningFileCounter(Tango::Attribute &attr) +{ + DEBUG_STREAM << "PreProcessor::read_WarningFileCounter(Tango::Attribute &attr) entering... " << endl; + /*----- PROTECTED REGION ID(PreProcessor::read_WarningFileCounter) ENABLED START -----*/ + // Set the attribute value + attr.set_value(attr_WarningFileCounter_read); + + /*----- PROTECTED REGION END -----*/ // PreProcessor::read_WarningFileCounter +} +//-------------------------------------------------------- +/** + * Read attribute ErrorFileCounter related method + * Description: + * + * Data type: Tango::DevULong + * Attr type: Scalar + */ +//-------------------------------------------------------- +void PreProcessor::read_ErrorFileCounter(Tango::Attribute &attr) +{ + DEBUG_STREAM << "PreProcessor::read_ErrorFileCounter(Tango::Attribute &attr) entering... " << endl; + /*----- PROTECTED REGION ID(PreProcessor::read_ErrorFileCounter) ENABLED START -----*/ + // Set the attribute value + attr.set_value(attr_ErrorFileCounter_read); + + /*----- PROTECTED REGION END -----*/ // PreProcessor::read_ErrorFileCounter +} //-------------------------------------------------------- /** @@ -481,11 +545,76 @@ void PreProcessor::off() /*----- PROTECTED REGION END -----*/ // PreProcessor::off } +//-------------------------------------------------------- +/** + * Command ResetCounter related method + * Description: + * + */ +//-------------------------------------------------------- +void PreProcessor::reset_counter() +{ + DEBUG_STREAM << "PreProcessor::ResetCounter() - " << device_name << endl; + /*----- PROTECTED REGION ID(PreProcessor::reset_counter) ENABLED START -----*/ + + //Reset regular file counter + boost::mutex::scoped_lock regularCounterLock(m_regularCounterMutex); + + *attr_RegularFileCounter_read = 0; + + //Reset warning file counter + boost::mutex::scoped_lock warningCounterLock(m_warningCounterMutex); + + *attr_WarningFileCounter_read = 0; + + //Reset error file counter + boost::mutex::scoped_lock errorCounterLock(m_errorCounterMutex); + + *attr_ErrorFileCounter_read = 0; + + /*----- PROTECTED REGION END -----*/ // PreProcessor::reset_counter +} + +//============================================================================== +// PreProcessor::incrementRegularCounter() +//============================================================================== +void PreProcessor::incrementRegularCounter() +{ + DEBUG_STREAM << "FitsImporter::incrementRegularCounter() - " << device_name << endl; + + boost::mutex::scoped_lock regularCounterLock(m_regularCounterMutex); + + ++*attr_RegularFileCounter_read; +} + +//============================================================================== +// PreProcessor::incrementWarningCounter() +//============================================================================== +void PreProcessor::incrementWarningCounter() +{ + DEBUG_STREAM << "FitsImporter::incrementWarningCounter() - " << device_name << endl; + + boost::mutex::scoped_lock warningCounterLock(m_warningCounterMutex); + + ++*attr_WarningFileCounter_read; +} + +//============================================================================== +// PreProcessor::incrementErrorCounter() +//============================================================================== +void PreProcessor::incrementErrorCounter() +{ + DEBUG_STREAM << "FitsImporter::incrementErrorCounter() - " << device_name << endl; + + boost::mutex::scoped_lock errorCounterLock(m_errorCounterMutex); + + ++*attr_ErrorFileCounter_read; +} /*----- PROTECTED REGION ID(PreProcessor::namespace_ending) ENABLED START -----*/ //============================================================================== -// FitsImporter::create_inotify_mask() +// PreProcessor::create_inotify_mask() //============================================================================== uint32_t PreProcessor::create_inotify_mask(const std::vector<std::string>& event_list) throw(std::invalid_argument) diff --git a/src/PreProcessor.h b/src/PreProcessor.h index 941591a..edc481b 100644 --- a/src/PreProcessor.h +++ b/src/PreProcessor.h @@ -43,6 +43,7 @@ #include <tango.h> +#include <boost/thread.hpp> /*----- PROTECTED REGION END -----*/ // PreProcessor.h @@ -73,6 +74,15 @@ class PreProcessor : public TANGO_BASE_CLASS //Thread shared pointer EventThread::SP m_eventThread_sp; + //Regular file counter synchronization + boost::mutex m_regularCounterMutex; + + //Warning file counter synchronization + boost::mutex m_warningCounterMutex; + + //Error file counter synchronization + boost::mutex m_errorCounterMutex; + //Min milli second of sleep time allowed static const unsigned long MIN_SLEEP_TIME = 100; @@ -106,6 +116,11 @@ public: // AutoStart: Exec On command after init if state is not fault Tango::DevBoolean autoStart; +// Attribute data members +public: + Tango::DevULong *attr_RegularFileCounter_read; + Tango::DevULong *attr_WarningFileCounter_read; + Tango::DevULong *attr_ErrorFileCounter_read; // Constructors and destructors public: @@ -167,6 +182,34 @@ public: //-------------------------------------------------------- virtual void read_attr_hardware(vector<long> &attr_list); +/** + * Attribute RegularFileCounter related methods + * Description: + * + * Data type: Tango::DevULong + * Attr type: Scalar + */ + virtual void read_RegularFileCounter(Tango::Attribute &attr); + virtual bool is_RegularFileCounter_allowed(Tango::AttReqType type); +/** + * Attribute WarningFileCounter related methods + * Description: + * + * Data type: Tango::DevULong + * Attr type: Scalar + */ + virtual void read_WarningFileCounter(Tango::Attribute &attr); + virtual bool is_WarningFileCounter_allowed(Tango::AttReqType type); +/** + * Attribute ErrorFileCounter related methods + * Description: + * + * Data type: Tango::DevULong + * Attr type: Scalar + */ + virtual void read_ErrorFileCounter(Tango::Attribute &attr); + virtual bool is_ErrorFileCounter_allowed(Tango::AttReqType type); + //-------------------------------------------------------- /** @@ -194,10 +237,26 @@ public: */ virtual void off(); virtual bool is_Off_allowed(const CORBA::Any &any); + /** + * Command ResetCounter related method + * Description: + * + */ + virtual void reset_counter(); + virtual bool is_ResetCounter_allowed(const CORBA::Any &any); /*----- PROTECTED REGION ID(PreProcessor::Additional Method prototypes) ENABLED START -----*/ +//------------------------------------------------------------------------------ +// [Public] Users methods +//------------------------------------------------------------------------------ + virtual void incrementRegularCounter(); + + virtual void incrementWarningCounter(); + + virtual void incrementErrorCounter(); + private: //------------------------------------------------------------------------------ // [Private] Utilities methods diff --git a/src/PreProcessor.xmi b/src/PreProcessor.xmi index 4aaa2b3..a754ed3 100644 --- a/src/PreProcessor.xmi +++ b/src/PreProcessor.xmi @@ -80,6 +80,39 @@ <excludedStates>FAULT</excludedStates> <excludedStates>ALARM</excludedStates> </commands> + <commands name="ResetCounter" description="" execMethod="reset_counter" displayLevel="OPERATOR" polledPeriod="0"> + <argin description=""> + <type xsi:type="pogoDsl:VoidType"/> + </argin> + <argout description=""> + <type xsi:type="pogoDsl:VoidType"/> + </argout> + <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> + </commands> + <attributes name="RegularFileCounter" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true" isDynamic="false"> + <dataType xsi:type="pogoDsl:UIntType"/> + <changeEvent fire="false" libCheckCriteria="false"/> + <archiveEvent fire="false" libCheckCriteria="false"/> + <dataReadyEvent fire="false" libCheckCriteria="true"/> + <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> + <properties description="" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/> + </attributes> + <attributes name="WarningFileCounter" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true" isDynamic="false"> + <dataType xsi:type="pogoDsl:UIntType"/> + <changeEvent fire="false" libCheckCriteria="false"/> + <archiveEvent fire="false" libCheckCriteria="false"/> + <dataReadyEvent fire="false" libCheckCriteria="true"/> + <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> + <properties description="" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/> + </attributes> + <attributes name="ErrorFileCounter" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true" isDynamic="false"> + <dataType xsi:type="pogoDsl:UIntType"/> + <changeEvent fire="false" libCheckCriteria="false"/> + <archiveEvent fire="false" libCheckCriteria="false"/> + <dataReadyEvent fire="false" libCheckCriteria="true"/> + <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> + <properties description="" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/> + </attributes> <states name="ON" description=""> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </states> diff --git a/src/PreProcessorClass.cpp b/src/PreProcessorClass.cpp index 03f838c..a6fa72b 100644 --- a/src/PreProcessorClass.cpp +++ b/src/PreProcessorClass.cpp @@ -130,8 +130,8 @@ PreProcessorClass *PreProcessorClass::init(const char *name) catch (bad_alloc &) { throw; - } - } + } + } return _instance; } @@ -193,6 +193,24 @@ CORBA::Any *OffClass::execute(Tango::DeviceImpl *device, TANGO_UNUSED(const CORB return new CORBA::Any(); } +//-------------------------------------------------------- +/** + * method : ResetCounterClass::execute() + * description : method to trigger the execution of the command. + * + * @param device The device on which the command must be executed + * @param in_any The command input data + * + * returns The command output data (packed in the Any object) + */ +//-------------------------------------------------------- +CORBA::Any *ResetCounterClass::execute(Tango::DeviceImpl *device, TANGO_UNUSED(const CORBA::Any &in_any)) +{ + cout2 << "ResetCounterClass::execute(): arrived" << endl; + ((static_cast<PreProcessor *>(device))->reset_counter()); + return new CORBA::Any(); +} + //=================================================================== // Properties management @@ -439,7 +457,7 @@ void PreProcessorClass::write_class_property() header = "$HeadURL: "; start = header.length(); string strloc = src_path.substr(start, (end-start)); - + Tango::DbDatum svn_loc("svn_location"); svn_loc << strloc; data.push_back(svn_loc); @@ -448,13 +466,13 @@ void PreProcessorClass::write_class_property() } // Get CVS or SVN revision tag - + // CVS tag string tagname(TagName); header = "$Name: "; start = header.length(); string endstr(" $"); - + end = tagname.find(endstr); if (end!=string::npos && end>start) { @@ -463,17 +481,17 @@ void PreProcessorClass::write_class_property() cvs_tag << strtag; data.push_back(cvs_tag); } - + // SVN tag string svnpath(SvnPath); header = "$HeadURL: "; start = header.length(); - + end = svnpath.find(endstr); if (end!=string::npos && end>start) { string strloc = svnpath.substr(start, end-start); - + string tagstr ("/tags/"); start = strloc.find(tagstr); if ( start!=string::npos ) @@ -481,7 +499,7 @@ void PreProcessorClass::write_class_property() start = start + tagstr.length(); end = strloc.find(filename); string strtag = strloc.substr(start, end-start-1); - + Tango::DbDatum svn_tag("svn_tag"); svn_tag << strtag; data.push_back(svn_tag); @@ -531,7 +549,7 @@ void PreProcessorClass::device_factory(const Tango::DevVarStringArray *devlist_p for (unsigned long i=0 ; i<devlist_ptr->length() ; i++) { cout4 << "Device name : " << (*devlist_ptr)[i].in() << endl; - device_list.push_back(new PreProcessor(this, (*devlist_ptr)[i])); + device_list.push_back(new PreProcessor(this, (*devlist_ptr)[i])); } // Manage dynamic attributes if any @@ -571,6 +589,78 @@ void PreProcessorClass::attribute_factory(vector<Tango::Attr *> &att_list) // Add your own code /*----- PROTECTED REGION END -----*/ // PreProcessorClass::attribute_factory_before + // Attribute : RegularFileCounter + RegularFileCounterAttrib *regularfilecounter = new RegularFileCounterAttrib(); + Tango::UserDefaultAttrProp regularfilecounter_prop; + // description not set for RegularFileCounter + // label not set for RegularFileCounter + // unit not set for RegularFileCounter + // standard_unit not set for RegularFileCounter + // display_unit not set for RegularFileCounter + // format not set for RegularFileCounter + // max_value not set for RegularFileCounter + // min_value not set for RegularFileCounter + // max_alarm not set for RegularFileCounter + // min_alarm not set for RegularFileCounter + // max_warning not set for RegularFileCounter + // min_warning not set for RegularFileCounter + // delta_t not set for RegularFileCounter + // delta_val not set for RegularFileCounter + + regularfilecounter->set_default_properties(regularfilecounter_prop); + // Not Polled + regularfilecounter->set_disp_level(Tango::OPERATOR); + // Not Memorized + att_list.push_back(regularfilecounter); + + // Attribute : WarningFileCounter + WarningFileCounterAttrib *warningfilecounter = new WarningFileCounterAttrib(); + Tango::UserDefaultAttrProp warningfilecounter_prop; + // description not set for WarningFileCounter + // label not set for WarningFileCounter + // unit not set for WarningFileCounter + // standard_unit not set for WarningFileCounter + // display_unit not set for WarningFileCounter + // format not set for WarningFileCounter + // max_value not set for WarningFileCounter + // min_value not set for WarningFileCounter + // max_alarm not set for WarningFileCounter + // min_alarm not set for WarningFileCounter + // max_warning not set for WarningFileCounter + // min_warning not set for WarningFileCounter + // delta_t not set for WarningFileCounter + // delta_val not set for WarningFileCounter + + warningfilecounter->set_default_properties(warningfilecounter_prop); + // Not Polled + warningfilecounter->set_disp_level(Tango::OPERATOR); + // Not Memorized + att_list.push_back(warningfilecounter); + + // Attribute : ErrorFileCounter + ErrorFileCounterAttrib *errorfilecounter = new ErrorFileCounterAttrib(); + Tango::UserDefaultAttrProp errorfilecounter_prop; + // description not set for ErrorFileCounter + // label not set for ErrorFileCounter + // unit not set for ErrorFileCounter + // standard_unit not set for ErrorFileCounter + // display_unit not set for ErrorFileCounter + // format not set for ErrorFileCounter + // max_value not set for ErrorFileCounter + // min_value not set for ErrorFileCounter + // max_alarm not set for ErrorFileCounter + // min_alarm not set for ErrorFileCounter + // max_warning not set for ErrorFileCounter + // min_warning not set for ErrorFileCounter + // delta_t not set for ErrorFileCounter + // delta_val not set for ErrorFileCounter + + errorfilecounter->set_default_properties(errorfilecounter_prop); + // Not Polled + errorfilecounter->set_disp_level(Tango::OPERATOR); + // Not Memorized + att_list.push_back(errorfilecounter); + // Create a list of static attributes create_static_attribute_list(get_class_attr()->get_attr_list()); /*----- PROTECTED REGION ID(PreProcessorClass::attribute_factory_after) ENABLED START -----*/ @@ -613,6 +703,15 @@ void PreProcessorClass::command_factory() Tango::OPERATOR); command_list.push_back(pOffCmd); + // Command ResetCounter + ResetCounterClass *pResetCounterCmd = + new ResetCounterClass("ResetCounter", + Tango::DEV_VOID, Tango::DEV_VOID, + "", + "", + Tango::OPERATOR); + command_list.push_back(pResetCounterCmd); + /*----- PROTECTED REGION ID(PreProcessorClass::command_factory_after) ENABLED START -----*/ // Add your own code @@ -629,7 +728,7 @@ void PreProcessorClass::command_factory() * method : PreProcessorClass::create_static_attribute_list * description : Create the a list of static attributes * - * @param att_list the ceated attribute list + * @param att_list the ceated attribute list */ //-------------------------------------------------------- void PreProcessorClass::create_static_attribute_list(vector<Tango::Attr *> &att_list) @@ -663,10 +762,10 @@ void PreProcessorClass::erase_dynamic_attributes(const Tango::DevVarStringArray Tango::Util *tg = Tango::Util::instance(); for (unsigned long i=0 ; i<devlist_ptr->length() ; i++) - { + { Tango::DeviceImpl *dev_impl = tg->get_device_by_name(((string)(*devlist_ptr)[i]).c_str()); PreProcessor *dev = static_cast<PreProcessor *> (dev_impl); - + vector<Tango::Attribute *> &dev_att_list = dev->get_device_attr()->get_attribute_list(); vector<Tango::Attribute *>::iterator ite_att; for (ite_att=dev_att_list.begin() ; ite_att != dev_att_list.end() ; ++ite_att) diff --git a/src/PreProcessorClass.h b/src/PreProcessorClass.h index 128c651..0041dd8 100644 --- a/src/PreProcessorClass.h +++ b/src/PreProcessorClass.h @@ -56,6 +56,49 @@ namespace PreProcessor_ns /*----- PROTECTED REGION END -----*/ // PreProcessorClass::classes for dynamic creation +//========================================= +// Define classes for attributes +//========================================= +// Attribute RegularFileCounter class definition +class RegularFileCounterAttrib: public Tango::Attr +{ +public: + RegularFileCounterAttrib():Attr("RegularFileCounter", + Tango::DEV_ULONG, Tango::READ) {}; + ~RegularFileCounterAttrib() {}; + virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att) + {(static_cast<PreProcessor *>(dev))->read_RegularFileCounter(att);} + virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty) + {return (static_cast<PreProcessor *>(dev))->is_RegularFileCounter_allowed(ty);} +}; + +// Attribute WarningFileCounter class definition +class WarningFileCounterAttrib: public Tango::Attr +{ +public: + WarningFileCounterAttrib():Attr("WarningFileCounter", + Tango::DEV_ULONG, Tango::READ) {}; + ~WarningFileCounterAttrib() {}; + virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att) + {(static_cast<PreProcessor *>(dev))->read_WarningFileCounter(att);} + virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty) + {return (static_cast<PreProcessor *>(dev))->is_WarningFileCounter_allowed(ty);} +}; + +// Attribute ErrorFileCounter class definition +class ErrorFileCounterAttrib: public Tango::Attr +{ +public: + ErrorFileCounterAttrib():Attr("ErrorFileCounter", + Tango::DEV_ULONG, Tango::READ) {}; + ~ErrorFileCounterAttrib() {}; + virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att) + {(static_cast<PreProcessor *>(dev))->read_ErrorFileCounter(att);} + virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty) + {return (static_cast<PreProcessor *>(dev))->is_ErrorFileCounter_allowed(ty);} +}; + + //========================================= // Define classes for commands //========================================= @@ -76,7 +119,7 @@ public: Tango::CmdArgType out) :Command(name,in,out) {}; ~OnClass() {}; - + 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<PreProcessor *>(dev))->is_On_allowed(any);} @@ -99,12 +142,35 @@ public: Tango::CmdArgType out) :Command(name,in,out) {}; ~OffClass() {}; - + 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<PreProcessor *>(dev))->is_Off_allowed(any);} }; +// Command ResetCounter class definition +class ResetCounterClass : public Tango::Command +{ +public: + ResetCounterClass(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) {}; + + ResetCounterClass(const char *name, + Tango::CmdArgType in, + Tango::CmdArgType out) + :Command(name,in,out) {}; + ~ResetCounterClass() {}; + + 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<PreProcessor *>(dev))->is_ResetCounter_allowed(any);} +}; + /** * The PreProcessorClass singleton definition @@ -126,7 +192,7 @@ class PreProcessorClass : public Tango::DeviceClass Tango::DbData cl_prop; Tango::DbData cl_def_prop; Tango::DbData dev_def_prop; - + // Method prototypes static PreProcessorClass *init(const char *); static PreProcessorClass *instance(); @@ -134,7 +200,7 @@ class PreProcessorClass : public Tango::DeviceClass Tango::DbDatum get_class_property(string &); Tango::DbDatum get_default_device_property(string &); Tango::DbDatum get_default_class_property(string &); - + protected: PreProcessorClass(string &); static PreProcessorClass *_instance; @@ -145,7 +211,7 @@ class PreProcessorClass : public Tango::DeviceClass void get_class_property(); string get_cvstag(); string get_cvsroot(); - + private: void device_factory(const Tango::DevVarStringArray *); void create_static_attribute_list(vector<Tango::Attr *> &); diff --git a/src/PreProcessorStateMachine.cpp b/src/PreProcessorStateMachine.cpp index f22a5e7..483f109 100644 --- a/src/PreProcessorStateMachine.cpp +++ b/src/PreProcessorStateMachine.cpp @@ -53,6 +53,54 @@ namespace PreProcessor_ns // Attributes Allowed Methods //================================================= +//-------------------------------------------------------- +/** + * Method : PreProcessor::is_RegularFileCounter_allowed() + * Description : Execution allowed for RegularFileCounter attribute + */ +//-------------------------------------------------------- +bool PreProcessor::is_RegularFileCounter_allowed(TANGO_UNUSED(Tango::AttReqType type)) +{ + + // Not any excluded states for RegularFileCounter attribute in read access. + /*----- PROTECTED REGION ID(PreProcessor::RegularFileCounterStateAllowed_READ) ENABLED START -----*/ + + /*----- PROTECTED REGION END -----*/ // PreProcessor::RegularFileCounterStateAllowed_READ + return true; +} + +//-------------------------------------------------------- +/** + * Method : PreProcessor::is_WarningFileCounter_allowed() + * Description : Execution allowed for WarningFileCounter attribute + */ +//-------------------------------------------------------- +bool PreProcessor::is_WarningFileCounter_allowed(TANGO_UNUSED(Tango::AttReqType type)) +{ + + // Not any excluded states for WarningFileCounter attribute in read access. + /*----- PROTECTED REGION ID(PreProcessor::WarningFileCounterStateAllowed_READ) ENABLED START -----*/ + + /*----- PROTECTED REGION END -----*/ // PreProcessor::WarningFileCounterStateAllowed_READ + return true; +} + +//-------------------------------------------------------- +/** + * Method : PreProcessor::is_ErrorFileCounter_allowed() + * Description : Execution allowed for ErrorFileCounter attribute + */ +//-------------------------------------------------------- +bool PreProcessor::is_ErrorFileCounter_allowed(TANGO_UNUSED(Tango::AttReqType type)) +{ + + // Not any excluded states for ErrorFileCounter attribute in read access. + /*----- PROTECTED REGION ID(PreProcessor::ErrorFileCounterStateAllowed_READ) ENABLED START -----*/ + + /*----- PROTECTED REGION END -----*/ // PreProcessor::ErrorFileCounterStateAllowed_READ + return true; +} + //================================================= // Commands Allowed Methods //================================================= @@ -99,4 +147,19 @@ bool PreProcessor::is_Off_allowed(TANGO_UNUSED(const CORBA::Any &any)) return true; } +//-------------------------------------------------------- +/** + * Method : PreProcessor::is_ResetCounter_allowed() + * Description : Execution allowed for ResetCounter attribute + */ +//-------------------------------------------------------- +bool PreProcessor::is_ResetCounter_allowed(TANGO_UNUSED(const CORBA::Any &any)) +{ + // Not any excluded states for ResetCounter command. + /*----- PROTECTED REGION ID(PreProcessor::ResetCounterStateAllowed) ENABLED START -----*/ + + /*----- PROTECTED REGION END -----*/ // PreProcessor::ResetCounterStateAllowed + return true; +} + } // End of namespace -- GitLab