PLCnext API Documentation 25.0.2.69
PlcStateChangedPayload.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 Plc { namespace Commons { namespace Domain
16{
17enum class PlcState : uint32;
18}}}} // namespace Arp::Plc::Commons::Domain
19
20namespace Arp { namespace System { namespace NmPayload { namespace Plc
21{
22
23
29class ARP_CXX_SYMBOL_EXPORT PlcStateChangedPayload : public Arp::System::Nm::SpecializedPayload<PlcStateChangedPayload>
30{
31public:
34 using ArgumentsType = std::tuple<PlcState, PlcState>;
36
37 explicit PlcStateChangedPayload(const ArgumentsType& args);
38 PlcStateChangedPayload(PlcState lastState, PlcState newState);
39 PlcState GetLastState() const;
40 PlcState GetNewState() const;
41
42private:
43 using PayloadFieldType = std::underlying_type<PlcState>::type;
44
45 static String PlcStateToString(PlcState plcState);
46 static String PlcStateToString(PayloadFieldType plcState);
47 static String MaskedPlcStateToString(PayloadFieldType maskedPlcState);
48 static String GetFlagsDescriptions(PayloadFieldType plcState);
49 static String AppendFlagDescription(const String& description, const String& flagDescription);
50 static bool IsFlagSet(PayloadFieldType plcState, PayloadFieldType flag);
51
52private:
53 // Do not change the order of the field initialization!
54 size_t indexLastState = this->AddField<PayloadFieldType>();
55 size_t indexNewState = this->AddField<PayloadFieldType>();
56};
57
58
59}}}} // namespace Arp::System::NmPayload::Plc
This class represents the Arp String. The implementation is based on std::string.
Definition: String.hpp:39
Payload class for state changes of the PLC
Definition: PlcStateChangedPayload.hpp:30
std::tuple< PlcState, PlcState > ArgumentsType
ArgumentsType to be used with NonBlockingNotificationRegistration3
Definition: PlcStateChangedPayload.hpp:34
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
PlcState
Definition: PlcState.hpp:14
Root namespace for the PLCnext API