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"
16namespace Arp {
namespace Plc {
namespace Domain
18class PlcDomainComponent;
19class PlcDomainProxyComponent;
22namespace Arp {
namespace Plc {
namespace Commons {
namespace Services {
namespace Internal
24class IPlcDomainService;
27namespace Arp {
namespace System {
namespace Watchdog {
namespace Services {
namespace Internal
29class IWatchdogInfoService;
32namespace Arp {
namespace Hardware {
namespace DeviceHmi {
namespace Services {
namespace Internal
34class ISwitchesService;
37namespace Arp {
namespace Plc {
namespace Commons {
namespace Domain
43using namespace Arp::Plc::Commons::Services::Internal;
44using namespace Arp::System::Watchdog::Services::Internal;
45using 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>;
90 void RegisterComponent(
IComponent& component,
bool isSystemComponent = false);
91 void RegisterProxyComponent(
IComponent& component);
92 void UnregisterComponent(
IComponent& component);
95 void PublishComponentService(
IComponent& component, const
char* serviceName, IRscServiceFactory* pServiceFactory);
98 void SubscribeServices(
bool isPlcProcess = false);
105 IPlcDomainServicePtr plcDomainSerivcePtr;
106 IWatchdogInfoServicePtr watchdogInfoServicePtr;
107 ISwitchesServicePtr switchesServicePtr;
110 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.
bool IsPlcSuspendedBySystemWatchdog(bool &warmStartNotPossible, bool &autoRestart)
Deprecated!
bool IsPlcSuspendedBySwitch(void)
Deprecated!
This is the most important basic interface of the Arp platform. Any component shall implement this in...
Definition: IComponent.hpp:81
Definition: Loggable.hxx:20
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
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