PLCnext API Documentation 24.0.0.71
PlcStateChangedPayload.hpp
1
2//
3// Copyright PHOENIX CONTACT Electronics GmbH
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:
33
35 using ArgumentsType = std::tuple<PlcState, PlcState>;
36
37 using SpecializedPayload::SpecializedPayload;
38
41
46
49
52
53private:
54 using PayloadFieldType = std::underlying_type<PlcState>::type;
55
56 static String PlcStateToString(PlcState plcState);
57 static String PlcStateToString(PayloadFieldType plcState);
58 static String MaskedPlcStateToString(PayloadFieldType maskedPlcState);
59 static String GetFlagsDescriptions(PayloadFieldType plcState);
60 static String AppendFlagDescription(const String& description, const String& flagDescription);
61 static bool IsFlagSet(PayloadFieldType plcState, PayloadFieldType flag);
62
63private:
64 // Do not change the order of the field initialization!
65 size_t indexLastState = this->AddField<PayloadFieldType>();
66 size_t indexNewState = this->AddField<PayloadFieldType>();
67};
68
69
70}}}} // namespace Arp::System::NmPayload::Plc
Payload class for state changes of the PLC
Definition: PlcStateChangedPayload.hpp:30
PlcStateChangedPayload(const ArgumentsType &args)
Creates a payload lobject
PlcStateChangedPayload(PlcState lastState, PlcState newState)
Creates a payload lobject
PlcState GetLastState() const
Retruns the last state of the PLC
PlcState GetNewState() const
Returns the new state of the PLC
std::tuple< PlcState, PlcState > ArgumentsType
ArgumentsType to be used with NonBlockingNotificationRegistration3
Definition: PlcStateChangedPayload.hpp:35
Base class for custom Payload classes
Definition: SpecializedPayload.hpp:44
std::uint32_t uint32
The Arp unsigned integer type of 4 byte size.
Definition: PrimitiveTypes.hpp:36
PlcState
Definition: PlcState.hpp:14
Root namespace for the PLCnext API