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 1897 additions and 940 deletions
<?xml version="1.0" encoding="ASCII"?>
<pogoDsl:PogoSystem xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:pogoDsl="http://www.esrf.fr/tango/pogo/PogoDsl">
<classes name="AlarmHandler" pogoRevision="9.4">
<description description="Elettra alarm handler device server" title="Elettra alarm handler device server" sourcePath="/home/graziano/ws/alarmhandler/src" language="Cpp" filestogenerate="XMI file,Code files,Protected Regions" license="GPL" copyright="" hasMandatoryProperty="false" hasConcreteProperty="true" hasAbstractCommand="false" hasAbstractAttribute="false">
<classes name="AlarmHandler" pogoRevision="9.6">
<description description="Elettra alarm handler device server" title="Elettra alarm handler device server" sourcePath="/home/graziano/ws/alarm-handler/src" language="Cpp" filestogenerate="XMI file,Code files,Protected Regions" license="GPL" copyright="" hasMandatoryProperty="false" hasConcreteProperty="true" hasAbstractCommand="false" hasAbstractAttribute="false">
<inheritances classname="Device_4Impl" sourcePath=""/>
<identification contact="at elettra.eu - graziano.scalamera" author="graziano.scalamera" emailDomain="elettra.eu" classFamily="SoftwareSystem" siteSpecific="" platform="Unix Like" bus="Not Applicable" manufacturer="" reference=""/>
</description>
<classProperties name="GroupNames" description="Labels for Group mask, first is for mask 0x00">
<type xsi:type="pogoDsl:StringVectorType"/>
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
</classProperties>
<classProperties name="SubscribeRetryPeriod" description="Retry subscription period in seconds">
<type xsi:type="pogoDsl:IntType"/>
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<DefaultPropValue>30</DefaultPropValue>
</classProperties>
<classProperties name="StatisticsTimeWindow" description="Time window to compute statistics in seconds">
<type xsi:type="pogoDsl:IntVectorType"/>
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<DefaultPropValue>60</DefaultPropValue>
</classProperties>
<classProperties name="ErrorDelay" description="Delay in seconds before changing to ERROR state after an exception is received.">
<type xsi:type="pogoDsl:UIntType"/>
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<DefaultPropValue>30</DefaultPropValue>
</classProperties>
<classProperties name="SetAlarmQuality" description="Set alarm attribute quality as computed using quality of attributes in the formula">
<type xsi:type="pogoDsl:BooleanType"/>
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<DefaultPropValue>false</DefaultPropValue>
</classProperties>
<deviceProperties name="GroupNames" description="Labels for Group mask, first is for mask 0x00">
<type xsi:type="pogoDsl:StringVectorType"/>
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
......@@ -19,6 +43,16 @@
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<DefaultPropValue>60</DefaultPropValue>
</deviceProperties>
<deviceProperties name="ErrorDelay" description="Delay in seconds before changing to ERROR state after an exception is received.">
<type xsi:type="pogoDsl:UIntType"/>
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<DefaultPropValue>30</DefaultPropValue>
</deviceProperties>
<deviceProperties name="SetAlarmQuality" description="Set alarm attribute quality as computed using quality of attributes in the formula">
<type xsi:type="pogoDsl:BooleanType"/>
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<DefaultPropValue>false</DefaultPropValue>
</deviceProperties>
<commands name="State" description="This command gets the device state (stored in its &lt;i>device_state&lt;/i> data member) and returns it to the caller." execMethod="dev_state" displayLevel="OPERATOR" polledPeriod="0">
<argin description="none.">
<type xsi:type="pogoDsl:VoidType"/>
......@@ -154,10 +188,19 @@
</argout>
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
</commands>
<attributes name="audibleAlarm" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true" isDynamic="false">
<commands name="ReLoadAll" description="Re Load all alarms." execMethod="re_load_all" displayLevel="OPERATOR" polledPeriod="0" isDynamic="false">
<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="alarmAudible" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true" isDynamic="false">
<dataType xsi:type="pogoDsl:BooleanType"/>
<changeEvent fire="true" libCheckCriteria="false"/>
<archiveEvent fire="true" libCheckCriteria="false"/>
<changeEvent fire="true" libCheckCriteria="true"/>
<archiveEvent fire="true" libCheckCriteria="true"/>
<dataReadyEvent fire="false" libCheckCriteria="true"/>
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<properties description="True if there is at least one alarm that needs audible indication on the GUI" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
......@@ -177,7 +220,7 @@
<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="normalAlarms" attType="Spectrum" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="10000" maxY="" allocReadMember="true" isDynamic="false">
<attributes name="alarmNormal" attType="Spectrum" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="10000" maxY="" allocReadMember="true" isDynamic="false">
<dataType xsi:type="pogoDsl:StringType"/>
<changeEvent fire="true" libCheckCriteria="true"/>
<archiveEvent fire="true" libCheckCriteria="true"/>
......@@ -185,7 +228,7 @@
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<properties description="List of alarms in normal state" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
</attributes>
<attributes name="unacknowledgedAlarms" attType="Spectrum" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="10000" maxY="" allocReadMember="true" isDynamic="false">
<attributes name="alarmUnacknowledged" attType="Spectrum" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="10000" maxY="" allocReadMember="true" isDynamic="false">
<dataType xsi:type="pogoDsl:StringType"/>
<changeEvent fire="true" libCheckCriteria="true"/>
<archiveEvent fire="true" libCheckCriteria="true"/>
......@@ -193,7 +236,7 @@
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<properties description="List of alarms in unacknowledged state" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
</attributes>
<attributes name="acknowledgedAlarms" attType="Spectrum" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="10000" maxY="" allocReadMember="true" isDynamic="false">
<attributes name="alarmAcknowledged" attType="Spectrum" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="10000" maxY="" allocReadMember="true" isDynamic="false">
<dataType xsi:type="pogoDsl:StringType"/>
<changeEvent fire="true" libCheckCriteria="true"/>
<archiveEvent fire="true" libCheckCriteria="true"/>
......@@ -201,7 +244,7 @@
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<properties description="List of alarms in acknowledged state" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
</attributes>
<attributes name="unacknowledgedNormalAlarms" attType="Spectrum" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="10000" maxY="" allocReadMember="true" isDynamic="false">
<attributes name="alarmUnacknowledgedNormal" attType="Spectrum" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="10000" maxY="" allocReadMember="true" isDynamic="false">
<dataType xsi:type="pogoDsl:StringType"/>
<changeEvent fire="true" libCheckCriteria="true"/>
<archiveEvent fire="true" libCheckCriteria="true"/>
......@@ -209,7 +252,7 @@
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<properties description="List of alarms in unacknowledged normal state" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
</attributes>
<attributes name="shelvedAlarms" attType="Spectrum" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="10000" maxY="" allocReadMember="true" isDynamic="false">
<attributes name="alarmShelved" attType="Spectrum" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="10000" maxY="" allocReadMember="true" isDynamic="false">
<dataType xsi:type="pogoDsl:StringType"/>
<changeEvent fire="true" libCheckCriteria="true"/>
<archiveEvent fire="true" libCheckCriteria="true"/>
......@@ -217,7 +260,7 @@
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<properties description="List of alarms in shelved state" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
</attributes>
<attributes name="outOfServiceAlarms" attType="Spectrum" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="10000" maxY="" allocReadMember="true" isDynamic="false">
<attributes name="alarmOutOfService" attType="Spectrum" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="10000" maxY="" allocReadMember="true" isDynamic="false">
<dataType xsi:type="pogoDsl:StringType"/>
<changeEvent fire="true" libCheckCriteria="true"/>
<archiveEvent fire="true" libCheckCriteria="true"/>
......@@ -225,7 +268,7 @@
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<properties description="List of alarms in out of service state" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
</attributes>
<attributes name="silencedAlarms" attType="Spectrum" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="10000" maxY="" allocReadMember="true" isDynamic="false">
<attributes name="alarmSilenced" attType="Spectrum" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="10000" maxY="" allocReadMember="true" isDynamic="false">
<dataType xsi:type="pogoDsl:StringType"/>
<changeEvent fire="true" libCheckCriteria="true"/>
<archiveEvent fire="true" libCheckCriteria="true"/>
......@@ -233,7 +276,7 @@
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<properties description="List of alarms in silenced state" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
</attributes>
<attributes name="listAlarms" attType="Spectrum" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="10000" maxY="" allocReadMember="true" isDynamic="false">
<attributes name="alarmList" attType="Spectrum" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="10000" maxY="" allocReadMember="true" isDynamic="false">
<dataType xsi:type="pogoDsl:StringType"/>
<changeEvent fire="true" libCheckCriteria="true"/>
<archiveEvent fire="true" libCheckCriteria="true"/>
......@@ -241,7 +284,7 @@
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<properties description="List of all alarms" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
</attributes>
<attributes name="frequencyAlarms" attType="Spectrum" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="10000" maxY="" allocReadMember="true" isDynamic="false">
<attributes name="alarmFrequency" attType="Spectrum" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="10000" maxY="" allocReadMember="true" isDynamic="false">
<dataType xsi:type="pogoDsl:DoubleType"/>
<changeEvent fire="true" libCheckCriteria="true"/>
<archiveEvent fire="true" libCheckCriteria="true"/>
......@@ -257,6 +300,30 @@
<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="eventList" attType="Spectrum" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="10000" maxY="" allocReadMember="true" isDynamic="false">
<dataType xsi:type="pogoDsl:StringType"/>
<changeEvent fire="false" libCheckCriteria="true"/>
<archiveEvent fire="false" libCheckCriteria="true"/>
<dataReadyEvent fire="false" libCheckCriteria="true"/>
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<properties description="List of all subscribed attributes" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
</attributes>
<attributes name="eventSummary" attType="Spectrum" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="10000" maxY="" allocReadMember="true" isDynamic="false">
<dataType xsi:type="pogoDsl:StringType"/>
<changeEvent fire="false" libCheckCriteria="true"/>
<archiveEvent fire="false" libCheckCriteria="true"/>
<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="alarmDisabled" attType="Spectrum" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="10000" maxY="" allocReadMember="true" isDynamic="false">
<dataType xsi:type="pogoDsl:StringType"/>
<changeEvent fire="true" libCheckCriteria="true"/>
<archiveEvent fire="true" libCheckCriteria="true"/>
<dataReadyEvent fire="false" libCheckCriteria="true"/>
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<properties description="List of alarms in out of service or shelved state" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
</attributes>
<dynamicAttributes name="AlarmState" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true" isDynamic="true">
<dataType xsi:type="pogoDsl:EnumType"/>
<changeEvent fire="true" libCheckCriteria="true"/>
......@@ -275,12 +342,12 @@
</dynamicAttributes>
<dynamicAttributes name="AlarmFormula" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true" isDynamic="true">
<dataType xsi:type="pogoDsl:StringType"/>
<changeEvent fire="true" libCheckCriteria="false"/>
<archiveEvent fire="true" libCheckCriteria="false"/>
<changeEvent fire="true" libCheckCriteria="true"/>
<archiveEvent fire="true" libCheckCriteria="true"/>
<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=""/>
</dynamicAttributes>
<preferences docHome="./doc_html" makefileHome="/usr/local/tango-9.2.5a/share/pogo/preferences"/>
<preferences docHome="./doc_html" makefileHome="/usr/local/tango-9.3.3/share/pogo/preferences"/>
</classes>
</pogoDsl:PogoSystem>
This diff is collapsed.
......@@ -37,7 +37,7 @@
#ifndef AlarmHandlerClass_H
#define AlarmHandlerClass_H
#include <tango.h>
#include <tango/tango.h>
#include <AlarmHandler.h>
......@@ -54,17 +54,17 @@ namespace AlarmHandler_ns
//=========================================
// Define classes for attributes
//=========================================
// Attribute audibleAlarm class definition
class audibleAlarmAttrib: public Tango::Attr
// Attribute alarmAudible class definition
class alarmAudibleAttrib: public Tango::Attr
{
public:
audibleAlarmAttrib():Attr("audibleAlarm",
alarmAudibleAttrib():Attr("alarmAudible",
Tango::DEV_BOOLEAN, Tango::READ) {};
~audibleAlarmAttrib() {};
~alarmAudibleAttrib() {};
virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att)
{(static_cast<AlarmHandler *>(dev))->read_audibleAlarm(att);}
{(static_cast<AlarmHandler *>(dev))->read_alarmAudible(att);}
virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty)
{return (static_cast<AlarmHandler *>(dev))->is_audibleAlarm_allowed(ty);}
{return (static_cast<AlarmHandler *>(dev))->is_alarmAudible_allowed(ty);}
};
// Attribute StatisticsResetTime class definition
......@@ -93,121 +93,121 @@ public:
{return (static_cast<AlarmHandler *>(dev))->is_alarm_allowed(ty);}
};
// Attribute normalAlarms class definition
class normalAlarmsAttrib: public Tango::SpectrumAttr
// Attribute alarmNormal class definition
class alarmNormalAttrib: public Tango::SpectrumAttr
{
public:
normalAlarmsAttrib():SpectrumAttr("normalAlarms",
alarmNormalAttrib():SpectrumAttr("alarmNormal",
Tango::DEV_STRING, Tango::READ, 10000) {};
~normalAlarmsAttrib() {};
~alarmNormalAttrib() {};
virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att)
{(static_cast<AlarmHandler *>(dev))->read_normalAlarms(att);}
{(static_cast<AlarmHandler *>(dev))->read_alarmNormal(att);}
virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty)
{return (static_cast<AlarmHandler *>(dev))->is_normalAlarms_allowed(ty);}
{return (static_cast<AlarmHandler *>(dev))->is_alarmNormal_allowed(ty);}
};
// Attribute unacknowledgedAlarms class definition
class unacknowledgedAlarmsAttrib: public Tango::SpectrumAttr
// Attribute alarmUnacknowledged class definition
class alarmUnacknowledgedAttrib: public Tango::SpectrumAttr
{
public:
unacknowledgedAlarmsAttrib():SpectrumAttr("unacknowledgedAlarms",
alarmUnacknowledgedAttrib():SpectrumAttr("alarmUnacknowledged",
Tango::DEV_STRING, Tango::READ, 10000) {};
~unacknowledgedAlarmsAttrib() {};
~alarmUnacknowledgedAttrib() {};
virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att)
{(static_cast<AlarmHandler *>(dev))->read_unacknowledgedAlarms(att);}
{(static_cast<AlarmHandler *>(dev))->read_alarmUnacknowledged(att);}
virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty)
{return (static_cast<AlarmHandler *>(dev))->is_unacknowledgedAlarms_allowed(ty);}
{return (static_cast<AlarmHandler *>(dev))->is_alarmUnacknowledged_allowed(ty);}
};
// Attribute acknowledgedAlarms class definition
class acknowledgedAlarmsAttrib: public Tango::SpectrumAttr
// Attribute alarmAcknowledged class definition
class alarmAcknowledgedAttrib: public Tango::SpectrumAttr
{
public:
acknowledgedAlarmsAttrib():SpectrumAttr("acknowledgedAlarms",
alarmAcknowledgedAttrib():SpectrumAttr("alarmAcknowledged",
Tango::DEV_STRING, Tango::READ, 10000) {};
~acknowledgedAlarmsAttrib() {};
~alarmAcknowledgedAttrib() {};
virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att)
{(static_cast<AlarmHandler *>(dev))->read_acknowledgedAlarms(att);}
{(static_cast<AlarmHandler *>(dev))->read_alarmAcknowledged(att);}
virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty)
{return (static_cast<AlarmHandler *>(dev))->is_acknowledgedAlarms_allowed(ty);}
{return (static_cast<AlarmHandler *>(dev))->is_alarmAcknowledged_allowed(ty);}
};
// Attribute unacknowledgedNormalAlarms class definition
class unacknowledgedNormalAlarmsAttrib: public Tango::SpectrumAttr
// Attribute alarmUnacknowledgedNormal class definition
class alarmUnacknowledgedNormalAttrib: public Tango::SpectrumAttr
{
public:
unacknowledgedNormalAlarmsAttrib():SpectrumAttr("unacknowledgedNormalAlarms",
alarmUnacknowledgedNormalAttrib():SpectrumAttr("alarmUnacknowledgedNormal",
Tango::DEV_STRING, Tango::READ, 10000) {};
~unacknowledgedNormalAlarmsAttrib() {};
~alarmUnacknowledgedNormalAttrib() {};
virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att)
{(static_cast<AlarmHandler *>(dev))->read_unacknowledgedNormalAlarms(att);}
{(static_cast<AlarmHandler *>(dev))->read_alarmUnacknowledgedNormal(att);}
virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty)
{return (static_cast<AlarmHandler *>(dev))->is_unacknowledgedNormalAlarms_allowed(ty);}
{return (static_cast<AlarmHandler *>(dev))->is_alarmUnacknowledgedNormal_allowed(ty);}
};
// Attribute shelvedAlarms class definition
class shelvedAlarmsAttrib: public Tango::SpectrumAttr
// Attribute alarmShelved class definition
class alarmShelvedAttrib: public Tango::SpectrumAttr
{
public:
shelvedAlarmsAttrib():SpectrumAttr("shelvedAlarms",
alarmShelvedAttrib():SpectrumAttr("alarmShelved",
Tango::DEV_STRING, Tango::READ, 10000) {};
~shelvedAlarmsAttrib() {};
~alarmShelvedAttrib() {};
virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att)
{(static_cast<AlarmHandler *>(dev))->read_shelvedAlarms(att);}
{(static_cast<AlarmHandler *>(dev))->read_alarmShelved(att);}
virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty)
{return (static_cast<AlarmHandler *>(dev))->is_shelvedAlarms_allowed(ty);}
{return (static_cast<AlarmHandler *>(dev))->is_alarmShelved_allowed(ty);}
};
// Attribute outOfServiceAlarms class definition
class outOfServiceAlarmsAttrib: public Tango::SpectrumAttr
// Attribute alarmOutOfService class definition
class alarmOutOfServiceAttrib: public Tango::SpectrumAttr
{
public:
outOfServiceAlarmsAttrib():SpectrumAttr("outOfServiceAlarms",
alarmOutOfServiceAttrib():SpectrumAttr("alarmOutOfService",
Tango::DEV_STRING, Tango::READ, 10000) {};
~outOfServiceAlarmsAttrib() {};
~alarmOutOfServiceAttrib() {};
virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att)
{(static_cast<AlarmHandler *>(dev))->read_outOfServiceAlarms(att);}
{(static_cast<AlarmHandler *>(dev))->read_alarmOutOfService(att);}
virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty)
{return (static_cast<AlarmHandler *>(dev))->is_outOfServiceAlarms_allowed(ty);}
{return (static_cast<AlarmHandler *>(dev))->is_alarmOutOfService_allowed(ty);}
};
// Attribute silencedAlarms class definition
class silencedAlarmsAttrib: public Tango::SpectrumAttr
// Attribute alarmSilenced class definition
class alarmSilencedAttrib: public Tango::SpectrumAttr
{
public:
silencedAlarmsAttrib():SpectrumAttr("silencedAlarms",
alarmSilencedAttrib():SpectrumAttr("alarmSilenced",
Tango::DEV_STRING, Tango::READ, 10000) {};
~silencedAlarmsAttrib() {};
~alarmSilencedAttrib() {};
virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att)
{(static_cast<AlarmHandler *>(dev))->read_silencedAlarms(att);}
{(static_cast<AlarmHandler *>(dev))->read_alarmSilenced(att);}
virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty)
{return (static_cast<AlarmHandler *>(dev))->is_silencedAlarms_allowed(ty);}
{return (static_cast<AlarmHandler *>(dev))->is_alarmSilenced_allowed(ty);}
};
// Attribute listAlarms class definition
class listAlarmsAttrib: public Tango::SpectrumAttr
// Attribute alarmList class definition
class alarmListAttrib: public Tango::SpectrumAttr
{
public:
listAlarmsAttrib():SpectrumAttr("listAlarms",
alarmListAttrib():SpectrumAttr("alarmList",
Tango::DEV_STRING, Tango::READ, 10000) {};
~listAlarmsAttrib() {};
~alarmListAttrib() {};
virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att)
{(static_cast<AlarmHandler *>(dev))->read_listAlarms(att);}
{(static_cast<AlarmHandler *>(dev))->read_alarmList(att);}
virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty)
{return (static_cast<AlarmHandler *>(dev))->is_listAlarms_allowed(ty);}
{return (static_cast<AlarmHandler *>(dev))->is_alarmList_allowed(ty);}
};
// Attribute frequencyAlarms class definition
class frequencyAlarmsAttrib: public Tango::SpectrumAttr
// Attribute alarmFrequency class definition
class alarmFrequencyAttrib: public Tango::SpectrumAttr
{
public:
frequencyAlarmsAttrib():SpectrumAttr("frequencyAlarms",
alarmFrequencyAttrib():SpectrumAttr("alarmFrequency",
Tango::DEV_DOUBLE, Tango::READ, 10000) {};
~frequencyAlarmsAttrib() {};
~alarmFrequencyAttrib() {};
virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att)
{(static_cast<AlarmHandler *>(dev))->read_frequencyAlarms(att);}
{(static_cast<AlarmHandler *>(dev))->read_alarmFrequency(att);}
virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty)
{return (static_cast<AlarmHandler *>(dev))->is_frequencyAlarms_allowed(ty);}
{return (static_cast<AlarmHandler *>(dev))->is_alarmFrequency_allowed(ty);}
};
// Attribute alarmSummary class definition
......@@ -223,6 +223,45 @@ public:
{return (static_cast<AlarmHandler *>(dev))->is_alarmSummary_allowed(ty);}
};
// Attribute eventList class definition
class eventListAttrib: public Tango::SpectrumAttr
{
public:
eventListAttrib():SpectrumAttr("eventList",
Tango::DEV_STRING, Tango::READ, 10000) {};
~eventListAttrib() {};
virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att)
{(static_cast<AlarmHandler *>(dev))->read_eventList(att);}
virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty)
{return (static_cast<AlarmHandler *>(dev))->is_eventList_allowed(ty);}
};
// Attribute eventSummary class definition
class eventSummaryAttrib: public Tango::SpectrumAttr
{
public:
eventSummaryAttrib():SpectrumAttr("eventSummary",
Tango::DEV_STRING, Tango::READ, 10000) {};
~eventSummaryAttrib() {};
virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att)
{(static_cast<AlarmHandler *>(dev))->read_eventSummary(att);}
virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty)
{return (static_cast<AlarmHandler *>(dev))->is_eventSummary_allowed(ty);}
};
// Attribute alarmDisabled class definition
class alarmDisabledAttrib: public Tango::SpectrumAttr
{
public:
alarmDisabledAttrib():SpectrumAttr("alarmDisabled",
Tango::DEV_STRING, Tango::READ, 10000) {};
~alarmDisabledAttrib() {};
virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att)
{(static_cast<AlarmHandler *>(dev))->read_alarmDisabled(att);}
virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty)
{return (static_cast<AlarmHandler *>(dev))->is_alarmDisabled_allowed(ty);}
};
//=========================================
// Define classes for dynamic attributes
......@@ -558,6 +597,29 @@ public:
{return (static_cast<AlarmHandler *>(dev))->is_GetAlarmInfo_allowed(any);}
};
// Command ReLoadAll class definition
class ReLoadAllClass : public Tango::Command
{
public:
ReLoadAllClass(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) {};
ReLoadAllClass(const char *name,
Tango::CmdArgType in,
Tango::CmdArgType out)
:Command(name,in,out) {};
~ReLoadAllClass() {};
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<AlarmHandler *>(dev))->is_ReLoadAll_allowed(any);}
};
/**
* The AlarmHandlerClass singleton definition
......@@ -574,6 +636,18 @@ class AlarmHandlerClass : public Tango::DeviceClass
/*----- PROTECTED REGION END -----*/ // AlarmHandlerClass::Additionnal DServer data members
// Class properties data members
public:
// GroupNames: Labels for Group mask, first is for mask 0x00
vector<string> groupNames;
// SubscribeRetryPeriod: Retry subscription period in seconds
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;
public:
// write class properties data members
Tango::DbData cl_prop;
......
......@@ -128,7 +128,7 @@ void AlarmHandler::add_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;
if ((ite=AlarmState_data.find(attname))!=AlarmState_data.end())
{
......@@ -173,8 +173,8 @@ void AlarmHandler::add_AlarmFormula_dynamic_attribute(string attname)
// Not Polled
alarmformula->set_disp_level(Tango::OPERATOR);
// Not Memorized
alarmformula->set_change_event(true, false);
alarmformula->set_archive_event(true, false);
alarmformula->set_change_event(true, true);
alarmformula->set_archive_event(true, true);
char array[1];
array[0] = '\0';
AlarmFormula_data.insert(make_pair(attname, array));
......@@ -189,7 +189,7 @@ void AlarmHandler::add_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;
if ((ite=AlarmFormula_data.find(attname))!=AlarmFormula_data.end())
{
......
......@@ -46,17 +46,17 @@ namespace AlarmHandler_ns
//--------------------------------------------------------
/**
* Method : AlarmHandler::is_audibleAlarm_allowed()
* Description : Execution allowed for audibleAlarm attribute
* Method : AlarmHandler::is_alarmAudible_allowed()
* Description : Execution allowed for alarmAudible attribute
*/
//--------------------------------------------------------
bool AlarmHandler::is_audibleAlarm_allowed(TANGO_UNUSED(Tango::AttReqType type))
bool AlarmHandler::is_alarmAudible_allowed(TANGO_UNUSED(Tango::AttReqType type))
{
// Not any excluded states for audibleAlarm attribute in read access.
/*----- PROTECTED REGION ID(AlarmHandler::audibleAlarmStateAllowed_READ) ENABLED START -----*/
// Not any excluded states for alarmAudible attribute in read access.
/*----- PROTECTED REGION ID(AlarmHandler::alarmAudibleStateAllowed_READ) ENABLED START -----*/
/*----- PROTECTED REGION END -----*/ // AlarmHandler::audibleAlarmStateAllowed_READ
/*----- PROTECTED REGION END -----*/ // AlarmHandler::alarmAudibleStateAllowed_READ
return true;
}
......@@ -94,145 +94,145 @@ bool AlarmHandler::is_alarm_allowed(TANGO_UNUSED(Tango::AttReqType type))
//--------------------------------------------------------
/**
* Method : AlarmHandler::is_normalAlarms_allowed()
* Description : Execution allowed for normalAlarms attribute
* Method : AlarmHandler::is_alarmNormal_allowed()
* Description : Execution allowed for alarmNormal attribute
*/
//--------------------------------------------------------
bool AlarmHandler::is_normalAlarms_allowed(TANGO_UNUSED(Tango::AttReqType type))
bool AlarmHandler::is_alarmNormal_allowed(TANGO_UNUSED(Tango::AttReqType type))
{
// Not any excluded states for normalAlarms attribute in read access.
/*----- PROTECTED REGION ID(AlarmHandler::normalAlarmsStateAllowed_READ) ENABLED START -----*/
// Not any excluded states for alarmNormal attribute in read access.
/*----- PROTECTED REGION ID(AlarmHandler::alarmNormalStateAllowed_READ) ENABLED START -----*/
/*----- PROTECTED REGION END -----*/ // AlarmHandler::normalAlarmsStateAllowed_READ
/*----- PROTECTED REGION END -----*/ // AlarmHandler::alarmNormalStateAllowed_READ
return true;
}
//--------------------------------------------------------
/**
* Method : AlarmHandler::is_unacknowledgedAlarms_allowed()
* Description : Execution allowed for unacknowledgedAlarms attribute
* Method : AlarmHandler::is_alarmUnacknowledged_allowed()
* Description : Execution allowed for alarmUnacknowledged attribute
*/
//--------------------------------------------------------
bool AlarmHandler::is_unacknowledgedAlarms_allowed(TANGO_UNUSED(Tango::AttReqType type))
bool AlarmHandler::is_alarmUnacknowledged_allowed(TANGO_UNUSED(Tango::AttReqType type))
{
// Not any excluded states for unacknowledgedAlarms attribute in read access.
/*----- PROTECTED REGION ID(AlarmHandler::unacknowledgedAlarmsStateAllowed_READ) ENABLED START -----*/
// Not any excluded states for alarmUnacknowledged attribute in read access.
/*----- PROTECTED REGION ID(AlarmHandler::alarmUnacknowledgedStateAllowed_READ) ENABLED START -----*/
/*----- PROTECTED REGION END -----*/ // AlarmHandler::unacknowledgedAlarmsStateAllowed_READ
/*----- PROTECTED REGION END -----*/ // AlarmHandler::alarmUnacknowledgedStateAllowed_READ
return true;
}
//--------------------------------------------------------
/**
* Method : AlarmHandler::is_acknowledgedAlarms_allowed()
* Description : Execution allowed for acknowledgedAlarms attribute
* Method : AlarmHandler::is_alarmAcknowledged_allowed()
* Description : Execution allowed for alarmAcknowledged attribute
*/
//--------------------------------------------------------
bool AlarmHandler::is_acknowledgedAlarms_allowed(TANGO_UNUSED(Tango::AttReqType type))
bool AlarmHandler::is_alarmAcknowledged_allowed(TANGO_UNUSED(Tango::AttReqType type))
{
// Not any excluded states for acknowledgedAlarms attribute in read access.
/*----- PROTECTED REGION ID(AlarmHandler::acknowledgedAlarmsStateAllowed_READ) ENABLED START -----*/
// Not any excluded states for alarmAcknowledged attribute in read access.
/*----- PROTECTED REGION ID(AlarmHandler::alarmAcknowledgedStateAllowed_READ) ENABLED START -----*/
/*----- PROTECTED REGION END -----*/ // AlarmHandler::acknowledgedAlarmsStateAllowed_READ
/*----- PROTECTED REGION END -----*/ // AlarmHandler::alarmAcknowledgedStateAllowed_READ
return true;
}
//--------------------------------------------------------
/**
* Method : AlarmHandler::is_unacknowledgedNormalAlarms_allowed()
* Description : Execution allowed for unacknowledgedNormalAlarms attribute
* Method : AlarmHandler::is_alarmUnacknowledgedNormal_allowed()
* Description : Execution allowed for alarmUnacknowledgedNormal attribute
*/
//--------------------------------------------------------
bool AlarmHandler::is_unacknowledgedNormalAlarms_allowed(TANGO_UNUSED(Tango::AttReqType type))
bool AlarmHandler::is_alarmUnacknowledgedNormal_allowed(TANGO_UNUSED(Tango::AttReqType type))
{
// Not any excluded states for unacknowledgedNormalAlarms attribute in read access.
/*----- PROTECTED REGION ID(AlarmHandler::unacknowledgedNormalAlarmsStateAllowed_READ) ENABLED START -----*/
// Not any excluded states for alarmUnacknowledgedNormal attribute in read access.
/*----- PROTECTED REGION ID(AlarmHandler::alarmUnacknowledgedNormalStateAllowed_READ) ENABLED START -----*/
/*----- PROTECTED REGION END -----*/ // AlarmHandler::unacknowledgedNormalAlarmsStateAllowed_READ
/*----- PROTECTED REGION END -----*/ // AlarmHandler::alarmUnacknowledgedNormalStateAllowed_READ
return true;
}
//--------------------------------------------------------
/**
* Method : AlarmHandler::is_shelvedAlarms_allowed()
* Description : Execution allowed for shelvedAlarms attribute
* Method : AlarmHandler::is_alarmShelved_allowed()
* Description : Execution allowed for alarmShelved attribute
*/
//--------------------------------------------------------
bool AlarmHandler::is_shelvedAlarms_allowed(TANGO_UNUSED(Tango::AttReqType type))
bool AlarmHandler::is_alarmShelved_allowed(TANGO_UNUSED(Tango::AttReqType type))
{
// Not any excluded states for shelvedAlarms attribute in read access.
/*----- PROTECTED REGION ID(AlarmHandler::shelvedAlarmsStateAllowed_READ) ENABLED START -----*/
// Not any excluded states for alarmShelved attribute in read access.
/*----- PROTECTED REGION ID(AlarmHandler::alarmShelvedStateAllowed_READ) ENABLED START -----*/
/*----- PROTECTED REGION END -----*/ // AlarmHandler::shelvedAlarmsStateAllowed_READ
/*----- PROTECTED REGION END -----*/ // AlarmHandler::alarmShelvedStateAllowed_READ
return true;
}
//--------------------------------------------------------
/**
* Method : AlarmHandler::is_outOfServiceAlarms_allowed()
* Description : Execution allowed for outOfServiceAlarms attribute
* Method : AlarmHandler::is_alarmOutOfService_allowed()
* Description : Execution allowed for alarmOutOfService attribute
*/
//--------------------------------------------------------
bool AlarmHandler::is_outOfServiceAlarms_allowed(TANGO_UNUSED(Tango::AttReqType type))
bool AlarmHandler::is_alarmOutOfService_allowed(TANGO_UNUSED(Tango::AttReqType type))
{
// Not any excluded states for outOfServiceAlarms attribute in read access.
/*----- PROTECTED REGION ID(AlarmHandler::outOfServiceAlarmsStateAllowed_READ) ENABLED START -----*/
// Not any excluded states for alarmOutOfService attribute in read access.
/*----- PROTECTED REGION ID(AlarmHandler::alarmOutOfServiceStateAllowed_READ) ENABLED START -----*/
/*----- PROTECTED REGION END -----*/ // AlarmHandler::outOfServiceAlarmsStateAllowed_READ
/*----- PROTECTED REGION END -----*/ // AlarmHandler::alarmOutOfServiceStateAllowed_READ
return true;
}
//--------------------------------------------------------
/**
* Method : AlarmHandler::is_silencedAlarms_allowed()
* Description : Execution allowed for silencedAlarms attribute
* Method : AlarmHandler::is_alarmSilenced_allowed()
* Description : Execution allowed for alarmSilenced attribute
*/
//--------------------------------------------------------
bool AlarmHandler::is_silencedAlarms_allowed(TANGO_UNUSED(Tango::AttReqType type))
bool AlarmHandler::is_alarmSilenced_allowed(TANGO_UNUSED(Tango::AttReqType type))
{
// Not any excluded states for silencedAlarms attribute in read access.
/*----- PROTECTED REGION ID(AlarmHandler::silencedAlarmsStateAllowed_READ) ENABLED START -----*/
// Not any excluded states for alarmSilenced attribute in read access.
/*----- PROTECTED REGION ID(AlarmHandler::alarmSilencedStateAllowed_READ) ENABLED START -----*/
/*----- PROTECTED REGION END -----*/ // AlarmHandler::silencedAlarmsStateAllowed_READ
/*----- PROTECTED REGION END -----*/ // AlarmHandler::alarmSilencedStateAllowed_READ
return true;
}
//--------------------------------------------------------
/**
* Method : AlarmHandler::is_listAlarms_allowed()
* Description : Execution allowed for listAlarms attribute
* Method : AlarmHandler::is_alarmList_allowed()
* Description : Execution allowed for alarmList attribute
*/
//--------------------------------------------------------
bool AlarmHandler::is_listAlarms_allowed(TANGO_UNUSED(Tango::AttReqType type))
bool AlarmHandler::is_alarmList_allowed(TANGO_UNUSED(Tango::AttReqType type))
{
// Not any excluded states for listAlarms attribute in read access.
/*----- PROTECTED REGION ID(AlarmHandler::listAlarmsStateAllowed_READ) ENABLED START -----*/
// Not any excluded states for alarmList attribute in read access.
/*----- PROTECTED REGION ID(AlarmHandler::alarmListStateAllowed_READ) ENABLED START -----*/
/*----- PROTECTED REGION END -----*/ // AlarmHandler::listAlarmsStateAllowed_READ
/*----- PROTECTED REGION END -----*/ // AlarmHandler::alarmListStateAllowed_READ
return true;
}
//--------------------------------------------------------
/**
* Method : AlarmHandler::is_frequencyAlarms_allowed()
* Description : Execution allowed for frequencyAlarms attribute
* Method : AlarmHandler::is_alarmFrequency_allowed()
* Description : Execution allowed for alarmFrequency attribute
*/
//--------------------------------------------------------
bool AlarmHandler::is_frequencyAlarms_allowed(TANGO_UNUSED(Tango::AttReqType type))
bool AlarmHandler::is_alarmFrequency_allowed(TANGO_UNUSED(Tango::AttReqType type))
{
// Not any excluded states for frequencyAlarms attribute in read access.
/*----- PROTECTED REGION ID(AlarmHandler::frequencyAlarmsStateAllowed_READ) ENABLED START -----*/
// Not any excluded states for alarmFrequency attribute in read access.
/*----- PROTECTED REGION ID(AlarmHandler::alarmFrequencyStateAllowed_READ) ENABLED START -----*/
/*----- PROTECTED REGION END -----*/ // AlarmHandler::frequencyAlarmsStateAllowed_READ
/*----- PROTECTED REGION END -----*/ // AlarmHandler::alarmFrequencyStateAllowed_READ
return true;
}
......@@ -252,6 +252,54 @@ bool AlarmHandler::is_alarmSummary_allowed(TANGO_UNUSED(Tango::AttReqType type))
return true;
}
//--------------------------------------------------------
/**
* Method : AlarmHandler::is_eventList_allowed()
* Description : Execution allowed for eventList attribute
*/
//--------------------------------------------------------
bool AlarmHandler::is_eventList_allowed(TANGO_UNUSED(Tango::AttReqType type))
{
// Not any excluded states for eventList attribute in read access.
/*----- PROTECTED REGION ID(AlarmHandler::eventListStateAllowed_READ) ENABLED START -----*/
/*----- PROTECTED REGION END -----*/ // AlarmHandler::eventListStateAllowed_READ
return true;
}
//--------------------------------------------------------
/**
* Method : AlarmHandler::is_eventSummary_allowed()
* Description : Execution allowed for eventSummary attribute
*/
//--------------------------------------------------------
bool AlarmHandler::is_eventSummary_allowed(TANGO_UNUSED(Tango::AttReqType type))
{
// Not any excluded states for eventSummary attribute in read access.
/*----- PROTECTED REGION ID(AlarmHandler::eventSummaryStateAllowed_READ) ENABLED START -----*/
/*----- PROTECTED REGION END -----*/ // AlarmHandler::eventSummaryStateAllowed_READ
return true;
}
//--------------------------------------------------------
/**
* Method : AlarmHandler::is_alarmDisabled_allowed()
* Description : Execution allowed for alarmDisabled attribute
*/
//--------------------------------------------------------
bool AlarmHandler::is_alarmDisabled_allowed(TANGO_UNUSED(Tango::AttReqType type))
{
// Not any excluded states for alarmDisabled attribute in read access.
/*----- PROTECTED REGION ID(AlarmHandler::alarmDisabledStateAllowed_READ) ENABLED START -----*/
/*----- PROTECTED REGION END -----*/ // AlarmHandler::alarmDisabledStateAllowed_READ
return true;
}
//--------------------------------------------------------
/**
* Method : AlarmHandler::is_AlarmState_allowed()
......@@ -484,6 +532,21 @@ bool AlarmHandler::is_GetAlarmInfo_allowed(TANGO_UNUSED(const CORBA::Any &any))
return true;
}
//--------------------------------------------------------
/**
* Method : AlarmHandler::is_ReLoadAll_allowed()
* Description : Execution allowed for ReLoadAll attribute
*/
//--------------------------------------------------------
bool AlarmHandler::is_ReLoadAll_allowed(TANGO_UNUSED(const CORBA::Any &any))
{
// Not any excluded states for ReLoadAll command.
/*----- PROTECTED REGION ID(AlarmHandler::ReLoadAllStateAllowed) ENABLED START -----*/
/*----- PROTECTED REGION END -----*/ // AlarmHandler::ReLoadAllStateAllowed
return true;
}
/*----- PROTECTED REGION ID(AlarmHandler::AlarmHandlerStateAllowed.AdditionalMethods) ENABLED START -----*/
......
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)
......@@ -32,7 +32,7 @@
// (Program Obviously used to Generate tango Object)
//=============================================================================
#include <tango.h>
#include <tango/tango.h>
#include <AlarmHandlerClass.h>
// Add class header files if needed
......
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 $";
//+=============================================================================
//
// 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 "AlarmHandler.h"
#include "event_table.h"
......@@ -53,7 +10,7 @@ namespace AlarmHandler_ns
SubscribeThread::SubscribeThread(AlarmHandler *dev):Tango::LogAdapter(dev)
{
alarm_dev = dev;
period = 1;
period = 10; //TODO: configurable
shared = dev->events;
}
//=============================================================================
......@@ -64,22 +21,33 @@ void SubscribeThread::updateProperty()
}
//=============================================================================
//=============================================================================
void SubscribeThread::signal()
{
shared->signal();
}
//=============================================================================
//=============================================================================
void *SubscribeThread::run_undetached(void *ptr)
{
INFO_STREAM << "SubscribeThread id="<<omni_thread::self()->id()<<endl;
while(shared->get_if_stop()==false)
{
// 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;
updateProperty();
alarm_dev->events->subscribe_events();
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
// wait a long time if all signals subscribed
{
omni_mutex_lock sync(*shared);
//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;
//shared->condition.wait();
......@@ -97,7 +65,7 @@ void *SubscribeThread::run_undetached(void *ptr)
//shared->unlock();
}
}
shared->unsubscribe_events();
//shared->unsubscribe_events();
INFO_STREAM <<"SubscribeThread::"<< __func__<<": exiting..."<<endl;
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
#define _SUBSCRIBE_THREAD_H
#include <tango.h>
#include <eventconsumer.h>
#include <tango/tango.h>
#include <stdint.h>
#include "event_table.h"
/**
* @author $Author: graziano $
* @version $Revision: 1.5 $
*/
// constants definitions here.
//-----------------------------------------------
// constants definitions here.
//-----------------------------------------------
namespace AlarmHandler_ns
{
......@@ -82,6 +38,7 @@ public:
int period;
SubscribeThread(AlarmHandler *dev);
void updateProperty();
void signal();
/**
* Execute the thread loop.
* This thread is awaken when a command has been received
......
/*
* alarm-thread.cpp
*
* $Author: claudio $
*
* $Revision: 1.7 $
*
* $Log: alarm-thread.cpp,v $
* Revision 1.7 2015-07-21 13:40:59 claudio
* minor cleanups
*
* Revision 1.6 2013-03-06 10:41:11 claudio
* commented out debug print statements
*
* Revision 1.5 2008-07-08 12:11:39 graziano
* omni_thread_fatal exception handling
*
* Revision 1.4 2008/07/07 09:13:12 graziano
* omni_thread_fatal exception handling
*
* Revision 1.3 2008/04/24 06:51:34 graziano
* small code cleanings
*
*
*
* copyleft: Sincrotrone Trieste S.C.p.A. di interesse nazionale
* Strada Statale 14 - km 163,5 in AREA Science Park
* 34012 Basovizza, Trieste ITALY
......@@ -36,7 +14,7 @@ static const char __FILE__rev[] = __FILE__ " $Revision: 1.7 $";
*/
alarm_thread::alarm_thread(AlarmHandler_ns::AlarmHandler *p) : p_Alarm(p)
{
//cout << __FILE__rev << endl;
//TANGO_LOG << __FILE__rev << endl;
}
/*
......@@ -142,21 +120,21 @@ void alarm_thread::run(void *)
ostringstream err;
err << "omni_thread_fatal exception running alarm thread, err=" << ex.error << ends;
//WARN_STREAM << "alarm_thread::run(): " << err.str() << endl;
printf("alarm_thread::run(): %s", err.str().c_str());
printf("alarm_thread::run(): %s\n", err.str().c_str());
}
catch(Tango::DevFailed& ex)
{
ostringstream err;
err << "exception running alarm thread: '" << ex.errors[0].desc << "'" << ends;
//WARN_STREAM << "alarm_thread::run(): " << err.str() << endl;
printf("alarm_thread::run(): %s", err.str().c_str());
Tango::Except::print_exception(ex);
printf("alarm_thread::run(): %s\n", err.str().c_str());
//Tango::Except::print_exception(ex);
}
catch(...)
{
//WARN_STREAM << "alarm_thread::run(): catched unknown exception!!" << endl;
printf("alarm_thread::run(): catched unknown exception!!");
printf("alarm_thread::run(): catched unknown exception!!\n");
}
}
//cout << "alarm_thread::run(): returning" << endl;
//TANGO_LOG << "alarm_thread::run(): returning" << endl;
} /* alarm_thread::run() */
/*
* 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
* Strada Statale 14 - km 163,5 in AREA Science Park
* 34012 Basovizza, Trieste ITALY
......@@ -20,7 +10,7 @@
#define ALARM_THREAD_H
#include <omnithread.h>
#include <tango.h>
#include <tango/tango.h>
#include <AlarmHandler.h>
#define ALARM_THREAD_EXIT "alarm_thread_exit"
......
/*
* alarm_grammar.h
*
* $Author: $
*
* $Revision: $
*
* $Log: alarm_grammar.h,v $
*
*
* copyleft: Sincrotrone Trieste S.C.p.A. di interesse nazionale
* Strada Statale 14 - km 163,5 in AREA Science Park
* 34012 Basovizza, Trieste ITALY
......@@ -75,15 +68,17 @@
#define SILENT_TIME_KEY "shlvd_time"
#define GROUP_KEY "group"
#define MESSAGE_KEY "message"
#define URL_KEY "url"
#define ON_COMMAND_KEY "on_command"
#define OFF_COMMAND_KEY "off_command"
#define RECEIVERS_KEY "receivers"
#define ENABLED_KEY "enabled"
#define SILENT_TIME_REMAINING_KEY "shlvd_end"
#define SHELVED_KEY "shelved"
#define ACKNOWLEDGED_KEY "ack"
#define ATTR_VALUES_KEY "values"
#define VALUE_KEY "state"
#define VALUE_KEY "state"
#define ON_COUNTER_KEY "on_counter"
#define OFF_COUNTER_KEY "off_counter"
#define COUNTER_KEY "counter"
......@@ -92,6 +87,8 @@
#define AUDIBLE_KEY "audible"
#define FREQ_COUNTER_KEY "freq_counter"
#define ALARM_TIME_KEY "time"
#define EVENT_KEY "event"
#define EVENT_TIME_KEY ALARM_TIME_KEY
#define KEY(S_VAL) S_VAL "="
#define SEP ";"
......@@ -222,8 +219,10 @@ struct alarm_parse : public grammar<alarm_parse>
no_node_d[separator] >> no_node_d[silent_time] |
no_node_d[separator] >> no_node_d[group] |
no_node_d[separator] >> no_node_d[msg] |
no_node_d[separator] >> no_node_d[url] |
no_node_d[separator] >> no_node_d[on_command] |
no_node_d[separator] >> no_node_d[off_command] |
no_node_d[separator] >> no_node_d[receivers] |
no_node_d[separator] >> no_node_d[enabled]
;
......@@ -246,7 +245,7 @@ struct alarm_parse : public grammar<alarm_parse>
= discard_node_d[str_p(KEY(LEVEL_KEY))] >>
//lexeme_d[(+alnum_p)] //match only possible levels?? (fault, log, ...)
//(+(alnum_p-'\t'))
(str_p("fault") | str_p("warning") | str_p("log"))
(str_p("highest") | str_p("high") | str_p("medium") | str_p("lowest") | str_p("low") | str_p("fault") | str_p("warning") | str_p("log"))//TODO
[
assign_a(self.m_alarm.lev) //save level in alarm_t
]
......@@ -267,15 +266,26 @@ struct alarm_parse : public grammar<alarm_parse>
)
;
//------------------------------MESSAGE--------------------------------------
escChar = (ch_p('\\') | ch_p(';')) >> ch_p(';'); //escaped semicolon: "\;" or ";;"
msg
= discard_node_d[str_p(KEY(MESSAGE_KEY))]
//>> ch_p('"')
>> (+(anychar_p - ';')) //one ore more char except ';'
>> (+(escChar | (anychar_p - ';'))) //one ore more char except ';'
[
assign_a(self.m_alarm.msg)
]
//>> '"'
;
//------------------------------URL--------------------------------------
url
= discard_node_d[str_p(KEY(URL_KEY))]
//>> ch_p('"')
>> (*(escChar | (anychar_p - ';'))) //zero ore more char except ';'
[
assign_a(self.m_alarm.url)
]
//>> '"'
;
//---------------------------ON DELAY----------------------------------------
on_delay
= discard_node_d[str_p(KEY(ONDELAY_KEY))] >>
......@@ -327,6 +337,16 @@ struct alarm_parse : public grammar<alarm_parse>
] //discard_node_d
| epsilon_p)
;
//------------------------------RECEIVERS------------------------------------
receivers
= discard_node_d[str_p(KEY(RECEIVERS_KEY))]
//>> ch_p('"')
>> (*(escChar | (anychar_p - ';'))) //zero ore more char except ';'
[
assign_a(self.m_alarm.receivers)
]
//>> '"'
;
//------------------------------ENABLED----------------------------------------
enabled
= discard_node_d[str_p(KEY(ENABLED_KEY))] >>
......@@ -346,7 +366,7 @@ struct alarm_parse : public grammar<alarm_parse>
rule_t expression, event, option;
rule<typename lexeme_scanner<ScannerT>::type> symbol; //needed to use lexeme_d in rule name
rule<typename lexeme_scanner<ScannerT>::type> symbol_attr_name; //needed to use lexeme_d in rule name
rule_t name, name_alm, val, token, oper, msg, group, level, on_delay, off_delay, silent_time, on_command, off_command, enabled, separator;
rule_t name, name_alm, val, token, oper, msg, url, group, level, on_delay, off_delay, silent_time, on_command, off_command, receivers, enabled, separator,escChar;
formula_grammar formula;
rule_t const&
......
This diff is collapsed.
This diff is collapsed.
/*
* cmd_thread.cpp
*
* $Author: claudio $
*
* $Revision: 1.3 $
*
* $Log: cmd_thread.cpp,v $
* Revision 1.3 2015-07-21 13:40:59 claudio
* minor cleanups
*
* Revision 1.2 2008-11-17 13:13:21 graziano
* command action can be: without arguments or with string argument
*
* Revision 1.1 2008/11/10 10:53:31 graziano
* thread for execution of commands
*
*
*
*
*
* copyleft: Sincrotrone Trieste S.C.p.A. di interesse nazionale
* Strada Statale 14 - km 163,5 in AREA Science Park
* 34012 Basovizza, Trieste ITALY
......@@ -32,8 +14,8 @@ static const char __FILE__rev[] = __FILE__ " $Revision: 1.3 $";
*/
cmd_thread::cmd_thread()
{
cout << __FILE__rev << endl;
cout << gettime().tv_sec << " cmd_thread::cmd_thread(): constructor... !" << endl;
TANGO_LOG << __FILE__rev << endl;
TANGO_LOG << gettime().tv_sec << " cmd_thread::cmd_thread(): constructor... !" << endl;
//mutex_dp = new omni_mutex::omni_mutex();
}
......@@ -42,7 +24,7 @@ cmd_thread::cmd_thread()
*/
cmd_thread::~cmd_thread()
{
cout << gettime().tv_sec << " cmd_thread::~cmd_thread(): delete device entering..." << endl;
TANGO_LOG << gettime().tv_sec << " cmd_thread::~cmd_thread(): delete device entering..." << endl;
//delete mutex_dp;
}
......@@ -62,13 +44,13 @@ void cmd_thread::run(void *)
switch(cmd.cmd_id)
{
case CMD_THREAD_EXIT:
cout << gettime().tv_sec << " cmd_thread::run(): received command THREAD_EXIT -> exiting..." << endl;
TANGO_LOG << gettime().tv_sec << " cmd_thread::run(): received command THREAD_EXIT -> exiting..." << endl;
return;
case CMD_COMMAND:
{
try {
cout << gettime().tv_sec << " cmd_thread::run(): COMMAND ... action=" << cmd.arg_s3 << endl;
TANGO_LOG << gettime().tv_sec << " cmd_thread::run(): COMMAND ... action=" << cmd.arg_s3 << endl;
dp = (Tango::DeviceProxy *)cmd.dp_add;
if(cmd.arg_b)
{
......@@ -82,7 +64,7 @@ void cmd_thread::run(void *)
}
else
call_id = dp->command_inout_asynch(cmd.arg_s2);
cout << gettime().tv_sec << " cmd_thread::run() executed action: " << cmd.arg_s3 << " !!! call_id=" << call_id << endl;
TANGO_LOG << gettime().tv_sec << " cmd_thread::run() executed action: " << cmd.arg_s3 << " !!! call_id=" << call_id << endl;
/*cmd_t arg;
arg.cmd_id = CMD_RESPONSE;
arg.call_id = call_id;
......@@ -101,11 +83,11 @@ void cmd_thread::run(void *)
if(err.find("is not yet arrived") == string::npos) //TODO: change this!!
{
out_stream << "Failed to execute action " << cmd.arg_s3 << ", err=" << e.errors[0].desc << ends;
cout << gettime().tv_sec << " cmd_thread::run() ERROR: " << out_stream.str() << endl;
TANGO_LOG << gettime().tv_sec << " cmd_thread::run() ERROR: " << out_stream.str() << endl;
}
else
{
cout << gettime().tv_sec << " cmd_thread::run() exception 'is not yet arrived': pushing request of response, call_id=" << call_id << endl;
TANGO_LOG << gettime().tv_sec << " cmd_thread::run() exception 'is not yet arrived': pushing request of response, call_id=" << call_id << endl;
cmd.cmd_id = CMD_RESPONSE; //if no exception till now push in list request of response
cmd.call_id = call_id; //if no exception till now push in list request of response
list.push_back(cmd); //if no exception till now push in list request of response
......@@ -117,12 +99,12 @@ void cmd_thread::run(void *)
case CMD_RESPONSE:
{
//cout << gettime().tv_sec << " cmd_thread::run(): RESPONSE WAKE UP... action=" << cmd.arg_s3 << " call_id=" << cmd.call_id << endl;
//TANGO_LOG << gettime().tv_sec << " cmd_thread::run(): RESPONSE WAKE UP... action=" << cmd.arg_s3 << " call_id=" << cmd.call_id << endl;
Tango::DeviceData resp;
dp = (Tango::DeviceProxy *)cmd.dp_add;
try {
resp = dp->command_inout_reply(cmd.call_id);
cout << gettime().tv_sec << " cmd_thread::run() RECEIVED response to action " << cmd.arg_s3 << endl;
TANGO_LOG << gettime().tv_sec << " cmd_thread::run() RECEIVED response to action " << cmd.arg_s3 << endl;
} catch(Tango::DevFailed &e)
{
TangoSys_MemStream out_stream;
......@@ -136,7 +118,7 @@ void cmd_thread::run(void *)
}
else
{
cout << gettime().tv_sec << " cmd_thread::run() " << out_stream.str() << endl;
TANGO_LOG << gettime().tv_sec << " cmd_thread::run() " << out_stream.str() << endl;
Tango::Except::print_exception(e);
}
}
......@@ -145,19 +127,19 @@ void cmd_thread::run(void *)
}
/* if(cmd.arg_s == CMD_THREAD_EXIT)
{
cout << gettime().tv_sec << " cmd_thread::run(): received command THREAD_EXIT -> exiting..." << endl;
TANGO_LOG << gettime().tv_sec << " cmd_thread::run(): received command THREAD_EXIT -> exiting..." << endl;
return;
}
else
{
cout << gettime().tv_sec << " cmd_thread::run(): WAKE UP... action=" << cmd.arg_s << endl;
TANGO_LOG << gettime().tv_sec << " cmd_thread::run(): WAKE UP... action=" << cmd.arg_s << endl;
Tango::DeviceData resp;
dp = (Tango::DeviceProxy *)cmd.dp_add;
try {
mutex_dp->lock();
resp = dp->command_inout_reply(cmd.cmd_id);
mutex_dp->unlock();
cout << gettime().tv_sec << " cmd_thread::run() received response to action " << cmd.arg_s << endl;
TANGO_LOG << gettime().tv_sec << " cmd_thread::run() received response to action " << cmd.arg_s << endl;
} catch(Tango::DevFailed &e)
{
TangoSys_MemStream out_stream;
......@@ -170,7 +152,7 @@ void cmd_thread::run(void *)
omni_thread::sleep(0,300000000); //0.2 s
}
else
cout << gettime().tv_sec << " cmd_thread::run() " << out_stream.str() << endl;
TANGO_LOG << gettime().tv_sec << " cmd_thread::run() " << out_stream.str() << endl;
}
}*/
......@@ -196,7 +178,7 @@ void cmd_thread::run(void *)
printf("cmd_thread::run(): catched unknown exception!!");
}
}
//cout << "alarm_thread::run(): returning" << endl;
//TANGO_LOG << "alarm_thread::run(): returning" << endl;
} /* cmd_thread::run() */
/*
......@@ -206,7 +188,7 @@ void cmd_list::push_back(cmd_t& cmd)
{
this->lock();
//cout << "cmd_list::push_back: cmd_id=" << cmd.cmd_id << " call_id=" << cmd.call_id << endl;
//TANGO_LOG << "cmd_list::push_back: cmd_id=" << cmd.cmd_id << " call_id=" << cmd.call_id << endl;
try{
l_cmd.push_back(cmd);
empty.signal();
......@@ -273,7 +255,7 @@ const cmd_t cmd_list::pop_front(void)
/*const*/ cmd_t cmd;
cmd = *(l_cmd.begin());
//cout << "cmd_list::pop_front: " << e.name << " value=" << e.value[0] << endl;
//TANGO_LOG << "cmd_list::pop_front: " << e.name << " value=" << e.value[0] << endl;
l_cmd.pop_front();
this->unlock();
......
/*
*cmd_thread.h
*
* $Author: graziano $
*
* $Revision: 1.2 $
*
* $Log: cmd_thread.h,v $
* Revision 1.2 2008-11-17 13:10:36 graziano
* command action can be: without arguments or with string argument
*
* Revision 1.1 2008/11/10 10:53:31 graziano
* thread for execution of commands
*
* Revision 1.2 2008/10/07 14:03:07 graziano
* added handling of multi axis groups and spindle groups
*
* Revision 1.1 2008/09/30 09:46:32 graziano
* first version
*
* Revision 1.3 2008/04/23 15:00:57 graziano
* small code cleanings
*
*
* cmd_thread.h
*
* copyleft: Sincrotrone Trieste S.C.p.A. di interesse nazionale
* Strada Statale 14 - km 163,5 in AREA Science Park
......@@ -41,7 +19,7 @@
#define CMD_THREAD_EXIT 3
#include <omnithread.h>
#include <tango.h>
#include <tango/tango.h>
#include "AlarmHandler.h"
struct cmd_t
......
This diff is collapsed.
/*
* event_table.h
*
* $Author: graziano $
*
* $Revision: 1.2 $
*
* $Log: event_table.h,v $
*
*
* copyleft: Sincrotrone Trieste S.C.p.A. di interesse nazionale
* Strada Statale 14 - km 163,5 in AREA Science Park
* 34012 Basovizza, Trieste ITALY
......@@ -19,8 +12,8 @@
#include <iostream>
#include <string>
#include <map>
#include <tango.h>
#include <atomic>
#include <tango/tango.h>
using namespace std;
......@@ -28,10 +21,25 @@ using namespace std;
#define INTERNAL_ERROR "internal_error"
#define TYPE_TANGO_ERR -2
#define TYPE_GENERIC_ERR -3
#define SUB_ERR -1
#define NOTHING 0
#define UPDATE_PROP 1
constexpr int NOTHING = 0;
constexpr int UPDATE_PROP = 1;
class alarm_list {
public:
alarm_list(void) {}
alarm_list(const alarm_list& la) {l_alarm = la.l_alarm;}
~alarm_list(void) {}
void push(string& a);
void pop(const string &a);
void clear(void);
list<string> show(void);
bool empty();
alarm_list& operator=(const alarm_list& other) {if (this != &other) {l_alarm = other.l_alarm;} return *this;}
protected:
list<string> l_alarm;
omni_mutex l;
};
class event;
class event_list;
......@@ -50,21 +58,20 @@ class event {
string attname;
value_t value; /* event value */
string value_string; //added for DevString attributes
int quality;
//Tango::DevErrorList errors;
int quality{Tango::ATTR_INVALID};
string ex_reason;
string ex_desc;
string ex_origin;
Tango::TimeVal ts; /* event timestamp */
int type, /* attribute data type */
read_size, /* attribute size of read part */
counter, /* molteplicita' */
err_counter; /* molteplicita' errore */
//map<string, string> m_alarm;
vector<string> m_alarm;
err_counter; /* molteplicita' errore */
long dim_x, dim_y;
alarm_list m_alarm;
bool valid; //TODO: old
bool first;//TODO: new
bool first_err;//TODO: new
//Tango::DeviceProxy *dp;
Tango::AttributeProxy *attr;
Tango::DevState evstate;
unsigned int event_id;
......@@ -88,8 +95,8 @@ class event {
event(string& s);
event() {}
~event() {}
void push_alarm(string& n);
void pop_alarm(string& n);
//void push_alarm(string& n);
//void pop_alarm(string& n);
// bool event::operator==(const event& e); //TODO: gcc 4 problem??
bool operator==(const event& e);
// bool event::operator==(const string& s); //TODO: gcc 4 problem??
......@@ -109,6 +116,9 @@ typedef struct basic_event_info_s {
string ex_desc;
string ex_origin;
int type;
int read_size;
long dim_x;
long dim_y;
Tango::TimeVal ts;
string msg;
} bei_t;
......@@ -139,15 +149,16 @@ class event_list : public omni_mutex {
class event_table : public Tango::TangoMonitor, public Tango::LogAdapter {
public:
event_table(Tango::DeviceImpl *s);//:Tango::LogAdapter(s) {mydev = s;}
~event_table(void) {}
~event_table(void) {stop_thread();}
//void push_back(event e);
void show(void);
void show(list<string> &evl);
void summary(list<string> &evs);
unsigned int size(void);
#if 0
void init_proxy(void) throw(vector<string> &);
void free_proxy(void);
void subscribe(EventCallBack& ecb) throw(vector<string> &);//throw(string&);
void unsubscribe(void) throw(string&);
void subscribe(EventCallBack& ecb);
void unsubscribe(void);
#endif
/**
* Add a new signal.
......@@ -170,6 +181,7 @@ class event_table : public Tango::TangoMonitor, public Tango::LogAdapter {
* build a list of signal to set HDB device property
*/
void put_signal_property();
void check_signal_property();
bool is_initialized();
bool get_if_stop();
void stop_thread();
......@@ -177,7 +189,7 @@ class event_table : public Tango::TangoMonitor, public Tango::LogAdapter {
ReadersWritersLock veclock;
bool stop_it;
bool initialized;
int action;
atomic_int action;
private:
Tango::DeviceImpl *mydev;
}; /* class event_table */
......@@ -193,7 +205,7 @@ class EventCallBack : public Tango::CallBack, public Tango::LogAdapter
~EventCallBack(void);
void push_event(Tango::EventData* ev);
//void init(event_list* e);
void extract_values(Tango::DeviceAttribute *attr_value, vector<double> &val, string &val_string, int &type);
void extract_values(Tango::DeviceAttribute *attr_value, vector<double> &val, string &val_string, int &type, int &read_size, long &dim_x, long &dim_y);
private:
//event_list* e_ptr;
Tango::DeviceImpl *mydev;
......
/*
* formula_grammar.h
*
* $Author: graziano $
*
* $Revision: 1.5 $
*
* $Log: formula_grammar.h,v $
*
*
* copyleft: Sincrotrone Trieste S.C.p.A. di interesse nazionale
* Strada Statale 14 - km 163,5 in AREA Science Park
* 34012 Basovizza, Trieste ITALY
......@@ -92,7 +85,7 @@ enum _AlarmStateEnum {
_ERROR
} ;
static vector<string> quality_labels;
static vector<string> quality_labels = {"ATTR_VALID","ATTR_INVALID","ATTR_ALARM","ATTR_CHANGING","ATTR_WARNING"};
struct formula_grammar : public grammar<formula_grammar>
{
......@@ -132,6 +125,8 @@ struct formula_grammar : public grammar<formula_grammar>
static const int val_qualityID = 23;
static const int val_alarm_enum_stID = 24;
static const int propertyID = 25;
static const int index_rangeID = 26;
static const int index_listID = 27;
symbols<unsigned int> tango_states;
......@@ -156,16 +151,11 @@ struct formula_grammar : public grammar<formula_grammar>
tango_states.add("DISABLE", (unsigned int)Tango::DISABLE);
tango_states.add("UNKNOWN", (unsigned int)Tango::UNKNOWN);
quality_labels.push_back("ATTR_VALID");
attr_quality.add(quality_labels.back().c_str(), (unsigned int)Tango::ATTR_VALID);
quality_labels.push_back("ATTR_INVALID");
attr_quality.add(quality_labels.back().c_str(), (unsigned int)Tango::ATTR_INVALID);
quality_labels.push_back("ATTR_ALARM");
attr_quality.add(quality_labels.back().c_str(), (unsigned int)Tango::ATTR_ALARM);
quality_labels.push_back("ATTR_CHANGING");
attr_quality.add(quality_labels.back().c_str(), (unsigned int)Tango::ATTR_CHANGING);
quality_labels.push_back("ATTR_WARNING");
attr_quality.add(quality_labels.back().c_str(), (unsigned int)Tango::ATTR_WARNING);
attr_quality.add("ATTR_VALID", (unsigned int)Tango::ATTR_VALID);
attr_quality.add("ATTR_INVALID", (unsigned int)Tango::ATTR_INVALID);
attr_quality.add("ATTR_ALARM", (unsigned int)Tango::ATTR_ALARM);
attr_quality.add("ATTR_CHANGING", (unsigned int)Tango::ATTR_CHANGING);
attr_quality.add("ATTR_WARNING", (unsigned int)Tango::ATTR_WARNING);
alarm_enum_states.add("NORM", (unsigned int)_NORM);
......@@ -203,7 +193,7 @@ struct formula_grammar : public grammar<formula_grammar>
= (alnum_p | '.' | '_' | '-' | '+') //any alpha numeric char plus '.', '_', '-'
;
symbol_attr
= (alnum_p | '_' ) //any alpha numeric char plus '_' for attribute names
= (alnum_p | '_' | '.') - str_p(".normal") - str_p(".alarm") - str_p(".quality") //any alpha numeric char plus '_', '.' for attribute names
;
//------------------------------ALARM NAME--------------------------------------
name
......@@ -219,9 +209,18 @@ struct formula_grammar : public grammar<formula_grammar>
]
]
// = repeat_p(3)[(+symbol) >> ch_p('/')] >> (+symbol)
;
;
index_range
=
( uint_p >> !(discard_node_d[ch_p('-')] >> uint_p)) // n or n-m
;
index_list
= (index_range >> *(discard_node_d[ch_p(',')] >> index_range)) // n-m,k,s-t,..
;
index
= inner_node_d[ch_p('[') >> uint_p >> ch_p(']')]
= discard_node_d[ch_p('[')] >>
(str_p("-1") | index_list) >>
discard_node_d[ch_p(']')]
;
property
= str_p(".quality")
......@@ -275,8 +274,8 @@ struct formula_grammar : public grammar<formula_grammar>
event_
= name
>> !( (index)
| (property)
>> ( *(index)//0 or more indexex
>> !(property) //followed by 0 or 1 property
)
;
......@@ -356,7 +355,9 @@ struct formula_grammar : public grammar<formula_grammar>
= ( root_node_d[str_p("abs")] >> (discard_node_d[ch_p('(')] >> cond_expr >> discard_node_d[ch_p(')')]) //TODO: ? not expr_atom ?
| root_node_d[str_p("cos")] >> (discard_node_d[ch_p('(')] >> cond_expr >> discard_node_d[ch_p(')')]) //TODO: ? not expr_atom ?
| root_node_d[str_p("sin")] >> (discard_node_d[ch_p('(')] >> cond_expr >> discard_node_d[ch_p(')')]) //TODO: ? not expr_atom ?
| root_node_d[str_p("quality")] >> (discard_node_d[ch_p('(')] >> cond_expr >> discard_node_d[ch_p(')')]) //TODO: ? not expr_atom ?
| root_node_d[str_p("quality")] >> (discard_node_d[ch_p('(')] >> cond_expr >> discard_node_d[ch_p(')')]) //TODO: ? not expr_atom ?
| root_node_d[str_p("AND")] >> (discard_node_d[ch_p('(')] >> cond_expr >> discard_node_d[ch_p(')')]) //TODO: ? not expr_atom ?
| root_node_d[str_p("OR")] >> (discard_node_d[ch_p('(')] >> cond_expr >> discard_node_d[ch_p(')')]) //TODO: ? not expr_atom ?
)
;
function_dual
......@@ -409,6 +410,8 @@ struct formula_grammar : public grammar<formula_grammar>
rule<ScannerT, parser_context<>, parser_tag<expr_atomID> > expr_atom;
rule<ScannerT, parser_context<>, parser_tag<funcID> > function;
rule<ScannerT, parser_context<>, parser_tag<nameID> > name;
rule<ScannerT, parser_context<>, parser_tag<index_rangeID> > index_range;
rule<ScannerT, parser_context<>, parser_tag<index_listID> > index_list;
rule<ScannerT, parser_context<>, parser_tag<indexID> > index;
rule<ScannerT, parser_context<>, parser_tag<val_stringID> > val_string;
rule<ScannerT, parser_context<>, parser_tag<func_dualID> > function_dual;
......
......@@ -31,7 +31,7 @@
// This file is generated by POGO
// (Program Obviously used to Generate tango Object)
//=============================================================================
#include <tango.h>
#include <tango/tango.h>
// Check if crash reporting is used.
#if defined(ENABLE_CRASH_REPORT)
......@@ -43,8 +43,15 @@
DECLARE_CRASH_HANDLER;
#ifndef TANGO_LOG
#define TANGO_LOG cout
#endif
int main(int argc,char *argv[])
{
using std::endl;
using std::bad_alloc;
INSTALL_CRASH_HANDLER
try
{
......@@ -59,20 +66,20 @@ int main(int argc,char *argv[])
// Run the endless loop
//----------------------------------------
cout << "Ready to accept request" << endl;
TANGO_LOG << "Ready to accept request" << endl;
tg->server_run();
}
catch (bad_alloc &)
{
cout << "Can't allocate memory to store device object !!!" << endl;
cout << "Exiting" << endl;
TANGO_LOG << "Can't allocate memory to store device object !!!" << endl;
TANGO_LOG << "Exiting" << endl;
}
catch (CORBA::Exception &e)
{
Tango::Except::print_exception(e);
cout << "Received a CORBA_Exception" << endl;
cout << "Exiting" << endl;
TANGO_LOG << "Received a CORBA_Exception" << endl;
TANGO_LOG << "Exiting" << endl;
}
Tango::Util::instance()->server_cleanup();
return(0);
......