PLCnext API Documentation  22.9.0.33
AlarmPayload.hpp
1 //
3 // Copyright PHOENIX CONTACT Electronics GmbH
4 //
6 
7 #pragma once
8 
9 
10 #include "Arp/System/Nm/SpecializedPayload.hpp"
11 #include <tuple>
12 
13 
14 namespace Arp { namespace System { namespace NmPayload { namespace Io { namespace ProfinetStack
15 {
16 
17 
22 {
23 public:
25  using ArgumentsType = std::tuple<const char*, const char*, uint16, uint16, uint32, uint32, uint16, bool, bool, bool, bool, const char*>;
26 
27  using SpecializedPayload::SpecializedPayload;
28 
30  explicit AlarmPayload(const ArgumentsType& args);
31 
47  AlarmPayload(const String& alarmType, const String& deviceName, uint16 slotNumber,
48  uint16 subslotNumber, uint32 moduleNumber, uint32 subModuleNumber, uint16 sequenceNumber,
49  bool isChannelDiagnosis, bool isManufacturerSpecificDiagnosis,
50  bool isSubmoduleDiagnosisState, bool isArDiagnosisState, const String& alarmText);
51 
54 
57 
60 
63 
66 
69 
72 
74  bool GetIsChannelDiagnosis() const;
75 
79 
82 
85  bool GetIsArDiagnosisState() const;
86 
89 
90 private:
91  // Do not change the order of the field initialization!
92  size_t indexAlarmType = this->AddField<String>();
93  size_t indexDeviceName = this->AddField<String>();
94  size_t indexSlotNumber = this->AddField<uint16>();
95  size_t indexSubslotNumber = this->AddField<uint16>();
96  size_t indexModuleNumber = this->AddField<uint32>();
97  size_t indexSubModuleNumber = this->AddField<uint32>();
98  size_t indexSequenceNumber = this->AddField<uint16>();
99  size_t indexIsChannelDiagnosis = this->AddField<bool>();
100  size_t indexIsManufacturerSpecificDiagnosis = this->AddField<bool>();
101  size_t indexIsSubmoduleDiagnosisState = this->AddField<bool>();
102  size_t indexIsArDiagnosisState = this->AddField<bool>();
103  size_t indexAlarmText = this->AddField<String>();
104 };
105 
106 }}}}} // namespace Arp::System::NmPayload::Io::ProfinetStack
Payload class for a Profinet alarm
Definition: AlarmPayload.hpp:22
uint32 GetSubModuleNumber() const
Returns the sub module number
String GetAlarmType() const
Returns the alarm type
AlarmPayload(const ArgumentsType &args)
Creates a payload object
uint16 GetSlotNumber() const
Returns the slot number
String GetAlarmText() const
Returns the alarm text if available
bool GetIsChannelDiagnosis() const
Returns true if alarm is a channel diagnosis
String GetDeviceName() const
Returns the Profinet device name
uint16 GetSubslotNumber() const
Returns the sub slot number
AlarmPayload(const String &alarmType, const String &deviceName, uint16 slotNumber, uint16 subslotNumber, uint32 moduleNumber, uint32 subModuleNumber, uint16 sequenceNumber, bool isChannelDiagnosis, bool isManufacturerSpecificDiagnosis, bool isSubmoduleDiagnosisState, bool isArDiagnosisState, const String &alarmText)
Creates a payload object
uint16 GetSequenceNumber() const
Returns the sequence number
std::tuple< const char *, const char *, uint16, uint16, uint32, uint32, uint16, bool, bool, bool, bool, const char * > ArgumentsType
ArgumentsType to be used with NonBlockingNotificationRegistration3
Definition: AlarmPayload.hpp:25
bool GetIsArDiagnosisState() const
Return s true if alarm is diagnostic information of the application reference
uint32 GetModuleNumber() const
Returns the module number
bool GetIsManufacturerSpecificDiagnosis() const
Return s true if alarm is manufacturer specific diagnosis
bool GetIsSubmoduleDiagnosisState() const
Return s true if alarm is submodule diagnosis
Base class for custom Payload classes
Definition: SpecializedPayload.hpp:43
std::uint32_t uint32
The Arp unsigned integer type of 4 byte size.
Definition: PrimitiveTypes.hpp:35
std::uint16_t uint16
The Arp unsigned integer type of 2 byte size.
Definition: PrimitiveTypes.hpp:31
@ System
System components used by the System, Device, Plc or Io domains.
Root namespace for the PLCnext API