From 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d Mon Sep 17 00:00:00 2001 From: Jef Date: Tue, 24 Sep 2024 14:54:57 +0200 Subject: Initial community commit --- Src/devices/component.cpp | 84 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 Src/devices/component.cpp (limited to 'Src/devices/component.cpp') diff --git a/Src/devices/component.cpp b/Src/devices/component.cpp new file mode 100644 index 00000000..3f4bd8fe --- /dev/null +++ b/Src/devices/component.cpp @@ -0,0 +1,84 @@ +#include "main.h" +#include "./component.h" +#include "./deviceManagerFactory.h" + +static DeviceManagerFactory deviceManagerFactory; + +DevicesComponent::DevicesComponent() +{ + InitializeCriticalSection(&lock); +} + +DevicesComponent::~DevicesComponent() +{ + EnterCriticalSection(&lock); + + ReleaseServices(); + + LeaveCriticalSection(&lock); + + DeleteCriticalSection(&lock); +} + +size_t DevicesComponent::AddRef() +{ + return 1; +} + +size_t DevicesComponent::Release() +{ + return 1; +} + +int DevicesComponent::QueryInterface(GUID interface_guid, void **object) +{ + if (NULL == object) + return E_POINTER; + + *object = NULL; + return E_NOINTERFACE; +} + +void DevicesComponent::RegisterServices(api_service *service) +{ + EnterCriticalSection(&lock); + + deviceManagerFactory.Register(service); + + LeaveCriticalSection(&lock); + + aTRACE_LINE("Devices Service Registered"); +} + +int DevicesComponent::RegisterServicesSafeModeOk() +{ + return 1; +} + +void DevicesComponent::DeregisterServices(api_service *service) +{ + EnterCriticalSection(&lock); + + deviceManagerFactory.Unregister(service); + + ReleaseServices(); + + LeaveCriticalSection(&lock); + + aTRACE_LINE("Devices Service Unregistered"); +} + +void DevicesComponent::ReleaseServices() +{ +} + +#define CBCLASS DevicesComponent +START_DISPATCH; +CB(ADDREF, AddRef) +CB(RELEASE, Release) +CB(QUERYINTERFACE, QueryInterface) +VCB(API_WA5COMPONENT_REGISTERSERVICES, RegisterServices) +CB(15, RegisterServicesSafeModeOk) +VCB(API_WA5COMPONENT_DEREEGISTERSERVICES, DeregisterServices) +END_DISPATCH; +#undef CBCLASS \ No newline at end of file -- cgit