PLCnext API Documentation  20.3.1.28622
AlarmAccess.hpp
1 //
3 // Copyright PHOENIX CONTACT Electronics GmbH
4 //
6 #pragma once
7 #include "Arp/System/Core/Arp.h"
8 #include "Arp/System/Nm/NotificationManager.hpp"
9 #include "Arp/System/Nm/StringPayload.hpp"
10 #include "Arp/System/NmPayload/Alarms/Internal/AlarmPayload.hpp"
11 #include <functional>
12 
13 namespace Arp { namespace System { namespace NmPayload { namespace Alarms
14 {
15 
16 constexpr int NotificationQueueOverflowError = 100;
17 constexpr int NotInitializedError = -1;
18 constexpr int InvalidArgumentError = -2;
19 constexpr int InvalidStateError = -2;
20 constexpr int InvalidAlarmIdError = -2;
21 constexpr int InvalidAlarmTypeError = -3;
22 
23 
25 
46 {
47 public: // typedefs
48 
49 public: // construction/destruction
50  AlarmAccess();
51  AlarmAccess(const AlarmAccess& arg) = delete;
52  AlarmAccess& operator=(const AlarmAccess& arg) = delete;
53  ~AlarmAccess(void);
54 
55 public:
61  int32 Init(String alarmClientId);
63  void Dispose();
72  int32 AddAlarm(AlarmState& alarmState);
77  int32 NewAlarmState(AlarmState& alarmState);
80  int32 Acknowledge(const String& alarmId);
83  int32 Confirm(const String& alarmId);
90  int32 SubscribeAddAlarm(std::function<void(const AlarmState& alarmState)> handler);
97  int32 SubscribeNewAlarmState(std::function<void(const AlarmState& alarmState)> handler);
108  int32 SubscribeAcknowledge(std::function<void(const String& alarmId, const String& comment, const String& language, const String& user)> handler);
119  int32 SubscribeConfirm(std::function<void(const String& alarmId, const String& comment, const String& language, const String& user)> handler);
120 
121 private: // methods
122  void AddAlarmNotificationReceived(const Notification& notification);
123  void NewStateNotificationReceived(const Notification& notification);
124  void AcknowledgeNotificationReceived(const Notification& notification);
125  void ConfirmNotificationReceived(const Notification& notification);
126 private: // fields
127  String alarmClientName;
128  bool initialized;
129  mutable Mutex alarmsMutex;
134  NotificationSubscriber addAlarmSubscriber;
135  NotificationSubscriber newStateSubscriber;
136  NotificationSubscriber acknowledgeSubscriber;
137  NotificationSubscriber confirmSubscriber;
138  std::function<void(const AlarmState& alarmState)> addAlarmHandler;
139  std::function<void(const AlarmState& alarmState)> newAlarmStateHandler;
140  std::function<void(const String& alarmId, const String& comment, const String& language, const String& user)> acknowledgeHandler;
141  std::function<void(const String& alarmId, const String& comment, const String& language, const String& user)> confirmHandler;
142 };
143 
145 // inline methods of class AlarmAccess
146 
147 }}}}
State with sub states of an alarm.
Definition: AlarmState.hpp:11
Contains meta data and paylod of a Notification
Definition: Notification.hpp:21
Mutual exclusion object to prevent data from concurrent modifications.
Definition: Mutex.hpp:25
Proxy object for a non-blocking NotificationRegistration
Definition: NonBlockingNotificationRegistration.hpp:32
Definition: AddAlarmPayload.hpp:11
Root namespace for the PLCnext API
std::int32_t int32
The Arp integer type of 4 byte size.
Definition: PrimitiveTypes.hpp:37
Access class for the alarm server component.
Definition: AlarmAccess.hpp:45
System components used by the System, Device, Plc or Io domains.
Proxy class for an subscriber of notifications
Definition: NotificationSubscriber.hpp:27