IDS peak genericC++ v1.17.0
Loading...
Searching...
No Matches
peak_remote_device.hpp
Go to the documentation of this file.
1
6
7#pragma once
8
10
13#include <peak/dll_interface/peak_dll_interface_util.hpp>
14
15#include <memory>
16
17
18namespace peak
19{
20namespace core
21{
22
23class Device;
24
34class RemoteDevice : public Module
35{
36public:
37 RemoteDevice() = delete;
38 ~RemoteDevice() override = default;
39 RemoteDevice(const class RemoteDevice& other) = delete;
40 RemoteDevice& operator=(const class RemoteDevice& other) = delete;
41 RemoteDevice(class RemoteDevice&& other) = delete;
42 RemoteDevice& operator=(class RemoteDevice&& other) = delete;
43
53 PEAK_COMMON_NO_DISCARD std::shared_ptr<Device> LocalDevice() const;
54
55private:
56 friend ClassCreator<RemoteDevice>;
57 RemoteDevice(PEAK_REMOTE_DEVICE_HANDLE remoteDeviceHandle, const std::weak_ptr<Device>& localDevice);
58 PEAK_MODULE_HANDLE ModuleHandle() const override;
59
60 PEAK_REMOTE_DEVICE_HANDLE m_backendHandle;
61
62 std::weak_ptr<Device> m_localDevice;
63};
64
65} /* namespace core */
66} /* namespace peak */
67
68/* Implementation */
69namespace peak
70{
71namespace core
72{
73
75 PEAK_REMOTE_DEVICE_HANDLE remoteDeviceHandle, const std::weak_ptr<Device>& localDevice)
76 : m_backendHandle(remoteDeviceHandle)
77 , m_localDevice(localDevice)
78{}
79
80inline std::shared_ptr<Device> RemoteDevice::LocalDevice() const
81{
82 return LockOrThrow(m_localDevice);
83}
84
86{
87 auto moduleHandle = QueryNumericFromCInterfaceFunction<PEAK_MODULE_HANDLE>(
88 [&](PEAK_MODULE_HANDLE* _moduleHandle) {
89 return PEAK_C_ABI_PREFIX PEAK_RemoteDevice_ToModule(m_backendHandle, _moduleHandle);
90 });
91
92 return moduleHandle;
93}
94
95} /* namespace core */
96} /* namespace peak */
Represents a GenTL Device module, i.e. a local virtual Device proxy for the actual hardware RemoteDev...
Definition peak_device.hpp:53
virtual PEAK_MODULE_HANDLE ModuleHandle() const =0
RemoteDevice(class RemoteDevice &&other)=delete
RemoteDevice & operator=(const class RemoteDevice &other)=delete
~RemoteDevice() override=default
RemoteDevice(const class RemoteDevice &other)=delete
RemoteDevice & operator=(class RemoteDevice &&other)=delete
PEAK_COMMON_NO_DISCARD std::shared_ptr< Device > LocalDevice() const
Returns the local device (device proxy) of the remote device.
Definition peak_remote_device.hpp:80
The "core" namespace contains the direct GenAPI and GenTL wrapper.
Definition peak_buffer.hpp:32
The "peak" namespace directly contains convenience functionality like the DeviceManager as well as th...
Definition peak_buffer.hpp:29
struct PEAK_MODULE * PEAK_MODULE_HANDLE
Definition peak_backend.h:419
struct PEAK_REMOTE_DEVICE * PEAK_REMOTE_DEVICE_HANDLE
Definition peak_backend.h:391
PEAK_C_API PEAK_RemoteDevice_ToModule(PEAK_REMOTE_DEVICE_HANDLE remoteDeviceHandle, PEAK_MODULE_HANDLE *moduleHandle)
Casts the given remote device to a module.
#define PEAK_COMMON_NO_DISCARD
Definition peak_common_defines.h:89
#define PEAK_C_ABI_PREFIX
Definition peak_dll_defines.h:13