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
|
/*****************************************************************************
* *
* PrimeSense PSCommon Library *
* Copyright (C) 2012 PrimeSense Ltd. *
* *
* This file is part of PSCommon. *
* *
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. *
* You may obtain a copy of the License at *
* *
* http://www.apache.org/licenses/LICENSE-2.0 *
* *
* Unless required by applicable law or agreed to in writing, software *
* distributed under the License is distributed on an "AS IS" BASIS, *
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and *
* limitations under the License. *
* *
*****************************************************************************/
#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_
|