PLCnext API Documentation 25.0.2.69
AlarmAccess.hpp
1
2//
3// Copyright Phoenix Contact GmbH & Co. KG
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:
57 int32 Init(String alarmClientId);
58 void Dispose();
59 int32 AddAlarm(AlarmState& alarmState);
60 int32 NewAlarmState(AlarmState& alarmState);
61 int32 Acknowledge(const String& alarmId);
62 int32 AcknowledgeWithComment(const String& alarmId, const String& comment = "", const String& language = "", const String& user = "");
63 int32 Confirm(const String& alarmId);
64 int32 ConfirmWithComment(const String& alarmId, const String& comment = "", const String& language = "", const String& user = "");
65 int32 AddComment(const String& alarmId, const String& comment, const String& language = "", const String& user = "");
66 int32 SubscribeAddAlarm(std::function<void(const AlarmState& alarmState)> handler);
67 int32 SubscribeNewAlarmState(std::function<void(const AlarmState& alarmState)> handler);
68 int32 SubscribeAcknowledge(std::function<void(const String& alarmId, const String& comment, const String& language, const String& user)> handler);
69 int32 SubscribeConfirm(std::function<void(const String& alarmId, const String& comment, const String& language, const String& user)> handler);
70 int32 SubscribeAddComment(std::function<void(const String& alarmId, const String& comment, const String& language, const String& user)> handler);
71
72private: // methods
73 void AddAlarmNotificationReceived(const Notification& notification);
74 void NewStateNotificationReceived(const Notification& notification);
75 void AcknowledgeNotificationReceived(const Notification& notification);
76 void ConfirmNotificationReceived(const Notification& notification);
77 void AddCommentNotificationReceived(const Notification& notification);
78private: // fields
79 String alarmClientName;
80 bool initialized;
81 mutable Mutex alarmsMutex;
89 NotificationSubscriber addAlarmSubscriber;
90 NotificationSubscriber newStateSubscriber;
91 //NotificationSubscriber acknowledgeSubscriber1;
92 NotificationSubscriber acknowledgeSubscriber2;
93 //NotificationSubscriber confirmSubscriber1;
94 NotificationSubscriber confirmSubscriber2;
95 NotificationSubscriber addCommentSubscriber;
96 std::function<void(const AlarmState& alarmState)> addAlarmHandler;
97 std::function<void(const AlarmState& alarmState)> newAlarmStateHandler;
98 std::function<void(const String& alarmId, const String& comment, const String& language, const String& user)> acknowledgeHandler;
99 std::function<void(const String& alarmId, const String& comment, const String& language, const String& user)> confirmHandler;
100 std::function<void(const String& alarmId, const String& comment, const String& language, const String& user)> addCommentHandler;
101};
102
103}}}}
This class represents the Arp String. The implementation is based on std::string.
Definition: String.hpp:39
Mutual exclusion object to prevent data from concurrent modifications.
Definition: Mutex.hpp:27
Access class for the alarm server component.
Definition: AlarmAccess.hpp:46
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:30
Contains meta data and paylod of a Notification
Definition: Notification.hpp:20
std::int32_t int32
The Arp integer type of 4 byte size.
Definition: PrimitiveTypes.hpp:35
Root namespace for the PLCnext API