OniDriverAPI.h
Go to the documentation of this file.
1 /*****************************************************************************
2 * *
3 * OpenNI 2.x Alpha *
4 * Copyright (C) 2012 PrimeSense Ltd. *
5 * *
6 * This file is part of OpenNI. *
7 * *
8 * Licensed under the Apache License, Version 2.0 (the "License"); *
9 * you may not use this file except in compliance with the License. *
10 * You may obtain a copy of the License at *
11 * *
12 * http://www.apache.org/licenses/LICENSE-2.0 *
13 * *
14 * Unless required by applicable law or agreed to in writing, software *
15 * distributed under the License is distributed on an "AS IS" BASIS, *
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
17 * See the License for the specific language governing permissions and *
18 * limitations under the License. *
19 * *
20 *****************************************************************************/
21 #ifndef ONIDRIVERAPI_H
22 #define ONIDRIVERAPI_H
23 
24 #include "OniPlatform.h"
25 #include "OniCTypes.h"
26 #include "OniCProperties.h"
27 #include "OniDriverTypes.h"
28 #include <stdarg.h>
29 
30 namespace oni { namespace driver {
31 
32 class DeviceBase;
33 class StreamBase;
34 
35 typedef void (ONI_CALLBACK_TYPE* DeviceConnectedCallback)(const OniDeviceInfo*, void* pCookie);
36 typedef void (ONI_CALLBACK_TYPE* DeviceDisconnectedCallback)(const OniDeviceInfo*, void* pCookie);
37 typedef void (ONI_CALLBACK_TYPE* DeviceStateChangedCallback)(const OniDeviceInfo* deviceId, int errorState, void* pCookie);
39 typedef void (ONI_CALLBACK_TYPE* PropertyChangedCallback)(void* sender, int propertyId, const void* data, int dataSize, void* pCookie);
40 
42 {
43 public:
45  {
46  return OniStreamServices::getDefaultRequiredFrameSize(streamServices);
47  }
48 
49  OniFrame* acquireFrame()
50  {
52  }
53 
54  void addFrameRef(OniFrame* pFrame)
55  {
56  OniStreamServices::addFrameRef(streamServices, pFrame);
57  }
58 
59  void releaseFrame(OniFrame* pFrame)
60  {
61  OniStreamServices::releaseFrame(streamServices, pFrame);
62  }
63 };
64 
66 {
67 public:
68  StreamBase() : m_newFrameCallback(NULL), m_propertyChangedCallback(NULL) {}
69  virtual ~StreamBase() {}
70 
71  virtual void setServices(StreamServices* pStreamServices) { m_pServices = pStreamServices; }
72 
73  virtual OniStatus setProperty(int /*propertyId*/, const void* /*data*/, int /*dataSize*/) {return ONI_STATUS_NOT_IMPLEMENTED;}
74  virtual OniStatus getProperty(int /*propertyId*/, void* /*data*/, int* /*pDataSize*/) {return ONI_STATUS_NOT_IMPLEMENTED;}
75  virtual OniBool isPropertySupported(int /*propertyId*/) {return FALSE;}
76  virtual OniStatus invoke(int /*commandId*/, void* /*data*/, int /*dataSize*/) {return ONI_STATUS_NOT_IMPLEMENTED;}
77  virtual OniBool isCommandSupported(int /*commandId*/) {return FALSE;}
78 
79  virtual int getRequiredFrameSize() { return getServices().getDefaultRequiredFrameSize(); }
80 
81  virtual OniStatus start() = 0;
82  virtual void stop() = 0;
83 
84  virtual void setNewFrameCallback(NewFrameCallback handler, void* pCookie) { m_newFrameCallback = handler; m_newFrameCallbackCookie = pCookie; }
85  virtual void setPropertyChangedCallback(PropertyChangedCallback handler, void* pCookie) { m_propertyChangedCallback = handler; m_propertyChangedCookie = pCookie; }
86 
87  virtual void notifyAllProperties() { return; }
88 
89  virtual OniStatus convertDepthToColorCoordinates(StreamBase* /*colorStream*/, int /*depthX*/, int /*depthY*/, OniDepthPixel /*depthZ*/, int* /*pColorX*/, int* /*pColorY*/) { return ONI_STATUS_NOT_SUPPORTED; }
90 
91  virtual OniStatus convertC2DCoordinates(int /*depthX*/, int /*depthY*/, OniDepthPixel /*depthZ*/, int* /*pColorX*/, int* /*pColorY*/) { return ONI_STATUS_NOT_SUPPORTED; }
92 
93  virtual OniStatus convertD2CCoordinates(int /*depthX*/, int /*depthY*/, OniDepthPixel /*depthZ*/, int* /*pColorX*/, int* /*pColorY*/) { return ONI_STATUS_NOT_SUPPORTED; }
94 protected:
95  void raiseNewFrame(OniFrame* pFrame) { (*m_newFrameCallback)(this, pFrame, m_newFrameCallbackCookie); }
96  void raisePropertyChanged(int propertyId, const void* data, int dataSize) { (*m_propertyChangedCallback)(this, propertyId, data, dataSize, m_propertyChangedCookie); }
97 
98  StreamServices& getServices() { return *m_pServices; }
99 
100 private:
106 };
107 
109 {
110 public:
112  virtual ~DeviceBase() {}
113 
114  virtual OniStatus getSensorInfoList(OniSensorInfo** pSensorInfos, int* numSensors) = 0;
115 
116  virtual StreamBase* createStream(OniSensorType) = 0;
117  virtual void destroyStream(StreamBase* pStream) = 0;
118 
119  virtual OniStatus setProperty(int /*propertyId*/, const void* /*data*/, int /*dataSize*/) {return ONI_STATUS_NOT_IMPLEMENTED;}
120  virtual OniStatus getProperty(int /*propertyId*/, void* /*data*/, int* /*pDataSize*/) {return ONI_STATUS_NOT_IMPLEMENTED;}
121  virtual OniBool isPropertySupported(int /*propertyId*/) {return FALSE;}
122  virtual OniStatus invoke(int /*commandId*/, void* /*data*/, int /*dataSize*/) {return ONI_STATUS_NOT_IMPLEMENTED;}
123  virtual OniBool isCommandSupported(int /*commandId*/) {return FALSE;}
125 
126  virtual void setPropertyChangedCallback(PropertyChangedCallback handler, void* pCookie) { m_propertyChangedCallback = handler; m_propertyChangedCookie = pCookie; }
127  virtual void notifyAllProperties() { return; }
128 
130 
131 protected:
132  void raisePropertyChanged(int propertyId, const void* data, int dataSize) { (*m_propertyChangedCallback)(this, propertyId, data, dataSize, m_propertyChangedCookie); }
133 
134 private:
137 };
138 
140 {
141 public:
142  DriverServices(OniDriverServices* pDriverServices) : m_pDriverServices(pDriverServices) {}
143 
144  void errorLoggerAppend(const char* format, ...)
145  {
146  va_list args;
147  va_start(args, format);
148  m_pDriverServices->errorLoggerAppend(m_pDriverServices->driverServices, format, args);
149  va_end(args);
150  }
151 
153  {
154  m_pDriverServices->errorLoggerClear(m_pDriverServices->driverServices);
155  }
156 
157  void log(int severity, const char* file, int line, const char* mask, const char* message)
158  {
159  m_pDriverServices->log(m_pDriverServices->driverServices, severity, file, line, mask, message);
160  }
161 
162 private:
164 };
165 
167 {
168 public:
169  DriverBase(OniDriverServices* pDriverServices) : m_services(pDriverServices)
170  {}
171 
172  virtual ~DriverBase() {}
173 
174  virtual OniStatus initialize(DeviceConnectedCallback connectedCallback, DeviceDisconnectedCallback disconnectedCallback, DeviceStateChangedCallback deviceStateChangedCallback, void* pCookie)
175  {
176  m_deviceConnectedEvent = connectedCallback;
177  m_deviceDisconnectedEvent = disconnectedCallback;
178  m_deviceStateChangedEvent = deviceStateChangedCallback;
179  m_pCookie = pCookie;
180  return ONI_STATUS_OK;
181  }
182 
183  virtual DeviceBase* deviceOpen(const char* uri, const char* mode) = 0;
184  virtual void deviceClose(DeviceBase* pDevice) = 0;
185 
186  virtual void shutdown() = 0;
187 
188  virtual OniStatus tryDevice(const char* /*uri*/) { return ONI_STATUS_ERROR;}
189 
190  virtual void* enableFrameSync(StreamBase** /*pStreams*/, int /*streamCount*/) { return NULL; }
191  virtual void disableFrameSync(void* /*frameSyncGroup*/) {}
192 
193 protected:
194  void deviceConnected(const OniDeviceInfo* pInfo) { (m_deviceConnectedEvent)(pInfo, m_pCookie); }
195  void deviceDisconnected(const OniDeviceInfo* pInfo) { (m_deviceDisconnectedEvent)(pInfo, m_pCookie); }
196  void deviceStateChanged(const OniDeviceInfo* pInfo, int errorState) { (m_deviceStateChangedEvent)(pInfo, errorState, m_pCookie); }
197 
198  DriverServices& getServices() { return m_services; }
199 
200 private:
201  DeviceConnectedCallback m_deviceConnectedEvent;
204  void* m_pCookie;
205 
207 };
208 
209 }} // oni::driver
210 
211 #define ONI_EXPORT_DRIVER(DriverClass) \
212  \
213 oni::driver::DriverBase* g_pDriver = NULL; \
214  \
215 /* As Driver */ \
216 ONI_C_API_EXPORT void oniDriverCreate(OniDriverServices* driverServices) { \
217  g_pDriver = XN_NEW(DriverClass, driverServices); \
218 } \
219 ONI_C_API_EXPORT void oniDriverDestroy() \
220 { \
221  g_pDriver->shutdown(); \
222  XN_DELETE(g_pDriver); g_pDriver = NULL; \
223 } \
224 ONI_C_API_EXPORT OniStatus oniDriverInitialize(oni::driver::DeviceConnectedCallback deviceConnectedCallback, \
225  oni::driver::DeviceDisconnectedCallback deviceDisconnectedCallback, \
226  oni::driver::DeviceStateChangedCallback deviceStateChangedCallback, \
227  void* pCookie) \
228 { \
229  return g_pDriver->initialize(deviceConnectedCallback, deviceDisconnectedCallback, deviceStateChangedCallback, pCookie); \
230 } \
231  \
232 ONI_C_API_EXPORT OniStatus oniDriverTryDevice(const char* uri) \
233 { \
234  return g_pDriver->tryDevice(uri); \
235 } \
236  \
237 /* As Device */ \
238 ONI_C_API_EXPORT oni::driver::DeviceBase* oniDriverDeviceOpen(const char* uri, const char* mode) \
239 { \
240  return g_pDriver->deviceOpen(uri, mode); \
241 } \
242 ONI_C_API_EXPORT void oniDriverDeviceClose(oni::driver::DeviceBase* pDevice) \
243 { \
244  g_pDriver->deviceClose(pDevice); \
245 } \
246  \
247 ONI_C_API_EXPORT OniStatus oniDriverDeviceGetSensorInfoList(oni::driver::DeviceBase* pDevice, OniSensorInfo** pSensorInfos, \
248  int* numSensors) \
249 { \
250  return pDevice->getSensorInfoList(pSensorInfos, numSensors); \
251 } \
252  \
253 ONI_C_API_EXPORT oni::driver::StreamBase* oniDriverDeviceCreateStream(oni::driver::DeviceBase* pDevice, \
254  OniSensorType sensorType) \
255 { \
256  return pDevice->createStream(sensorType); \
257 } \
258  \
259 ONI_C_API_EXPORT void oniDriverDeviceDestroyStream(oni::driver::DeviceBase* pDevice, oni::driver::StreamBase* pStream) \
260 { \
261  return pDevice->destroyStream(pStream); \
262 } \
263  \
264 ONI_C_API_EXPORT OniStatus oniDriverDeviceSetProperty(oni::driver::DeviceBase* pDevice, int propertyId, \
265  const void* data, int dataSize) \
266 { \
267  return pDevice->setProperty(propertyId, data, dataSize); \
268 } \
269 ONI_C_API_EXPORT OniStatus oniDriverDeviceGetProperty(oni::driver::DeviceBase* pDevice, int propertyId, \
270  void* data, int* pDataSize) \
271 { \
272  return pDevice->getProperty(propertyId, data, pDataSize); \
273 } \
274 ONI_C_API_EXPORT OniBool oniDriverDeviceIsPropertySupported(oni::driver::DeviceBase* pDevice, int propertyId) \
275 { \
276  return pDevice->isPropertySupported(propertyId); \
277 } \
278 ONI_C_API_EXPORT void oniDriverDeviceSetPropertyChangedCallback(oni::driver::DeviceBase* pDevice, \
279  oni::driver::PropertyChangedCallback handler, void* pCookie) \
280 { \
281  pDevice->setPropertyChangedCallback(handler, pCookie); \
282 } \
283 ONI_C_API_EXPORT void oniDriverDeviceNotifyAllProperties(oni::driver::DeviceBase* pDevice) \
284 { \
285  pDevice->notifyAllProperties(); \
286 } \
287 ONI_C_API_EXPORT OniStatus oniDriverDeviceInvoke(oni::driver::DeviceBase* pDevice, int commandId, \
288  void* data, int dataSize) \
289 { \
290  return pDevice->invoke(commandId, data, dataSize); \
291 } \
292 ONI_C_API_EXPORT OniBool oniDriverDeviceIsCommandSupported(oni::driver::DeviceBase* pDevice, int commandId) \
293 { \
294  return pDevice->isCommandSupported(commandId); \
295 } \
296 ONI_C_API_EXPORT OniStatus oniDriverDeviceTryManualTrigger(oni::driver::DeviceBase* pDevice) \
297 { \
298  return pDevice->tryManualTrigger(); \
299 } \
300 ONI_C_API_EXPORT OniBool oniDriverDeviceIsImageRegistrationModeSupported(oni::driver::DeviceBase* pDevice, \
301  OniImageRegistrationMode mode) \
302 { \
303  return pDevice->isImageRegistrationModeSupported(mode); \
304 } \
305  \
306 /* As Stream */ \
307 ONI_C_API_EXPORT void oniDriverStreamSetServices(oni::driver::StreamBase* pStream, OniStreamServices* pServices) \
308 { \
309  pStream->setServices((oni::driver::StreamServices*)pServices); \
310 } \
311  \
312 ONI_C_API_EXPORT OniStatus oniDriverStreamSetProperty(oni::driver::StreamBase* pStream, int propertyId, \
313  const void* data, int dataSize) \
314 { \
315  return pStream->setProperty(propertyId, data, dataSize); \
316 } \
317 ONI_C_API_EXPORT OniStatus oniDriverStreamGetProperty(oni::driver::StreamBase* pStream, int propertyId, void* data, \
318  int* pDataSize) \
319 { \
320  return pStream->getProperty(propertyId, data, pDataSize); \
321 } \
322 ONI_C_API_EXPORT OniBool oniDriverStreamIsPropertySupported(oni::driver::StreamBase* pStream, int propertyId) \
323 { \
324  return pStream->isPropertySupported(propertyId); \
325 } \
326 ONI_C_API_EXPORT void oniDriverStreamSetPropertyChangedCallback(oni::driver::StreamBase* pStream, \
327  oni::driver::PropertyChangedCallback handler, void* pCookie) \
328 { \
329  pStream->setPropertyChangedCallback(handler, pCookie); \
330 } \
331 ONI_C_API_EXPORT void oniDriverStreamNotifyAllProperties(oni::driver::StreamBase* pStream) \
332 { \
333  pStream->notifyAllProperties(); \
334 } \
335 ONI_C_API_EXPORT OniStatus oniDriverStreamInvoke(oni::driver::StreamBase* pStream, int commandId, \
336  void* data, int dataSize) \
337 { \
338  return pStream->invoke(commandId, data, dataSize); \
339 } \
340 ONI_C_API_EXPORT OniBool oniDriverStreamIsCommandSupported(oni::driver::StreamBase* pStream, int commandId) \
341 { \
342  return pStream->isCommandSupported(commandId); \
343 } \
344  \
345 ONI_C_API_EXPORT OniStatus oniDriverStreamStart(oni::driver::StreamBase* pStream) \
346 { \
347  return pStream->start(); \
348 } \
349 ONI_C_API_EXPORT void oniDriverStreamStop(oni::driver::StreamBase* pStream) \
350 { \
351  pStream->stop(); \
352 } \
353  \
354 ONI_C_API_EXPORT int oniDriverStreamGetRequiredFrameSize(oni::driver::StreamBase* pStream) \
355 { \
356  return pStream->getRequiredFrameSize(); \
357 } \
358  \
359 ONI_C_API_EXPORT void oniDriverStreamSetNewFrameCallback(oni::driver::StreamBase* pStream, \
360  oni::driver::NewFrameCallback handler, void* pCookie) \
361 { \
362  pStream->setNewFrameCallback(handler, pCookie); \
363 } \
364  \
365 ONI_C_API_EXPORT OniStatus oniDriverStreamConvertDepthToColorCoordinates(oni::driver::StreamBase* pDepthStream, \
366  oni::driver::StreamBase* pColorStream, int depthX, int depthY, OniDepthPixel depthZ, int* pColorX, int* pColorY) \
367 { \
368  return pDepthStream->convertDepthToColorCoordinates(pColorStream, depthX, depthY, depthZ, pColorX, pColorY); \
369 } \
370  \
371 ONI_C_API_EXPORT OniStatus oniDriverStreamConvertC2DCoordinates(oni::driver::StreamBase* pDepthStream, \
372  int colorX, int colorY, OniDepthPixel depthZ, int* pDepthX, int* pDepthY) \
373 { \
374  return pDepthStream->convertC2DCoordinates(colorX, colorY, depthZ, pDepthX, pDepthY); \
375 } \
376  \
377 ONI_C_API_EXPORT OniStatus oniDriverStreamConvertD2CCoordinates(oni::driver::StreamBase* pDepthStream, \
378  int colorX, int colorY, OniDepthPixel depthZ, int* pDepthX, int* pDepthY) \
379 { \
380  return pDepthStream->convertD2CCoordinates(colorX, colorY, depthZ, pDepthX, pDepthY); \
381 } \
382  \
383 ONI_C_API_EXPORT void* oniDriverEnableFrameSync(oni::driver::StreamBase** pStreams, int streamCount) \
384 { \
385  return g_pDriver->enableFrameSync(pStreams, streamCount); \
386 } \
387  \
388 ONI_C_API_EXPORT void oniDriverDisableFrameSync(void* frameSyncGroup) \
389 { \
390  return g_pDriver->disableFrameSync(frameSyncGroup); \
391 } \
392 
393 #endif // ONIDRIVERAPI_H
NewFrameCallback m_newFrameCallback
Definition: OniDriverAPI.h:102
virtual OniBool isCommandSupported(int)
Definition: OniDriverAPI.h:77
OniImageRegistrationMode
Definition: OniCEnums.h:72
#define FALSE
Definition: OniCTypes.h:34
virtual OniStatus getProperty(int, void *, int *)
Definition: OniDriverAPI.h:120
PropertyChangedCallback m_propertyChangedCallback
Definition: OniDriverAPI.h:104
void errorLoggerAppend(const char *format,...)
Definition: OniDriverAPI.h:144
void log(int severity, const char *file, int line, const char *mask, const char *message)
Definition: OniDriverAPI.h:157
DriverServices(OniDriverServices *pDriverServices)
Definition: OniDriverAPI.h:142
void raiseNewFrame(OniFrame *pFrame)
Definition: OniDriverAPI.h:95
void deviceStateChanged(const OniDeviceInfo *pInfo, int errorState)
Definition: OniDriverAPI.h:196
int OniBool
Definition: OniCTypes.h:28
DeviceStateChangedCallback m_deviceStateChangedEvent
Definition: OniDriverAPI.h:203
virtual OniStatus convertC2DCoordinates(int, int, OniDepthPixel, int *, int *)
Definition: OniDriverAPI.h:91
virtual void * enableFrameSync(StreamBase **, int)
Definition: OniDriverAPI.h:190
void addFrameRef(OniFrame *pFrame)
Definition: OniDriverAPI.h:54
StreamServices * m_pServices
Definition: OniDriverAPI.h:101
virtual void setPropertyChangedCallback(PropertyChangedCallback handler, void *pCookie)
Definition: OniDriverAPI.h:85
virtual OniStatus invoke(int, void *, int)
Definition: OniDriverAPI.h:76
virtual OniBool isPropertySupported(int)
Definition: OniDriverAPI.h:75
OniDriverServices * m_pDriverServices
Definition: OniDriverAPI.h:163
virtual OniStatus tryDevice(const char *)
Definition: OniDriverAPI.h:188
DriverServices & getServices()
Definition: OniDriverAPI.h:198
StreamServices & getServices()
Definition: OniDriverAPI.h:98
virtual OniStatus setProperty(int, const void *, int)
Definition: OniDriverAPI.h:119
virtual int getRequiredFrameSize()
Definition: OniDriverAPI.h:79
virtual OniStatus convertDepthToColorCoordinates(StreamBase *, int, int, OniDepthPixel, int *, int *)
Definition: OniDriverAPI.h:89
DeviceConnectedCallback m_deviceConnectedEvent
Definition: OniDriverAPI.h:201
virtual void setServices(StreamServices *pStreamServices)
Definition: OniDriverAPI.h:71
virtual OniBool isImageRegistrationModeSupported(OniImageRegistrationMode mode)
Definition: OniDriverAPI.h:129
virtual OniBool isCommandSupported(int)
Definition: OniDriverAPI.h:123
DriverBase(OniDriverServices *pDriverServices)
Definition: OniDriverAPI.h:169
virtual OniStatus getProperty(int, void *, int *)
Definition: OniDriverAPI.h:74
OniSensorType
Definition: OniCEnums.h:38
void(ONI_CALLBACK_TYPE * PropertyChangedCallback)(void *sender, int propertyId, const void *data, int dataSize, void *pCookie)
Definition: OniDriverAPI.h:39
virtual void notifyAllProperties()
Definition: OniDriverAPI.h:87
void raisePropertyChanged(int propertyId, const void *data, int dataSize)
Definition: OniDriverAPI.h:96
PropertyChangedCallback m_propertyChangedCallback
Definition: OniDriverAPI.h:135
void(ONI_CALLBACK_TYPE * NewFrameCallback)(StreamBase *streamId, OniFrame *, void *pCookie)
Definition: OniDriverAPI.h:38
void deviceDisconnected(const OniDeviceInfo *pInfo)
Definition: OniDriverAPI.h:195
void deviceConnected(const OniDeviceInfo *pInfo)
Definition: OniDriverAPI.h:194
virtual OniStatus initialize(DeviceConnectedCallback connectedCallback, DeviceDisconnectedCallback disconnectedCallback, DeviceStateChangedCallback deviceStateChangedCallback, void *pCookie)
Definition: OniDriverAPI.h:174
virtual void disableFrameSync(void *)
Definition: OniDriverAPI.h:191
DriverServices m_services
Definition: OniDriverAPI.h:206
virtual OniStatus tryManualTrigger()
Definition: OniDriverAPI.h:124
virtual void setNewFrameCallback(NewFrameCallback handler, void *pCookie)
Definition: OniDriverAPI.h:84
virtual OniStatus convertD2CCoordinates(int, int, OniDepthPixel, int *, int *)
Definition: OniDriverAPI.h:93
typedef void(ONI_CALLBACK_TYPE *DeviceConnectedCallback)(const OniDeviceInfo *
virtual void setPropertyChangedCallback(PropertyChangedCallback handler, void *pCookie)
Definition: OniDriverAPI.h:126
#define ONI_CALLBACK_TYPE
virtual OniStatus invoke(int, void *, int)
Definition: OniDriverAPI.h:122
uint16_t OniDepthPixel
Definition: OniCTypes.h:154
DeviceDisconnectedCallback m_deviceDisconnectedEvent
Definition: OniDriverAPI.h:202
virtual void notifyAllProperties()
Definition: OniDriverAPI.h:127
virtual OniStatus setProperty(int, const void *, int)
Definition: OniDriverAPI.h:73
void raisePropertyChanged(int propertyId, const void *data, int dataSize)
Definition: OniDriverAPI.h:132
OniFrame *ONI_CALLBACK_TYPE * acquireFrame(void *streamServices)
void(ONI_CALLBACK_TYPE * DeviceStateChangedCallback)(const OniDeviceInfo *deviceId, int errorState, void *pCookie)
Definition: OniDriverAPI.h:37
OniStatus
Definition: OniCEnums.h:25
void releaseFrame(OniFrame *pFrame)
Definition: OniDriverAPI.h:59
void * pCookie
Definition: OniDriverAPI.h:35
virtual OniBool isPropertySupported(int)
Definition: OniDriverAPI.h:121
void(ONI_CALLBACK_TYPE * DeviceDisconnectedCallback)(const OniDeviceInfo *, void *pCookie)
Definition: OniDriverAPI.h:36


astra_camera
Author(s): Tim Liu
autogenerated on Wed Dec 16 2020 03:54:34