1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
|
/****************************************************************************
* *
* OpenNI 1.x Alpha *
* Copyright (C) 2011 PrimeSense Ltd. *
* *
* This file is part of OpenNI. *
* *
* OpenNI is free software: you can redistribute it and/or modify *
* it under the terms of the GNU Lesser General Public License as published *
* by the Free Software Foundation, either version 3 of the License, or *
* (at your option) any later version. *
* *
* OpenNI is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public License *
* along with OpenNI. If not, see <http://www.gnu.org/licenses/>. *
* *
****************************************************************************/
#ifndef _XN_USBLINUX_X86_H_
#define _XN_USBLINUX_X86_H_
//---------------------------------------------------------------------------
// Includes
//---------------------------------------------------------------------------
#include <XnOS.h>
//---------------------------------------------------------------------------
// Defines
//---------------------------------------------------------------------------
#define XN_USB_DEFAULT_EP_TIMEOUT 1000
#define XN_USB_READ_THREAD_KILL_TIMEOUT 10000
//---------------------------------------------------------------------------
// Structures & Enums
//---------------------------------------------------------------------------
typedef struct XnUSBDeviceHandle
{
// XnBool bValid;
libusb_device_handle* hDevice;
XnUSBDeviceSpeed nDevSpeed;
XnUInt8 nInterface;
XnUInt8 nAltSetting;
} XnUSBDevHandle;
struct XnUSBReadThreadData; // Forward declaration
typedef struct XnUSBBuffersInfo
{
/* A pointer back to the thread data. */
XnUSBReadThreadData* pThreadData;
/* transfer object (through which asynch operations take place). */
libusb_transfer* transfer;
/* TRUE when transfer is queued. */
XnBool bIsQueued;
/* An event to notify when buffer is ready. */
XN_EVENT_HANDLE hEvent;
XnUInt32 nBufferID;
/* Holds the last status received. */
libusb_transfer_status nLastStatus;
} XnUSBBuffersInfo;
/* Information about a thread reading from an endpoint. */
typedef struct XnUSBReadThreadData
{
/* TRUE when thread is running. */
XnBool bIsRunning;
/* Number of buffers allocated. */
XnUInt32 nNumBuffers;
/* Array of buffers. */
XnUSBBuffersInfo* pBuffersInfo;
/* Size of each buffer. */
XnUInt32 nBufferSize;
/* Timeout value. */
XnUInt32 nTimeOut;
/* User callback function. */
XnUSBReadCallbackFunctionPtr pCallbackFunction;
/* User callback data. */
void* pCallbackData;
/* Handle to the read thread. */
XN_THREAD_HANDLE hReadThread;
/* When TRUE, signals the thread to exit. */
XnBool bKillReadThread;
} XnUSBReadThreadData;
typedef struct XnUSBEndPointHandle
{
libusb_device_handle* hDevice;
unsigned char nAddress;
XnUSBEndPointType nType;
XnUSBDirectionType nDirection;
XnUSBReadThreadData ThreadData;
XnUInt32 nMaxPacketSize;
} XnUSBEPHandle;
#endif //_XN_USBLINUX_X86_H_
|