8 #include "Arp/System/Core/event.hxx"
9 #include "Arp/System/Core/AppDomainSingleton.hxx"
10 #include "Arp/System/Commons/Logging.h"
11 #include "Arp/System/Acf/IComponent.hpp"
12 #include "Arp/System/Rsc/Services/IRscServiceFactory.hpp"
13 #include "Arp/Plc/Commons/Domain/PlcStartKind.hpp"
16 namespace Arp {
namespace Plc {
namespace Domain
18 class PlcDomainComponent;
19 class PlcDomainProxyComponent;
22 namespace Arp {
namespace Plc {
namespace Commons {
namespace Services {
namespace Internal
24 class IPlcDomainService;
27 namespace Arp {
namespace System {
namespace Watchdog {
namespace Services {
namespace Internal
29 class IWatchdogInfoService;
32 namespace Arp {
namespace Hardware {
namespace DeviceHmi {
namespace Services {
namespace Internal
34 class ISwitchesService;
37 namespace Arp {
namespace Plc {
namespace Commons {
namespace Domain
43 using namespace Arp::Plc::Commons::Services::Internal;
44 using namespace Arp::System::Watchdog::Services::Internal;
45 using namespace Arp::Hardware::DeviceHmi::Services::Internal;
49 friend class Arp::Plc::Domain::PlcDomainComponent;
50 friend class Arp::Plc::Domain::PlcDomainProxyComponent;
53 using IPlcDomainServicePtr = std::shared_ptr<IPlcDomainService>;
54 using IWatchdogInfoServicePtr = std::shared_ptr<IWatchdogInfoService>;
55 using ISwitchesServicePtr = std::shared_ptr<ISwitchesService>;
76 ARP_DEPRECATED(
"Not required anymore. Moved to PLC manager")
77 bool IsPlcSuspendedBySwitch(
void);
78 ARP_DEPRECATED("Obsolete")
79 bool IsPlcSuspendedBySystemWatchdog(
bool& warmStartNotPossible,
bool& autoRestart);
80 ARP_DEPRECATED("Not required anymore. Moved to PLC manager")
81 bool IsPlcSuspendedBySystemWatchdog(PlcStartKind& startKind);
84 void RegisterComponent(
IComponent& component,
bool isSystemComponent = false);
85 void RegisterProxyComponent(
IComponent& component);
86 void UnregisterComponent(
IComponent& component);
89 void PublishComponentService(
IComponent& component, const
char* serviceName, IRscServiceFactory* pServiceFactory);
92 void SubscribeServices(
bool isPlcProcess = false);
99 IPlcDomainServicePtr plcDomainSerivcePtr;
100 IWatchdogInfoServicePtr watchdogInfoServicePtr;
101 ISwitchesServicePtr switchesServicePtr;
104 boolean hasStartStopSwitch = false;
This class implements the singleton pattern for singletons with process wide scope.
Definition: AppDomainSingleton.hxx:25
Definition: PlcDomainProxy.hpp:48
PlcDomainProxy(void)=default
Constructs an PlcDomainProxy instance.
~PlcDomainProxy(void)=default
Destructs this instance and frees all resources.
This is the most important basic interface of the Arp platform. Any component shall implement this in...
Definition: IComponent.hpp:81
Definition: Loggable.hxx:19
Use this class to register and invoke several delegates (function pointer in OOP design).
Definition: event.hxx:193
Namespace for the PLC domain
Definition: PlcDomainProxy.hpp:17
This is the namespace of the Application Component Framework.
Definition: ComponentBase.hpp:13
@ System
System components used by the System, Device, Plc or Io domains.
Namespace for classes and interfaces for the Remote Service Call implementation
Definition: IRscReadEnumerator.hxx:10
Root namespace for the PLCnext API