IDS peak genericC++  v1.6.2
peak_event.hpp
Go to the documentation of this file.
1 
11 #pragma once
12 
13 
16 #include <peak/dll_interface/peak_dll_interface_util.hpp>
17 
18 #include <cstdint>
19 #include <vector>
20 
21 
22 namespace peak
23 {
24 namespace core
25 {
26 
34 enum class EventType
35 {
36  Error,
40  Module,
41 
42  Custom = 1000
43 };
44 
45 class NodeMap;
46 
51 class Event
52 {
53 public:
54  Event() = delete;
55  ~Event();
56  Event(const Event& other) = delete;
57  Event& operator=(const Event& other) = delete;
58  Event(Event&& other) = delete;
59  Event& operator=(Event&& other) = delete;
60 
62  RawInformation Info(int32_t infoCommand) const;
72  uint64_t ID() const;
84  std::vector<uint8_t> Data() const;
85 
93  EventType Type() const;
94 
107  std::vector<uint8_t> RawData() const;
108 
109 private:
110  friend NodeMap;
111  friend ClassCreator<Event>;
112  explicit Event(PEAK_EVENT_HANDLE eventHandle);
113  PEAK_EVENT_HANDLE m_backendHandle;
114 };
115 
116 } /* namespace core */
117 } /* namespace peak */
118 
119 /* Implementation */
120 namespace peak
121 {
122 namespace core
123 {
124 
125 inline Event::Event(PEAK_EVENT_HANDLE eventHandle)
126  : m_backendHandle(eventHandle)
127 {}
128 
129 inline RawInformation Event::Info(int32_t infoCommand) const
130 {
131  return QueryRawInformationFromCInterfaceFunction([&](int32_t* dataType, uint8_t* buffer, size_t* bufferSize) {
132  return PEAK_C_ABI_PREFIX PEAK_Event_GetInfo(m_backendHandle, infoCommand, dataType, buffer, bufferSize);
133  });
134 }
135 
136 inline uint64_t Event::ID() const
137 {
138  return QueryNumericFromCInterfaceFunction<uint64_t>(
139  [&](uint64_t* id) { return PEAK_C_ABI_PREFIX PEAK_Event_GetID(m_backendHandle, id); });
140 }
141 
142 inline std::vector<uint8_t> Event::Data() const
143 {
144  return QueryNumericArrayFromCInterfaceFunction<uint8_t>([&](uint8_t* data, size_t* dataSize) {
145  return PEAK_C_ABI_PREFIX PEAK_Event_GetData(m_backendHandle, data, dataSize);
146  });
147 }
148 
149 inline EventType Event::Type() const
150 {
151  return static_cast<EventType>(QueryNumericFromCInterfaceFunction<PEAK_EVENT_TYPE>(
152  [&](PEAK_EVENT_TYPE* type) { return PEAK_C_ABI_PREFIX PEAK_Event_GetType(m_backendHandle, type); }));
153 }
154 
155 inline std::vector<uint8_t> Event::RawData() const
156 {
157  return QueryNumericArrayFromCInterfaceFunction<uint8_t>([&](uint8_t* rawData, size_t* rawDataSize) {
158  return PEAK_C_ABI_PREFIX PEAK_Event_GetRawData(m_backendHandle, rawData, rawDataSize);
159  });
160 }
161 
163 {
164  (void)PEAK_C_ABI_PREFIX PEAK_Event_Destruct(m_backendHandle);
165 }
166 
167 inline std::string ToString(EventType entry)
168 {
169  std::string entryString;
170 
171  if (entry == EventType::Error)
172  {
173  entryString = "Error";
174  }
175  else if (entry == EventType::FeatureInvalidate)
176  {
177  entryString = "FeatureInvalidate";
178  }
179  else if (entry == EventType::FeatureChange)
180  {
181  entryString = "FeatureChange";
182  }
183  else if (entry == EventType::RemoteDevice)
184  {
185  entryString = "RemoteDevice";
186  }
187  else if (entry == EventType::Module)
188  {
189  entryString = "Module";
190  }
191  else if (entry >= EventType::Custom)
192  {
193  entryString = "Custom";
194  }
195 
196  return entryString;
197 }
198 
199 } /* namespace core */
200 } /* namespace peak */
Represents a GenAPI node map.
Definition: peak_node_map.hpp:59
std::vector< uint8_t > Data() const
Returns the event payload data.
Definition: peak_event.hpp:142
EventType
Different types of events.
Definition: peak_event.hpp:34
The "peak" namespace directly contains convenience functionality like the DeviceManager as well as th...
Definition: peak_dynamic_loader.h:32
std::string ToString(BufferPayloadType entry)
Definition: peak_buffer.hpp:472
PEAK_C_API PEAK_Event_GetType(PEAK_EVENT_HANDLE eventHandle, PEAK_EVENT_TYPE *type)
Asks the given event for its type.
~Event()
Definition: peak_event.hpp:162
int32_t PEAK_EVENT_TYPE
Definition: peak_backend.h:168
EventType Type() const
Returns the type.
Definition: peak_event.hpp:149
PEAK_C_API PEAK_Event_GetID(PEAK_EVENT_HANDLE eventHandle, uint64_t *id)
Asks the given event for its ID.
PEAK_C_API PEAK_Event_GetData(PEAK_EVENT_HANDLE eventHandle, uint8_t *data, size_t *dataSize)
Asks the given event for its data.
uint64_t ID() const
Returns the ID.
Definition: peak_event.hpp:136
struct PEAK_EVENT * PEAK_EVENT_HANDLE
Definition: peak_backend.h:465
PEAK_C_API PEAK_Event_Destruct(PEAK_EVENT_HANDLE eventHandle)
Destroys the given event.
RawInformation Info(int32_t infoCommand) const
Delivers information based on the given GenTL info command.
Definition: peak_event.hpp:129
Encapsulates the GenTL event data functions.
Definition: peak_event.hpp:51
std::vector< uint8_t > RawData() const
Returns the event raw data.
Definition: peak_event.hpp:155
#define PEAK_C_ABI_PREFIX
Definition: peak_dll_defines.h:16
The struct returned by all raw information functions.
Definition: peak_common_structs.hpp:24
PEAK_C_API PEAK_Event_GetRawData(PEAK_EVENT_HANDLE eventHandle, uint8_t *rawData, size_t *rawDataSize)
Asks the given event for its raw data.
PEAK_C_API PEAK_Event_GetInfo(PEAK_EVENT_HANDLE eventHandle, int32_t infoCommand, int32_t *infoDataType, uint8_t *info, size_t *infoSize)
Asks the given event for an information based on a specific command.