Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • cs/ds/alarm-handler
  • francesco.tripaldi/alarm-handler
2 results
Show changes
Showing
with 11618 additions and 659 deletions
docs/images/alarm_ng.png

206 KiB

docs/images/alarm_ng_history.png

78.6 KiB

docs/images/alarm_notify_properties.png

11.7 KiB

docs/images/free_properties.png

68.8 KiB

This diff is collapsed.
/*----- PROTECTED REGION ID(Alarm.h) ENABLED START -----*/ /*----- PROTECTED REGION ID(AlarmHandler.h) ENABLED START -----*/
//============================================================================= //=============================================================================
// //
// file : Alarm.h // file : AlarmHandler.h
// //
// description : Include file for the Alarm class // description : Include file for the AlarmHandler class
// //
// project : alarm // project : Elettra alarm handler device server
// //
// This file is part of Tango device class. // This file is part of Tango device class.
// //
...@@ -22,12 +22,7 @@ ...@@ -22,12 +22,7 @@
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Tango. If not, see <http://www.gnu.org/licenses/>. // along with Tango. If not, see <http://www.gnu.org/licenses/>.
// //
// $Author: $
// //
// $Revision: $
// $Date: $
//
// $HeadURL: $
// //
//============================================================================= //=============================================================================
// This file is generated by POGO // This file is generated by POGO
...@@ -35,11 +30,10 @@ ...@@ -35,11 +30,10 @@
//============================================================================= //=============================================================================
#ifndef Alarm_H #ifndef AlarmHandler_H
#define Alarm_H #define AlarmHandler_H
#include <tango.h> #include <tango/tango.h>
#include <mysql.h>
#include <boost/version.hpp> #include <boost/version.hpp>
#if BOOST_VERSION >= 103600 #if BOOST_VERSION >= 103600
...@@ -50,7 +44,9 @@ ...@@ -50,7 +44,9 @@
#include "event_table.h" #include "event_table.h"
#include "SubscribeThread.h" #include "SubscribeThread.h"
#define MAX_ALARMS 1024 #define MAX_ALARMS 2000
#define MAX_ATTR_NAME 1000
#define MAX_ATTR_SUMMARY 10000
//#define _USE_ELETTRA_DB_RW //#define _USE_ELETTRA_DB_RW
...@@ -65,17 +61,25 @@ class update_thread; ...@@ -65,17 +61,25 @@ class update_thread;
# define ELAPSED(before, after) \ # define ELAPSED(before, after) \
1000.0*(after.tv_sec-before.tv_sec) + \ 1000.0*(after.tv_sec-before.tv_sec) + \
((double)after.tv_usec-before.tv_usec) / 1000 ((double)after.tv_usec-before.tv_usec) / 1000
#ifndef TANGO_LOG
#define TANGO_LOG cout
#endif
#ifndef TANGO_LOG_INFO
#define TANGO_LOG_INFO cout2
#endif
#ifndef TANGO_LOG_DEBUG
#define TANGO_LOG_DEBUG cout4
#endif
/*----- PROTECTED REGION END -----*/ // AlarmHandler.h
/*----- PROTECTED REGION END -----*/ // Alarm.h
/** /**
* Alarm class description: * AlarmHandler class description:
* Elettra alarm device server * Elettra alarm handler device server
*/ */
namespace Alarm_ns namespace AlarmHandler_ns
{ {
enum _AlarmStateEnum { enum _AlarmStateEnum {
_NORM, _NORM,
...@@ -85,58 +89,101 @@ enum _AlarmStateEnum { ...@@ -85,58 +89,101 @@ enum _AlarmStateEnum {
_SHLVD, _SHLVD,
_DSUPR, _DSUPR,
_OOSRV, _OOSRV,
_ERROR,
} ; } ;
typedef _AlarmStateEnum AlarmStateEnum; typedef _AlarmStateEnum AlarmStateEnum;
/*----- PROTECTED REGION ID(Alarm::Additional Class Declarations) ENABLED START -----*/ /*----- PROTECTED REGION ID(AlarmHandler::Additional Class Declarations) ENABLED START -----*/
// Additional Class Declarations // Additional Class Declarations
/*----- PROTECTED REGION END -----*/ // Alarm::Additional Class Declarations /*----- PROTECTED REGION END -----*/ // AlarmHandler::Additional Class Declarations
class Alarm : public TANGO_BASE_CLASS class AlarmHandler : public TANGO_BASE_CLASS
{ {
/*----- PROTECTED REGION ID(Alarm::Data Members) ENABLED START -----*/ /*----- PROTECTED REGION ID(AlarmHandler::Data Members) ENABLED START -----*/
// Add your own data members // Add your own data members
public: public:
bool compare_without_domain(string str1, string str2); bool compare_without_domain(string str1, string str2);
string remove_domain(string str); string remove_domain(string str);
//TODO: real attributes
Tango::DevLong attr_AttributeStartedNumber_read;
Tango::DevLong attr_AttributePausedNumber_read;
Tango::DevLong attr_AttributeStoppedNumber_read;
Tango::DevLong attr_AttributeNumber_read; Tango::DevLong attr_AttributeNumber_read;
/*----- PROTECTED REGION END -----*/ // Alarm::Data Members string normalAlarms_read[MAX_ALARMS];
string unacknowledgedAlarms_read[MAX_ALARMS];
string acknowledgedAlarms_read[MAX_ALARMS];
string unacknowledgedNormalAlarms_read[MAX_ALARMS];
string shelvedAlarms_read[MAX_ALARMS];
string outOfServiceAlarms_read[MAX_ALARMS];
string silencedAlarms_read[MAX_ALARMS];
string listAlarms_read[MAX_ALARMS];
string alarmSummary_read[MAX_ALARMS];
string eventList_read[MAX_ATTR_SUMMARY];
string eventSummary_read[MAX_ATTR_SUMMARY];
string alarmDisabled_read[MAX_ALARMS];
/* char c_normalAlarms_read[MAX_ALARMS][MAX_ATTR_NAME];
char c_unacknowledgedAlarms_read[MAX_ALARMS][MAX_ATTR_NAME];
char c_acknowledgedAlarms_read[MAX_ALARMS][MAX_ATTR_NAME];
char c_unacknowledgedNormalAlarms_read[MAX_ALARMS][MAX_ATTR_NAME];
char c_shelvedAlarms_read[MAX_ALARMS][MAX_ATTR_NAME];
char c_outOfServiceAlarms_read[MAX_ALARMS][MAX_ATTR_NAME];
char c_silencedAlarms_read[MAX_ALARMS][MAX_ATTR_NAME];
char c_listAlarms_read[MAX_ALARMS][MAX_ATTR_NAME];
#define MAX_SUMMARY 2*MAX_ATTR_NAME //TODO: max summary length!!!
char c_alarmSummary_read[MAX_ALARMS][MAX_SUMMARY];*/
size_t normalAlarms_sz;
size_t unacknowledgedAlarms_sz;
size_t acknowledgedAlarms_sz;
size_t unacknowledgedNormalAlarms_sz;
size_t shelvedAlarms_sz;
size_t outOfServiceAlarms_sz;
size_t silencedAlarms_sz;
size_t listAlarms_sz;
size_t alarmSummary_sz;
size_t eventList_sz;
size_t eventSummary_sz;
size_t alarmDisabled_sz;
double last_statistics_reset_time;
omni_mutex *prepare_alm_mtx;
/*----- PROTECTED REGION END -----*/ // AlarmHandler::Data Members
// Device property data members // Device property data members
public: public:
// AlarmStatus: Persistent storage of the alarms status
vector<string> alarmStatus;
// GroupNames: Labels for Group mask, first is for mask 0x00 // GroupNames: Labels for Group mask, first is for mask 0x00
vector<string> groupNames; vector<string> groupNames;
// ErrThreshold: Threshold for Tango error for being internal alarms // SubscribeRetryPeriod: Retry subscription period in seconds
Tango::DevLong errThreshold;
// DbHost: Host of the MySQL db
string dbHost;
// DbUser: Username for the MySQL db
string dbUser;
// DbPasswd: Password for the MySQL db
string dbPasswd;
// DbName: Db name for the MySQL db
string dbName;
// DbPort: Port of the MySQL db
string dbPort;
// InstanceName: Name used to associate configured alarm rules to this instance
string instanceName;
// SubscribeRetryPeriod: retry period in seconds
Tango::DevLong subscribeRetryPeriod; Tango::DevLong subscribeRetryPeriod;
// StatisticsTimeWindow: Time window to compute statistics in seconds
vector<Tango::DevLong> statisticsTimeWindow;
// ErrorDelay: Delay in seconds before changing to ERROR state after an exception is received.
Tango::DevULong errorDelay;
// SetAlarmQuality: Set alarm attribute quality as computed using quality of attributes in the formula
Tango::DevBoolean setAlarmQuality;
// Attribute data members // Attribute data members
public: public:
Tango::DevBoolean *attr_alarmAudible_read;
Tango::DevDouble *attr_StatisticsResetTime_read;
Tango::DevString *attr_alarm_read; Tango::DevString *attr_alarm_read;
Tango::DevString *attr_alarmNormal_read;
Tango::DevString *attr_alarmUnacknowledged_read;
Tango::DevString *attr_alarmAcknowledged_read;
Tango::DevString *attr_alarmUnacknowledgedNormal_read;
Tango::DevString *attr_alarmShelved_read;
Tango::DevString *attr_alarmOutOfService_read;
Tango::DevString *attr_alarmSilenced_read;
Tango::DevString *attr_alarmList_read;
Tango::DevDouble *attr_alarmFrequency_read;
Tango::DevString *attr_alarmSummary_read;
Tango::DevString *attr_eventList_read;
Tango::DevString *attr_eventSummary_read;
Tango::DevString *attr_alarmDisabled_read;
// Constructors and destructors // Constructors and destructors
public: public:
...@@ -146,14 +193,14 @@ public: ...@@ -146,14 +193,14 @@ public:
* @param cl Class. * @param cl Class.
* @param s Device Name * @param s Device Name
*/ */
Alarm(Tango::DeviceClass *cl,string &s); AlarmHandler(Tango::DeviceClass *cl,string &s);
/** /**
* Constructs a newly device object. * Constructs a newly device object.
* *
* @param cl Class. * @param cl Class.
* @param s Device Name * @param s Device Name
*/ */
Alarm(Tango::DeviceClass *cl,const char *s); AlarmHandler(Tango::DeviceClass *cl,const char *s);
/** /**
* Constructs a newly device object. * Constructs a newly device object.
* *
...@@ -161,11 +208,11 @@ public: ...@@ -161,11 +208,11 @@ public:
* @param s Device name * @param s Device name
* @param d Device description. * @param d Device description.
*/ */
Alarm(Tango::DeviceClass *cl,const char *s,const char *d); AlarmHandler(Tango::DeviceClass *cl,const char *s,const char *d);
/** /**
* The device object destructor. * The device object destructor.
*/ */
~Alarm() {delete_device();}; ~AlarmHandler() {delete_device();};
// Miscellaneous methods // Miscellaneous methods
...@@ -192,12 +239,30 @@ public: ...@@ -192,12 +239,30 @@ public:
public: public:
//-------------------------------------------------------- //--------------------------------------------------------
/* /*
* Method : Alarm::read_attr_hardware() * Method : AlarmHandler::read_attr_hardware()
* Description : Hardware acquisition for attributes. * Description : Hardware acquisition for attributes.
*/ */
//-------------------------------------------------------- //--------------------------------------------------------
virtual void read_attr_hardware(vector<long> &attr_list); virtual void read_attr_hardware(vector<long> &attr_list);
/**
* Attribute alarmAudible related methods
* Description: True if there is at least one alarm that needs audible indication on the GUI
*
* Data type: Tango::DevBoolean
* Attr type: Scalar
*/
virtual void read_alarmAudible(Tango::Attribute &attr);
virtual bool is_alarmAudible_allowed(Tango::AttReqType type);
/**
* Attribute StatisticsResetTime related methods
* Description: Time elapsed in seconds since last Resetstatistics
*
* Data type: Tango::DevDouble
* Attr type: Scalar
*/
virtual void read_StatisticsResetTime(Tango::Attribute &attr);
virtual bool is_StatisticsResetTime_allowed(Tango::AttReqType type);
/** /**
* Attribute alarm related methods * Attribute alarm related methods
* Description: * Description:
...@@ -207,6 +272,123 @@ public: ...@@ -207,6 +272,123 @@ public:
*/ */
virtual void read_alarm(Tango::Attribute &attr); virtual void read_alarm(Tango::Attribute &attr);
virtual bool is_alarm_allowed(Tango::AttReqType type); virtual bool is_alarm_allowed(Tango::AttReqType type);
/**
* Attribute alarmNormal related methods
* Description: List of alarms in normal state
*
* Data type: Tango::DevString
* Attr type: Spectrum max = 10000
*/
virtual void read_alarmNormal(Tango::Attribute &attr);
virtual bool is_alarmNormal_allowed(Tango::AttReqType type);
/**
* Attribute alarmUnacknowledged related methods
* Description: List of alarms in unacknowledged state
*
* Data type: Tango::DevString
* Attr type: Spectrum max = 10000
*/
virtual void read_alarmUnacknowledged(Tango::Attribute &attr);
virtual bool is_alarmUnacknowledged_allowed(Tango::AttReqType type);
/**
* Attribute alarmAcknowledged related methods
* Description: List of alarms in acknowledged state
*
* Data type: Tango::DevString
* Attr type: Spectrum max = 10000
*/
virtual void read_alarmAcknowledged(Tango::Attribute &attr);
virtual bool is_alarmAcknowledged_allowed(Tango::AttReqType type);
/**
* Attribute alarmUnacknowledgedNormal related methods
* Description: List of alarms in unacknowledged normal state
*
* Data type: Tango::DevString
* Attr type: Spectrum max = 10000
*/
virtual void read_alarmUnacknowledgedNormal(Tango::Attribute &attr);
virtual bool is_alarmUnacknowledgedNormal_allowed(Tango::AttReqType type);
/**
* Attribute alarmShelved related methods
* Description: List of alarms in shelved state
*
* Data type: Tango::DevString
* Attr type: Spectrum max = 10000
*/
virtual void read_alarmShelved(Tango::Attribute &attr);
virtual bool is_alarmShelved_allowed(Tango::AttReqType type);
/**
* Attribute alarmOutOfService related methods
* Description: List of alarms in out of service state
*
* Data type: Tango::DevString
* Attr type: Spectrum max = 10000
*/
virtual void read_alarmOutOfService(Tango::Attribute &attr);
virtual bool is_alarmOutOfService_allowed(Tango::AttReqType type);
/**
* Attribute alarmSilenced related methods
* Description: List of alarms in silenced state
*
* Data type: Tango::DevString
* Attr type: Spectrum max = 10000
*/
virtual void read_alarmSilenced(Tango::Attribute &attr);
virtual bool is_alarmSilenced_allowed(Tango::AttReqType type);
/**
* Attribute alarmList related methods
* Description: List of all alarms
*
* Data type: Tango::DevString
* Attr type: Spectrum max = 10000
*/
virtual void read_alarmList(Tango::Attribute &attr);
virtual bool is_alarmList_allowed(Tango::AttReqType type);
/**
* Attribute alarmFrequency related methods
* Description: List of frequency of evaluation of all alarms
*
* Data type: Tango::DevDouble
* Attr type: Spectrum max = 10000
*/
virtual void read_alarmFrequency(Tango::Attribute &attr);
virtual bool is_alarmFrequency_allowed(Tango::AttReqType type);
/**
* Attribute alarmSummary related methods
* Description:
*
* Data type: Tango::DevString
* Attr type: Spectrum max = 10000
*/
virtual void read_alarmSummary(Tango::Attribute &attr);
virtual bool is_alarmSummary_allowed(Tango::AttReqType type);
/**
* Attribute eventList related methods
* Description: List of all subscribed attributes
*
* Data type: Tango::DevString
* Attr type: Spectrum max = 10000
*/
virtual void read_eventList(Tango::Attribute &attr);
virtual bool is_eventList_allowed(Tango::AttReqType type);
/**
* Attribute eventSummary related methods
* Description:
*
* Data type: Tango::DevString
* Attr type: Spectrum max = 10000
*/
virtual void read_eventSummary(Tango::Attribute &attr);
virtual bool is_eventSummary_allowed(Tango::AttReqType type);
/**
* Attribute alarmDisabled related methods
* Description: List of alarms in out of service or shelved state
*
* Data type: Tango::DevString
* Attr type: Spectrum max = 10000
*/
virtual void read_alarmDisabled(Tango::Attribute &attr);
virtual bool is_alarmDisabled_allowed(Tango::AttReqType type);
// Dynamic attribute methods // Dynamic attribute methods
public: public:
...@@ -241,7 +423,7 @@ public: ...@@ -241,7 +423,7 @@ public:
//-------------------------------------------------------- //--------------------------------------------------------
/** /**
* Method : Alarm::add_dynamic_attributes() * Method : AlarmHandler::add_dynamic_attributes()
* Description : Add dynamic attributes if any. * Description : Add dynamic attributes if any.
*/ */
//-------------------------------------------------------- //--------------------------------------------------------
...@@ -277,21 +459,21 @@ public: ...@@ -277,21 +459,21 @@ public:
virtual void remove(Tango::DevString argin); virtual void remove(Tango::DevString argin);
virtual bool is_Remove_allowed(const CORBA::Any &any); virtual bool is_Remove_allowed(const CORBA::Any &any);
/** /**
* Command Configured related method * Command SearchAlarm related method
* Description: Alarms configured * Description: Return list of configured alarms matching the filter string
* *
* @param argin String containing a filter for output, if empty return all alarms * @param argin String containing a filter for output, if empty or * return all alarms
* @returns Alarms configured * @returns Configured alarms
*/ */
virtual Tango::DevVarStringArray *configured(Tango::DevString argin); virtual Tango::DevVarStringArray *search_alarm(Tango::DevString argin);
virtual bool is_Configured_allowed(const CORBA::Any &any); virtual bool is_SearchAlarm_allowed(const CORBA::Any &any);
/** /**
* Command StopNew related method * Command StopAudible related method
* Description: Remove "NEW" field from alarm string (so alarm panel stop sound) * Description: Stop audible indications on the GUI
* *
*/ */
virtual void stop_new(); virtual void stop_audible();
virtual bool is_StopNew_allowed(const CORBA::Any &any); virtual bool is_StopAudible_allowed(const CORBA::Any &any);
/** /**
* Command Silence related method * Command Silence related method
* Description: Alarm temporarily silence * Description: Alarm temporarily silence
...@@ -308,17 +490,71 @@ public: ...@@ -308,17 +490,71 @@ public:
*/ */
virtual void modify(Tango::DevString argin); virtual void modify(Tango::DevString argin);
virtual bool is_Modify_allowed(const CORBA::Any &any); virtual bool is_Modify_allowed(const CORBA::Any &any);
/**
* Command Shelve related method
* Description: Shelve an alarm: no state transition recorded, no audible nor visual indication
*
* @param argin String array containing alarm to be shelved
*/
virtual void shelve(const Tango::DevVarStringArray *argin);
virtual bool is_Shelve_allowed(const CORBA::Any &any);
/**
* Command Enable related method
* Description: Enable an alarm from Out of service state
*
* @param argin Alarm name
*/
virtual void enable(Tango::DevString argin);
virtual bool is_Enable_allowed(const CORBA::Any &any);
/**
* Command Disable related method
* Description: Put an alarm in Out of service state
*
* @param argin Alarm name
*/
virtual void disable(Tango::DevString argin);
virtual bool is_Disable_allowed(const CORBA::Any &any);
/**
* Command ResetStatistics related method
* Description: Reset statistics
*
*/
virtual void reset_statistics();
virtual bool is_ResetStatistics_allowed(const CORBA::Any &any);
/**
* Command StopNew related method
* Description: Stop audible indications on the GUI
*
*/
virtual void stop_new();
virtual bool is_StopNew_allowed(const CORBA::Any &any);
/**
* Command GetAlarmInfo related method
* Description: Returns the complete attribute info as an array of key=value
*
* @param argin Alarm name followed optionally by wanted key names
* @returns Complete attribute info as an array of key=value
*/
virtual Tango::DevVarStringArray *get_alarm_info(const Tango::DevVarStringArray *argin);
virtual bool is_GetAlarmInfo_allowed(const CORBA::Any &any);
/**
* Command ReLoadAll related method
* Description: Re Load all alarms.
*
*/
virtual void re_load_all();
virtual bool is_ReLoadAll_allowed(const CORBA::Any &any);
//-------------------------------------------------------- //--------------------------------------------------------
/** /**
* Method : Alarm::add_dynamic_commands() * Method : AlarmHandler::add_dynamic_commands()
* Description : Add dynamic commands if any. * Description : Add dynamic commands if any.
*/ */
//-------------------------------------------------------- //--------------------------------------------------------
void add_dynamic_commands(); void add_dynamic_commands();
/*----- PROTECTED REGION ID(Alarm::Additional Method prototypes) ENABLED START -----*/ /*----- PROTECTED REGION ID(AlarmHandler::Additional Method prototypes) ENABLED START -----*/
// Additional Method prototypes // Additional Method prototypes
friend class alarm_thread; friend class alarm_thread;
...@@ -342,6 +578,8 @@ private: ...@@ -342,6 +578,8 @@ private:
ReadersWritersLock *internallock; ReadersWritersLock *internallock;
ReadersWritersLock *dslock; ReadersWritersLock *dslock;
int period; //subscribe thread period int period; //subscribe thread period
map<string, string> saved_alarms;
ReadersWritersLock *savedlock;
static int instanceCounter; static int instanceCounter;
...@@ -354,14 +592,14 @@ private: ...@@ -354,14 +592,14 @@ private:
#if 0 #if 0
void init_alarms(map< string,vector<string> > &alarm_events); void init_alarms(map< string,vector<string> > &alarm_events);
#endif #endif
void add_alarm(alarm_t& a) throw(string&); void add_alarm(alarm_t& a, bool starting=false);
void add_event(alarm_t& a, vector<string> &evn) throw(string&); void add_event(alarm_t& a, vector<string> &evn);
#if 0 #if 0
void subscribe_event(alarm_t& a, EventCallBack& ecb, vector<string> &evn) throw(string&); void subscribe_event(alarm_t& a, EventCallBack& ecb, vector<string> &evn);
#endif #endif
// void do_alarm(bei_t& e); //gcc 4 problem?? // void do_alarm(bei_t& e); //gcc 4 problem??
bool remove_alarm(string& s) throw(string&); bool remove_alarm(string& s);
//void add_to_database(alarm_t& a) throw(string&); //void add_to_database(alarm_t& a);
void set_internal_alarm(string name, Tango::TimeVal t, string msg, unsigned int count=1); void set_internal_alarm(string name, Tango::TimeVal t, string msg, unsigned int count=1);
void load_alarm(string alarm_string, alarm_t &alm, vector<string> &evn); void load_alarm(string alarm_string, alarm_t &alm, vector<string> &evn);
...@@ -369,15 +607,24 @@ private: ...@@ -369,15 +607,24 @@ private:
formula_res_t eval_formula(tree_parse_info_t tree, string &attr_values); formula_res_t eval_formula(tree_parse_info_t tree, string &attr_values);
void find_event_formula(tree_parse_info_t tree, vector<string> &); void find_event_formula(tree_parse_info_t tree, vector<string> &);
formula_res_t eval_expression(iter_t const& i, string &attr_values, int ev_ind=0); //recursive tree node evaluation formula_res_t eval_expression(iter_t const& i, string &attr_values, vector< vector<double> > ev_ind={}); //recursive tree node evaluation
void eval_index_range(iter_t const& i, string &attr_values, vector<double> & ind);
void eval_node_event(iter_t const& i, vector<string> & ev); //recursive tree node evaluation void eval_node_event(iter_t const& i, vector<string> & ev); //recursive tree node evaluation
void prepare_alarm_attr(); //for read attribute alarm and push_change_event void prepare_alarm_attr(); //for read attribute alarm and push_change_event
void prepare_event_list();
void prepare_event_summary();
void remove_AlarmState_dynamic_attribute_no_clean_db(string attname);
void parse_alarm(string &alarm_string, alarm_t &alm);
SubscribeThread *thread; SubscribeThread *thread;
public: public:
void put_signal_property(); void put_signal_property();
bool check_signal_property();
void do_alarm(bei_t& e); //public instead of protected for gcc 4 problem?? void do_alarm(bei_t& e); //public instead of protected for gcc 4 problem??
bool do_alarm_eval(string alm_name, string ev_name, Tango::TimeVal ts); bool do_alarm_eval(string alm_name, string ev_name, Tango::TimeVal ts);
void timer_update(); //public instead of protected for gcc 4 problem?? void timer_update(); //public instead of protected for gcc 4 problem??
...@@ -390,15 +637,15 @@ private: ...@@ -390,15 +637,15 @@ private:
long port_rw; long port_rw;
#endif #endif
/*----- PROTECTED REGION END -----*/ // Alarm::Additional Method prototypes /*----- PROTECTED REGION END -----*/ // AlarmHandler::Additional Method prototypes
}; };
/*----- PROTECTED REGION ID(Alarm::Additional Classes Definitions) ENABLED START -----*/ /*----- PROTECTED REGION ID(AlarmHandler::Additional Classes Definitions) ENABLED START -----*/
// Additional Classes Definitions // Additional Classes Definitions
/*----- PROTECTED REGION END -----*/ // Alarm::Additional Classes Definitions /*----- PROTECTED REGION END -----*/ // AlarmHandler::Additional Classes Definitions
} // End of namespace } // End of namespace
#endif // Alarm_H #endif // AlarmHandler_H
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
/*----- PROTECTED REGION ID(Alarm::DynAttrUtils.cpp) ENABLED START -----*/ /*----- PROTECTED REGION ID(AlarmHandler::DynAttrUtils.cpp) ENABLED START -----*/
static const char *RcsId = "$Id: $";
//============================================================================= //=============================================================================
// //
// file : AlarmDynAttrUtils.cpp // file : AlarmHandlerDynAttrUtils.cpp
// //
// description : Dynamic attributes utilities file for the Alarm class // description : Dynamic attributes utilities file for the AlarmHandler class
// //
// project : Elettra alarm device server // project : Elettra alarm handler device server
// //
// This file is part of Tango device class. // This file is part of Tango device class.
// //
...@@ -23,12 +22,7 @@ static const char *RcsId = "$Id: $"; ...@@ -23,12 +22,7 @@ static const char *RcsId = "$Id: $";
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Tango. If not, see <http://www.gnu.org/licenses/>. // along with Tango. If not, see <http://www.gnu.org/licenses/>.
// //
// $Author: $
// //
// $Revision: $
// $Date: $
//
// $HeadURL: $
// //
//============================================================================= //=============================================================================
// This file is generated by POGO // This file is generated by POGO
...@@ -36,10 +30,10 @@ static const char *RcsId = "$Id: $"; ...@@ -36,10 +30,10 @@ static const char *RcsId = "$Id: $";
//============================================================================= //=============================================================================
#include <Alarm.h> #include <AlarmHandler.h>
#include <AlarmClass.h> #include <AlarmHandlerClass.h>
/*----- PROTECTED REGION END -----*/ // Alarm::DynAttrUtils.cpp /*----- PROTECTED REGION END -----*/ // AlarmHandler::DynAttrUtils.cpp
//================================================================ //================================================================
// Attributes managed are: // Attributes managed are:
...@@ -48,7 +42,7 @@ static const char *RcsId = "$Id: $"; ...@@ -48,7 +42,7 @@ static const char *RcsId = "$Id: $";
// AlarmFormula | Tango::DevString Scalar // AlarmFormula | Tango::DevString Scalar
//================================================================ //================================================================
// For compatibility reason, this file (AlarmDynAttrUtils) // For compatibility reason, this file (AlarmHandlerDynAttrUtils)
// manage also the dynamic command utilities. // manage also the dynamic command utilities.
//================================================================ //================================================================
// The following table gives the correspondence // The following table gives the correspondence
...@@ -58,7 +52,7 @@ static const char *RcsId = "$Id: $"; ...@@ -58,7 +52,7 @@ static const char *RcsId = "$Id: $";
//================================================================ //================================================================
//================================================================ //================================================================
namespace Alarm_ns namespace AlarmHandler_ns
{ {
//============================================================= //=============================================================
// Add/Remove dynamic attribute methods // Add/Remove dynamic attribute methods
...@@ -71,7 +65,7 @@ namespace Alarm_ns ...@@ -71,7 +65,7 @@ namespace Alarm_ns
* parameter attname: attribute name to be cretated and added. * parameter attname: attribute name to be cretated and added.
*/ */
//-------------------------------------------------------- //--------------------------------------------------------
void Alarm::add_AlarmState_dynamic_attribute(string attname) void AlarmHandler::add_AlarmState_dynamic_attribute(string attname)
{ {
// Attribute : AlarmState // Attribute : AlarmState
AlarmStateAttrib *alarmstate = new AlarmStateAttrib(attname); AlarmStateAttrib *alarmstate = new AlarmStateAttrib(attname);
...@@ -91,10 +85,19 @@ void Alarm::add_AlarmState_dynamic_attribute(string attname) ...@@ -91,10 +85,19 @@ void Alarm::add_AlarmState_dynamic_attribute(string attname)
// delta_t not set for AlarmState // delta_t not set for AlarmState
// delta_val not set for AlarmState // delta_val not set for AlarmState
/*----- PROTECTED REGION ID(Alarm::att_AlarmState_dynamic_attribute) ENABLED START -----*/ /*----- PROTECTED REGION ID(AlarmHandler::att_AlarmState_dynamic_attribute) ENABLED START -----*/
DEBUG_STREAM << __func__<<": entering name="<<attname; DEBUG_STREAM << __func__<<": entering name="<<attname;
alarm_container_t::iterator i = alarms.v_alarm.find(attname);
if(i != alarms.v_alarm.end())
{
alarmstate_prop.set_description(i->second.formula.c_str());
}
else
{
INFO_STREAM << __func__<<": name="<<attname<<" NOT FOUND while looking for formula to add as attribute description";
}
/*----- PROTECTED REGION END -----*/ // Alarm::att_AlarmState_dynamic_attribute /*----- PROTECTED REGION END -----*/ // AlarmHandler::att_AlarmState_dynamic_attribute
{ {
vector<string> labels; vector<string> labels;
labels.push_back("NORM"); labels.push_back("NORM");
...@@ -104,6 +107,7 @@ void Alarm::add_AlarmState_dynamic_attribute(string attname) ...@@ -104,6 +107,7 @@ void Alarm::add_AlarmState_dynamic_attribute(string attname)
labels.push_back("SHLVD"); labels.push_back("SHLVD");
labels.push_back("DSUPR"); labels.push_back("DSUPR");
labels.push_back("OOSRV"); labels.push_back("OOSRV");
labels.push_back("ERROR");
alarmstate_prop.set_enum_labels(labels); alarmstate_prop.set_enum_labels(labels);
} }
alarmstate->set_default_properties(alarmstate_prop); alarmstate->set_default_properties(alarmstate_prop);
...@@ -122,15 +126,15 @@ void Alarm::add_AlarmState_dynamic_attribute(string attname) ...@@ -122,15 +126,15 @@ void Alarm::add_AlarmState_dynamic_attribute(string attname)
* parameter attname: attribute name to be removed. * parameter attname: attribute name to be removed.
*/ */
//-------------------------------------------------------- //--------------------------------------------------------
void Alarm::remove_AlarmState_dynamic_attribute(string attname) void AlarmHandler::remove_AlarmState_dynamic_attribute(string attname)
{ {
remove_attribute(attname, true); remove_attribute(attname, true, Tango::Util::instance()->_UseDb);
map<string,Tango::DevEnum>::iterator ite; map<string,Tango::DevEnum>::iterator ite;
if ((ite=AlarmState_data.find(attname))!=AlarmState_data.end()) if ((ite=AlarmState_data.find(attname))!=AlarmState_data.end())
{ {
/*----- PROTECTED REGION ID(Alarm::remove_AlarmState_dynamic_attribute) ENABLED START -----*/ /*----- PROTECTED REGION ID(AlarmHandler::remove_AlarmState_dynamic_attribute) ENABLED START -----*/
DEBUG_STREAM << __func__<<": entering name="<<attname; DEBUG_STREAM << __func__<<": entering name="<<attname;
/*----- PROTECTED REGION END -----*/ // Alarm::remove_AlarmState_dynamic_attribute /*----- PROTECTED REGION END -----*/ // AlarmHandler::remove_AlarmState_dynamic_attribute
AlarmState_data.erase(ite); AlarmState_data.erase(ite);
} }
} }
...@@ -141,7 +145,7 @@ void Alarm::remove_AlarmState_dynamic_attribute(string attname) ...@@ -141,7 +145,7 @@ void Alarm::remove_AlarmState_dynamic_attribute(string attname)
* parameter attname: attribute name to be cretated and added. * parameter attname: attribute name to be cretated and added.
*/ */
//-------------------------------------------------------- //--------------------------------------------------------
void Alarm::add_AlarmFormula_dynamic_attribute(string attname) void AlarmHandler::add_AlarmFormula_dynamic_attribute(string attname)
{ {
// Attribute : AlarmFormula // Attribute : AlarmFormula
AlarmFormulaAttrib *alarmformula = new AlarmFormulaAttrib(attname); AlarmFormulaAttrib *alarmformula = new AlarmFormulaAttrib(attname);
...@@ -161,16 +165,16 @@ void Alarm::add_AlarmFormula_dynamic_attribute(string attname) ...@@ -161,16 +165,16 @@ void Alarm::add_AlarmFormula_dynamic_attribute(string attname)
// delta_t not set for AlarmFormula // delta_t not set for AlarmFormula
// delta_val not set for AlarmFormula // delta_val not set for AlarmFormula
/*----- PROTECTED REGION ID(Alarm::att_AlarmFormula_dynamic_attribute) ENABLED START -----*/ /*----- PROTECTED REGION ID(AlarmHandler::att_AlarmFormula_dynamic_attribute) ENABLED START -----*/
DEBUG_STREAM << __func__<<": entering name="<<attname; DEBUG_STREAM << __func__<<": entering name="<<attname;
/*----- PROTECTED REGION END -----*/ // Alarm::att_AlarmFormula_dynamic_attribute /*----- PROTECTED REGION END -----*/ // AlarmHandler::att_AlarmFormula_dynamic_attribute
alarmformula->set_default_properties(alarmformula_prop); alarmformula->set_default_properties(alarmformula_prop);
// Not Polled // Not Polled
alarmformula->set_disp_level(Tango::OPERATOR); alarmformula->set_disp_level(Tango::OPERATOR);
// Not Memorized // Not Memorized
alarmformula->set_change_event(true, false); alarmformula->set_change_event(true, true);
alarmformula->set_archive_event(true, false); alarmformula->set_archive_event(true, true);
char array[1]; char array[1];
array[0] = '\0'; array[0] = '\0';
AlarmFormula_data.insert(make_pair(attname, array)); AlarmFormula_data.insert(make_pair(attname, array));
...@@ -183,15 +187,15 @@ void Alarm::add_AlarmFormula_dynamic_attribute(string attname) ...@@ -183,15 +187,15 @@ void Alarm::add_AlarmFormula_dynamic_attribute(string attname)
* parameter attname: attribute name to be removed. * parameter attname: attribute name to be removed.
*/ */
//-------------------------------------------------------- //--------------------------------------------------------
void Alarm::remove_AlarmFormula_dynamic_attribute(string attname) void AlarmHandler::remove_AlarmFormula_dynamic_attribute(string attname)
{ {
remove_attribute(attname, true); remove_attribute(attname, true, Tango::Util::instance()->_UseDb);
map<string,Tango::DevString>::iterator ite; map<string,Tango::DevString>::iterator ite;
if ((ite=AlarmFormula_data.find(attname))!=AlarmFormula_data.end()) if ((ite=AlarmFormula_data.find(attname))!=AlarmFormula_data.end())
{ {
/*----- PROTECTED REGION ID(Alarm::remove_AlarmFormula_dynamic_attribute) ENABLED START -----*/ /*----- PROTECTED REGION ID(AlarmHandler::remove_AlarmFormula_dynamic_attribute) ENABLED START -----*/
/*----- PROTECTED REGION END -----*/ // Alarm::remove_AlarmFormula_dynamic_attribute /*----- PROTECTED REGION END -----*/ // AlarmHandler::remove_AlarmFormula_dynamic_attribute
AlarmFormula_data.erase(ite); AlarmFormula_data.erase(ite);
} }
} }
...@@ -207,7 +211,7 @@ void Alarm::remove_AlarmFormula_dynamic_attribute(string attname) ...@@ -207,7 +211,7 @@ void Alarm::remove_AlarmFormula_dynamic_attribute(string attname)
* parameter attname: the specified attribute name. * parameter attname: the specified attribute name.
*/ */
//-------------------------------------------------------- //--------------------------------------------------------
Tango::DevEnum *Alarm::get_AlarmState_data_ptr(string &name) Tango::DevEnum *AlarmHandler::get_AlarmState_data_ptr(string &name)
{ {
map<string,Tango::DevEnum>::iterator ite; map<string,Tango::DevEnum>::iterator ite;
if ((ite=AlarmState_data.find(name))==AlarmState_data.end()) if ((ite=AlarmState_data.find(name))==AlarmState_data.end())
...@@ -217,7 +221,7 @@ Tango::DevEnum *Alarm::get_AlarmState_data_ptr(string &name) ...@@ -217,7 +221,7 @@ Tango::DevEnum *Alarm::get_AlarmState_data_ptr(string &name)
Tango::Except::throw_exception( Tango::Except::throw_exception(
(const char *)"ATTRIBUTE_NOT_FOUND", (const char *)"ATTRIBUTE_NOT_FOUND",
tms.str().c_str(), tms.str().c_str(),
(const char *)"Alarm::get_AlarmState_data_ptr()"); (const char *)"AlarmHandler::get_AlarmState_data_ptr()");
} }
return &(ite->second); return &(ite->second);
} }
...@@ -228,7 +232,7 @@ Tango::DevEnum *Alarm::get_AlarmState_data_ptr(string &name) ...@@ -228,7 +232,7 @@ Tango::DevEnum *Alarm::get_AlarmState_data_ptr(string &name)
* parameter attname: the specified attribute name. * parameter attname: the specified attribute name.
*/ */
//-------------------------------------------------------- //--------------------------------------------------------
Tango::DevString *Alarm::get_AlarmFormula_data_ptr(string &name) Tango::DevString *AlarmHandler::get_AlarmFormula_data_ptr(string &name)
{ {
map<string,Tango::DevString>::iterator ite; map<string,Tango::DevString>::iterator ite;
if ((ite=AlarmFormula_data.find(name))==AlarmFormula_data.end()) if ((ite=AlarmFormula_data.find(name))==AlarmFormula_data.end())
...@@ -238,7 +242,7 @@ Tango::DevString *Alarm::get_AlarmFormula_data_ptr(string &name) ...@@ -238,7 +242,7 @@ Tango::DevString *Alarm::get_AlarmFormula_data_ptr(string &name)
Tango::Except::throw_exception( Tango::Except::throw_exception(
(const char *)"ATTRIBUTE_NOT_FOUND", (const char *)"ATTRIBUTE_NOT_FOUND",
tms.str().c_str(), tms.str().c_str(),
(const char *)"Alarm::get_AlarmFormula_data_ptr()"); (const char *)"AlarmHandler::get_AlarmFormula_data_ptr()");
} }
return &(ite->second); return &(ite->second);
} }
......
This diff is collapsed.
cmake_minimum_required(VERSION 3.2)
# source files
set(SRC_FILES ${SRC_FILES}
${CMAKE_CURRENT_SOURCE_DIR}/AlarmHandler.cpp
${CMAKE_CURRENT_SOURCE_DIR}/AlarmHandlerClass.cpp
${CMAKE_CURRENT_SOURCE_DIR}/AlarmHandlerDynAttrUtils.cpp
${CMAKE_CURRENT_SOURCE_DIR}/AlarmHandlerStateMachine.cpp
${CMAKE_CURRENT_SOURCE_DIR}/alarm_table.cpp
${CMAKE_CURRENT_SOURCE_DIR}/alarm-thread.cpp
${CMAKE_CURRENT_SOURCE_DIR}/ClassFactory.cpp
${CMAKE_CURRENT_SOURCE_DIR}/cmd_thread.cpp
${CMAKE_CURRENT_SOURCE_DIR}/event_table.cpp
${CMAKE_CURRENT_SOURCE_DIR}/main.cpp
${CMAKE_CURRENT_SOURCE_DIR}/SubscribeThread.cpp
${CMAKE_CURRENT_SOURCE_DIR}/update-thread.cpp
PARENT_SCOPE)
/*----- PROTECTED REGION ID(Alarm::ClassFactory.cpp) ENABLED START -----*/ /*----- PROTECTED REGION ID(AlarmHandler::ClassFactory.cpp) ENABLED START -----*/
static const char *RcsId = "$Header: /home/cvsadm/cvsroot/utils/alarm/tango/server/src/ClassFactory.cpp,v 1.2 2008-03-27 09:25:29 graziano Exp $"; //=============================================================================
//+=============================================================================
// //
// file : ClassFactory.cpp // file : ClassFactory.cpp
// //
// description : C++ source for the class_factory method of the DServer // description : C++ source for the class_factory method of the DServer
// device class. This method is responsible to create // device class. This method is responsible for the creation of
// all class singletin for a device server. It is called // all class singleton for a device server. It is called
// at device server startup // at device server startup.
// //
// project : TANGO Device Server // project : Elettra alarm handler device server
// //
// $Author: graziano $ // This file is part of Tango device class.
// //
// $Revision: 1.2 $ // Tango is free software: you can redistribute it and/or modify
// // it under the terms of the GNU General Public License as published by
// copyleft : Sincrotrone Trieste S.C.p.A. di interesse nazionale // the Free Software Foundation, either version 3 of the License, or
// Strada Statale 14 - km 163,5 in AREA Science Park // (at your option) any later version.
// 34012 Basovizza, Trieste ITALY //
// Tel. +39 040 37581 // Tango is distributed in the hope that it will be useful,
// Fax. +39 040 9380902 // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Tango. If not, see <http://www.gnu.org/licenses/>.
//
// //
//-=============================================================================
// //
// This file is generated by POGO
// (Program Obviously used to Generate tango Object)
//
// (c) - ELETTRA U.O. Controlli
//============================================================================= //=============================================================================
// This file is generated by POGO
// (Program Obviously used to Generate tango Object)
//=============================================================================
#include <tango/tango.h>
#include <AlarmHandlerClass.h>
// Add class header files if needed
#include <tango.h>
#include <AlarmClass.h>
/** /**
* Create AlarmClass singleton and store it in DServer object. * Create AlarmHandler Class singleton and store it in DServer object.
*
* @author $Author: graziano $
* @version $Revision: 1.2 $ $
*/ */
void Tango::DServer::class_factory() void Tango::DServer::class_factory()
{ {
// Add method class init if needed
add_class(Alarm_ns::AlarmClass::init("Alarm")); add_class(AlarmHandler_ns::AlarmHandlerClass::init("AlarmHandler"));
} }
/*----- PROTECTED REGION END -----*/ // Alarm::ClassFactory.cpp /*----- PROTECTED REGION END -----*/ // AlarmHandler::ClassFactory.cpp
static const char *RcsId = "$Header: /home/cvsadm/cvsroot/fermi/servers/hdb++/hdb++es/src/SubscribeThread.cpp,v 1.6 2014-03-06 15:21:43 graziano Exp $"; #include "AlarmHandler.h"
//+=============================================================================
//
// file : HdbEventHandler.cpp
//
// description : C++ source for thread management
// project : TANGO Device Server
//
// $Author: graziano $
//
// $Revision: 1.6 $
//
// $Log: SubscribeThread.cpp,v $
// Revision 1.6 2014-03-06 15:21:43 graziano
// StartArchivingAtStartup,
// start_all and stop_all,
// archiving of first event received at subscribe
//
// Revision 1.5 2014-02-20 14:59:02 graziano
// name and path fixing
// removed start acquisition from add
//
// Revision 1.4 2013-09-24 08:42:21 graziano
// bug fixing
//
// Revision 1.3 2013-09-02 12:13:22 graziano
// cleaned
//
// Revision 1.2 2013-08-23 10:04:53 graziano
// development
//
// Revision 1.1 2013-07-17 13:37:43 graziano
// *** empty log message ***
//
//
//
// copyleft : European Synchrotron Radiation Facility
// BP 220, Grenoble 38043
// FRANCE
//
//-=============================================================================
#include "Alarm.h"
#include "event_table.h" #include "event_table.h"
namespace Alarm_ns namespace AlarmHandler_ns
{ {
//============================================================================= //=============================================================================
//============================================================================= //=============================================================================
SubscribeThread::SubscribeThread(Alarm *dev):Tango::LogAdapter(dev) SubscribeThread::SubscribeThread(AlarmHandler *dev):Tango::LogAdapter(dev)
{ {
alarm_dev = dev; alarm_dev = dev;
period = 1; period = 10; //TODO: configurable
shared = dev->events; shared = dev->events;
} }
//============================================================================= //=============================================================================
...@@ -64,22 +21,33 @@ void SubscribeThread::updateProperty() ...@@ -64,22 +21,33 @@ void SubscribeThread::updateProperty()
} }
//============================================================================= //=============================================================================
//============================================================================= //=============================================================================
void SubscribeThread::signal()
{
shared->signal();
}
//=============================================================================
//=============================================================================
void *SubscribeThread::run_undetached(void *ptr) void *SubscribeThread::run_undetached(void *ptr)
{ {
INFO_STREAM << "SubscribeThread id="<<omni_thread::self()->id()<<endl; INFO_STREAM << "SubscribeThread id="<<omni_thread::self()->id()<<endl;
while(shared->get_if_stop()==false) while(shared->get_if_stop()==false)
{ {
// Try to subscribe // Try to subscribe
usleep(500000); //TODO: try to delay a bit subscribe_events
if(shared->get_if_stop())
break;
DEBUG_STREAM << "SubscribeThread::"<<__func__<<": AWAKE"<<endl; DEBUG_STREAM << "SubscribeThread::"<<__func__<<": AWAKE"<<endl;
updateProperty(); updateProperty();
alarm_dev->events->subscribe_events(); alarm_dev->events->subscribe_events();
int nb_to_subscribe = shared->nb_sig_to_subscribe(); int nb_to_subscribe = shared->nb_sig_to_subscribe();
shared->check_signal_property(); //check if, while subscribing, new alarms to be saved in properties where added (update action)
// And wait a bit before next time or // And wait a bit before next time or
// wait a long time if all signals subscribed // wait a long time if all signals subscribed
{ {
omni_mutex_lock sync(*shared); omni_mutex_lock sync(*shared);
//shared->lock(); //shared->lock();
if (nb_to_subscribe==0 && shared->action == NOTHING) int act=shared->action.load();
if (nb_to_subscribe==0 && act == NOTHING)
{ {
DEBUG_STREAM << "SubscribeThread::"<<__func__<<": going to wait nb_to_subscribe=0"<<endl; DEBUG_STREAM << "SubscribeThread::"<<__func__<<": going to wait nb_to_subscribe=0"<<endl;
//shared->condition.wait(); //shared->condition.wait();
...@@ -97,7 +65,7 @@ void *SubscribeThread::run_undetached(void *ptr) ...@@ -97,7 +65,7 @@ void *SubscribeThread::run_undetached(void *ptr)
//shared->unlock(); //shared->unlock();
} }
} }
shared->unsubscribe_events(); //shared->unsubscribe_events();
INFO_STREAM <<"SubscribeThread::"<< __func__<<": exiting..."<<endl; INFO_STREAM <<"SubscribeThread::"<< __func__<<": exiting..."<<endl;
return NULL; return NULL;
} }
......
//=============================================================================
//
// file : HdbEventHandler.h
//
// description : Include for the HDbDevice class.
//
// project : Tango Device Server
//
// $Author: graziano $
//
// $Revision: 1.5 $
//
// $Log: SubscribeThread.h,v $
// Revision 1.5 2014-03-06 15:21:43 graziano
// StartArchivingAtStartup,
// start_all and stop_all,
// archiving of first event received at subscribe
//
// Revision 1.4 2013-09-24 08:42:21 graziano
// bug fixing
//
// Revision 1.3 2013-09-02 12:11:32 graziano
// cleaned
//
// Revision 1.2 2013-08-23 10:04:53 graziano
// development
//
// Revision 1.1 2013-07-17 13:37:43 graziano
// *** empty log message ***
//
//
//
// copyleft : European Synchrotron Radiation Facility
// BP 220, Grenoble 38043
// FRANCE
//
//=============================================================================
#ifndef _SUBSCRIBE_THREAD_H #ifndef _SUBSCRIBE_THREAD_H
#define _SUBSCRIBE_THREAD_H #define _SUBSCRIBE_THREAD_H
#include <tango.h> #include <tango/tango.h>
#include <eventconsumer.h>
#include <stdint.h> #include <stdint.h>
#include "event_table.h" #include "event_table.h"
/** // constants definitions here.
* @author $Author: graziano $ //-----------------------------------------------
* @version $Revision: 1.5 $
*/
// constants definitions here.
//-----------------------------------------------
namespace Alarm_ns namespace AlarmHandler_ns
{ {
//class ArchiveCB; //class ArchiveCB;
class Alarm; class AlarmHandler;
class SubscribeThread; class SubscribeThread;
...@@ -75,13 +31,14 @@ private: ...@@ -75,13 +31,14 @@ private:
/** /**
* HdbDevice object * HdbDevice object
*/ */
Alarm *alarm_dev; AlarmHandler *alarm_dev;
public: public:
int period; int period;
SubscribeThread(Alarm *dev); SubscribeThread(AlarmHandler *dev);
void updateProperty(); void updateProperty();
void signal();
/** /**
* Execute the thread loop. * Execute the thread loop.
* This thread is awaken when a command has been received * This thread is awaken when a command has been received
......
This diff is collapsed.
/* /*
* alarm-thread.h * alarm-thread.h
* *
* $Author: graziano $
*
* $Revision: 1.3 $
*
* $Log: alarm-thread.h,v $
* Revision 1.3 2008-04-23 15:00:57 graziano
* small code cleanings
*
*
*
* copyleft: Sincrotrone Trieste S.C.p.A. di interesse nazionale * copyleft: Sincrotrone Trieste S.C.p.A. di interesse nazionale
* Strada Statale 14 - km 163,5 in AREA Science Park * Strada Statale 14 - km 163,5 in AREA Science Park
* 34012 Basovizza, Trieste ITALY * 34012 Basovizza, Trieste ITALY
...@@ -20,8 +10,8 @@ ...@@ -20,8 +10,8 @@
#define ALARM_THREAD_H #define ALARM_THREAD_H
#include <omnithread.h> #include <omnithread.h>
#include <tango.h> #include <tango/tango.h>
#include <Alarm.h> #include <AlarmHandler.h>
#define ALARM_THREAD_EXIT "alarm_thread_exit" #define ALARM_THREAD_EXIT "alarm_thread_exit"
#define ALARM_THREAD_EXIT_VALUE -100 #define ALARM_THREAD_EXIT_VALUE -100
...@@ -30,13 +20,13 @@ ...@@ -30,13 +20,13 @@
class alarm_thread : public omni_thread { class alarm_thread : public omni_thread {
public: public:
alarm_thread(Alarm_ns::Alarm *p); alarm_thread(AlarmHandler_ns::AlarmHandler *p);
~alarm_thread(); ~alarm_thread();
//int period; //int period;
protected: protected:
void run(void *); void run(void *);
private: private:
Alarm_ns::Alarm *p_Alarm; AlarmHandler_ns::AlarmHandler *p_Alarm;
}; };
#endif /* ALARM_THREAD_H */ #endif /* ALARM_THREAD_H */
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.