PLCnext API Documentation 24.0.0.71
AlarmAccess.hpp
1
2//
3// Copyright PHOENIX CONTACT Electronics GmbH
4//
6#pragma once
8#include "Arp/System/Nm/NotificationManager.hpp"
9#include "Arp/System/Nm/StringPayload.hpp"
10#include "Arp/System/NmPayload/Alarms/Internal/AckConfPayload.hpp"
11#include "Arp/System/NmPayload/Alarms/Internal/AlarmPayload.hpp"
12#include <functional>
13
14namespace Arp { namespace System { namespace NmPayload { namespace Alarms
15{
16
17constexpr int NotificationQueueOverflowError = 100;
18constexpr int NotInitializedError = -1;
19constexpr int InvalidArgumentError = -2;
20constexpr int InvalidStateError = -2;
21constexpr int InvalidAlarmIdError = -2;
22constexpr int InvalidAlarmTypeError = -3;
23
24using namespace Arp::System::NmPayload::Alarms::Internal;
25
45class ARP_CXX_SYMBOL_EXPORT AlarmAccess
46{
47public: // usings
49
50public: // construction/destruction
52 AlarmAccess(const AlarmAccess& arg) = delete;
53 AlarmAccess& operator=(const AlarmAccess& arg) = delete;
54 ~AlarmAccess(void);
55
56public:
62 int32 Init(String alarmClientId);
64 void Dispose();
84 int32 Acknowledge(const String& alarmId);
91 int32 AcknowledgeWithComment(const String& alarmId, const String& comment = "", const String& language = "", const String& user = "");
95 int32 Confirm(const String& alarmId);
102 int32 ConfirmWithComment(const String& alarmId, const String& comment = "", const String& language = "", const String& user = "");
109 int32 AddComment(const String& alarmId, const String& comment, const String& language = "", const String& user = "");
116 int32 SubscribeAddAlarm(std::function<void(const AlarmState& alarmState)> handler);
123 int32 SubscribeNewAlarmState(std::function<void(const AlarmState& alarmState)> handler);
132 int32 SubscribeAcknowledge(std::function<void(const String& alarmId, const String& comment, const String& language, const String& user)> handler);
141 int32 SubscribeConfirm(std::function<void(const String& alarmId, const String& comment, const String& language, const String& user)> handler);
150 int32 SubscribeAddComment(std::function<void(const String& alarmId, const String& comment, const String& language, const String& user)> handler);
151
152private: // methods
153 void AddAlarmNotificationReceived(const Notification& notification);
154 void NewStateNotificationReceived(const Notification& notification);
155 void AcknowledgeNotificationReceived(const Notification& notification);
156 void ConfirmNotificationReceived(const Notification& notification);
157 void AddCommentNotificationReceived(const Notification& notification);
158private: // fields
159 String alarmClientName;
160 bool initialized;
161 mutable Mutex alarmsMutex;
169 NotificationSubscriber addAlarmSubscriber;
170 NotificationSubscriber newStateSubscriber;
171 //NotificationSubscriber acknowledgeSubscriber1;
172 NotificationSubscriber acknowledgeSubscriber2;
173 //NotificationSubscriber confirmSubscriber1;
174 NotificationSubscriber confirmSubscriber2;
175 NotificationSubscriber addCommentSubscriber;
176 std::function<void(const AlarmState& alarmState)> addAlarmHandler;
177 std::function<void(const AlarmState& alarmState)> newAlarmStateHandler;
178 std::function<void(const String& alarmId, const String& comment, const String& language, const String& user)> acknowledgeHandler;
179 std::function<void(const String& alarmId, const String& comment, const String& language, const String& user)> confirmHandler;
180 std::function<void(const String& alarmId, const String& comment, const String& language, const String& user)> addCommentHandler;
181};
182
184// inline methods of class AlarmAccess
185
186}}}}
Mutual exclusion object to prevent data from concurrent modifications.
Definition: Mutex.hpp:26
Access class for the alarm server component.
Definition: AlarmAccess.hpp:46
int32 Confirm(const String &alarmId)
int32 SubscribeAddComment(std::function< void(const String &alarmId, const String &comment, const String &language, const String &user)> handler)
An alarm source that supports acknowledgeble or confirmable alarms should subscribe to add comment re...
int32 SubscribeNewAlarmState(std::function< void(const AlarmState &alarmState)> handler)
A client can subscribe to NewAlarmState calls to track the state of alarms.
int32 Init(String alarmClientId)
Initialize the class.
int32 SubscribeAddAlarm(std::function< void(const AlarmState &alarmState)> handler)
A client can subscribe to AddAlarm calls (used e.g. by the OPC-UA Server to show the alarms in the ad...
int32 NewAlarmState(AlarmState &alarmState)
Inform the AlarmServer about a new alarm state (comming alarms, going alarms / changes to sub states)...
int32 Acknowledge(const String &alarmId)
A client can ask for acknowledgement of an alarm instance (if supported by an alarm).
int32 SubscribeConfirm(std::function< void(const String &alarmId, const String &comment, const String &language, const String &user)> handler)
An alarm source that supports confirmable alarms should subscribe to confirm request by a client.
int32 ConfirmWithComment(const String &alarmId, const String &comment="", const String &language="", const String &user="")
int32 AcknowledgeWithComment(const String &alarmId, const String &comment="", const String &language="", const String &user="")
A client can ask for acknowledgement of an alarm instance (if supported by an alarm).
int32 AddComment(const String &alarmId, const String &comment, const String &language="", const String &user="")
int32 SubscribeAcknowledge(std::function< void(const String &alarmId, const String &comment, const String &language, const String &user)> handler)
An alarm source that supports acknowledgeble alarms should subscribe to acknowledge request by a clie...
int32 AddAlarm(AlarmState &alarmState)
Announce a new alarm to the server (used for browsing in OPC UA).
void Dispose()
Diposes all resources of this instance.
State with sub states of an alarm.
Definition: AlarmState.hpp:12
Proxy object for a non-blocking NotificationRegistration
Definition: NonBlockingNotificationRegistration.hpp:35
Proxy class for an subscriber of notifications
Definition: NotificationSubscriber.hpp:31
Contains meta data and paylod of a Notification
Definition: Notification.hpp:22
std::int32_t int32
The Arp integer type of 4 byte size.
Definition: PrimitiveTypes.hpp:38
@ System
System components used by the System, Device, Plc or Io domains.
Root namespace for the PLCnext API