8#include "Arp/System/Core/event.hxx"
9#include "Arp/System/Commons/Logging.h"
10#include "Arp/System/Acf/IComponent.hpp"
11#include "Arp/Plc/Domain/Commons/PlcStartKind.hpp"
14namespace Arp {
namespace Plc {
namespace Domain
16class PlcDomainComponent;
17class PlcDomainProxyComponent;
21namespace Arp::Base::Rsc::Commons::Services
26namespace Arp {
namespace Plc {
namespace Commons {
namespace Services {
namespace Internal
28class IPlcDomainService;
31namespace Arp {
namespace System {
namespace Monitoring {
namespace Services {
namespace Internal
33class IWatchdogInfoService;
36namespace Arp {
namespace Hardware {
namespace DeviceHmi {
namespace Services {
namespace Internal
38class ISwitchesService;
41namespace Arp {
namespace Plc {
namespace Commons {
namespace Domain
46using namespace Arp::Base::Rsc::Commons::Services;
47using namespace Arp::Plc::Commons::Services::Internal;
48using namespace Arp::System::Monitoring::Services::Internal;
49using namespace Arp::Hardware::DeviceHmi::Services::Internal;
53 friend class Arp::Plc::Domain::PlcDomainComponent;
54 friend class Arp::Plc::Domain::PlcDomainProxyComponent;
58 using InstancePtr = std::unique_ptr<Instance>;
62 using IPlcDomainServicePtr = std::shared_ptr<IPlcDomainService>;
63 using IWatchdogInfoServicePtr = std::shared_ptr<IWatchdogInfoService>;
64 using ISwitchesServicePtr = std::shared_ptr<ISwitchesService>;
71 static Instance& CreateInstance(
void);
72 static bool IsCreated(
void);
73 static void DisposeInstance(
void);
103 void RegisterComponent(
IComponent& component,
bool isSystemComponent = false);
104 void RegisterProxyComponent(
IComponent& component);
105 void UnregisterComponent(
IComponent& component);
111 void SubscribeServices(
bool isPlcProcess = false);
114 IPlcDomainServicePtr plcDomainSerivcePtr;
115 IWatchdogInfoServicePtr watchdogInfoServicePtr;
116 ISwitchesServicePtr switchesServicePtr;
119 static InstancePtr instancePtr;
120 boolean hasStartStopSwitch = false;
This is the most important basic interface of the Arp platform. Any component shall implement this in...
Definition: IComponent.hpp:79
Use this class to register and invoke several delegates (function pointer in OOP design).
Definition: event.hxx:32
Interface for service factory classes to create instances of the service implementation,...
Definition: IRscServiceFactory.hpp:26
Definition: PlcDomainProxy.hpp:52
PlcDomainProxy(void)=default
Constructs an PlcDomainProxy instance.
bool IsPlcSuspendedBySystemWatchdog(bool &warmStartNotPossible, bool &autoRestart)
Deprecated!
Definition: PlcDomainProxy.cpp:130
bool IsPlcSuspendedBySwitch(void)
Deprecated!
Definition: PlcDomainProxy.cpp:101
Derive from this class to inherit logging functionality.
Definition: Loggable.hxx:28
PlcStartKind
Determines which kind of start operation is initiated using PlcManager::StartPlc(PlcStartKind startKi...
Definition: PlcStartKind.hpp:18
Namespace for the PLC domain
Definition: PlcDomainProxy.hpp:15
This is the namespace of the Application Component Framework.
Definition: ComponentBase.hpp:72
Root namespace for the PLCnext API
class ARP_DEPRECATED("Use Arp::Enum<T> instead.") EnumStrings
Deprecated! The class implements an adapter for enums to define the string literals of the enum entri...
Definition: EnumStrings.hxx:38