PLCnext API Documentation 25.0.2.69
AlarmPayload.hpp
1
2//
3// Copyright Phoenix Contact GmbH & Co. KG
4//
6
7#pragma once
8
9
10#include "Arp/System/Core/Arp.h"
11#include "Arp/System/Nm/SpecializedPayload.hpp"
12#include <tuple>
13
14
15namespace Arp { namespace System { namespace NmPayload { namespace Io { namespace ProfinetStack
16{
17
18
22class ARP_CXX_SYMBOL_EXPORT AlarmPayload : public Arp::System::Nm::SpecializedPayload<AlarmPayload>
23{
24public:
26 using ArgumentsType = std::tuple<const char*, const char*, uint16, uint16, uint32, uint32, uint16, bool, bool, bool, bool, const char*>;
28 explicit AlarmPayload(const ArgumentsType& args);
29 AlarmPayload(const String& alarmType, const String& deviceName, uint16 slotNumber,
30 uint16 subslotNumber, uint32 moduleNumber, uint32 subModuleNumber, uint16 sequenceNumber,
31 bool isChannelDiagnosis, bool isManufacturerSpecificDiagnosis,
32 bool isSubmoduleDiagnosisState, bool isArDiagnosisState, const String& alarmText);
33 String GetAlarmType() const;
34 String GetDeviceName() const;
35 uint16 GetSlotNumber() const;
36 uint16 GetSubslotNumber() const;
37 uint32 GetModuleNumber() const;
38 uint32 GetSubModuleNumber() const;
39 uint16 GetSequenceNumber() const;
40 bool GetIsChannelDiagnosis() const;
41 bool GetIsManufacturerSpecificDiagnosis() const;
42 bool GetIsSubmoduleDiagnosisState() const;
43 bool GetIsArDiagnosisState() const;
44 String GetAlarmText() const;
45
46private:
47 // Do not change the order of the field initialization!
48 size_t indexAlarmType = this->AddField<String>();
49 size_t indexDeviceName = this->AddField<String>();
50 size_t indexSlotNumber = this->AddField<uint16>();
51 size_t indexSubslotNumber = this->AddField<uint16>();
52 size_t indexModuleNumber = this->AddField<uint32>();
53 size_t indexSubModuleNumber = this->AddField<uint32>();
54 size_t indexSequenceNumber = this->AddField<uint16>();
55 size_t indexIsChannelDiagnosis = this->AddField<bool>();
56 size_t indexIsManufacturerSpecificDiagnosis = this->AddField<bool>();
57 size_t indexIsSubmoduleDiagnosisState = this->AddField<bool>();
58 size_t indexIsArDiagnosisState = this->AddField<bool>();
59 size_t indexAlarmText = this->AddField<String>();
60};
61
62}}}}} // namespace Arp::System::NmPayload::Io::ProfinetStack
This class represents the Arp String. The implementation is based on std::string.
Definition: String.hpp:39
Payload class for a Profinet alarm
Definition: AlarmPayload.hpp:23
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:26
Base class for custom Payload classes
Definition: SpecializedPayload.hpp:44
SpecializedPayload(const Notification &notification)
Creates a view on a Notification object
Definition: SpecializedPayload.hpp:211
std::uint32_t uint32
The Arp unsigned integer type of 4 byte size.
Definition: PrimitiveTypes.hpp:33
std::uint16_t uint16
The Arp unsigned integer type of 2 byte size.
Definition: PrimitiveTypes.hpp:29
Root namespace for the PLCnext API