File: XnDeviceSensorProtocol.h

package info (click to toggle)
openni-sensor-pointclouds 5.1.0.41.3-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 4,640 kB
  • ctags: 7,635
  • sloc: cpp: 34,878; ansic: 14,901; sh: 239; python: 155; makefile: 93; xml: 8
file content (131 lines) | stat: -rw-r--r-- 5,490 bytes parent folder | download | duplicates (6)
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/****************************************************************************
*                                                                           *
*  PrimeSense Sensor 5.x Alpha                                              *
*  Copyright (C) 2011 PrimeSense Ltd.                                       *
*                                                                           *
*  This file is part of PrimeSense Sensor.                                  *
*                                                                           *
*  PrimeSense Sensor 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.                                      *
*                                                                           *
*  PrimeSense Sensor 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 PrimeSense Sensor. If not, see <http://www.gnu.org/licenses/>.*
*                                                                           *
****************************************************************************/
#ifndef _XN_DEVICESENSORPROTOCOL_H_
#define _XN_DEVICESENSORPROTOCOL_H_

//---------------------------------------------------------------------------
// Includes
//---------------------------------------------------------------------------
#include "XnDeviceSensor.h"
#include "XnHostProtocol.h"

//---------------------------------------------------------------------------
// Defines
//---------------------------------------------------------------------------
#define XN_SENSOR_PROTOCOL_SENSOR_CLOCK_LENGTH	2
#define XN_SENSOR_PROTOCOL_SENSOR_VER_LENGTH 1

#define XN_SENSOR_PROTOCOL_RESPONSE_DEPTH_START						0x7100
#define XN_SENSOR_PROTOCOL_RESPONSE_DEPTH_BUFFER					0x7200
#define XN_SENSOR_PROTOCOL_RESPONSE_DEPTH_END						0x7500

#define XN_SENSOR_PROTOCOL_RESPONSE_IMAGE_START						0x8100
#define XN_SENSOR_PROTOCOL_RESPONSE_IMAGE_BUFFER					0x8200
#define XN_SENSOR_PROTOCOL_RESPONSE_IMAGE_END						0x8500

#define XN_SENSOR_PROTOCOL_RESPONSE_AUDIO_BUFFER					0x9200

#define XN_SENSOR_PROTOCOL_RESPONSE_GMC								0xa200

#define XN_SENSOR_PROTOCOL_RESPONSE_GMC_DEBUG						0xb200
#define XN_SENSOR_PROTOCOL_RESPONSE_GMC_DEBUG_END					0xb500

#define XN_SENSOR_PROTOCOL_RESPONSE_WAVELENGTH_CORRECTION_DEBUG		0xc200

#define XN_SENSOR_PROTOCOL_RESPONSE_TEC_DEBUG						0xd200

#define XN_SENSOR_PROTOCOL_RESPONSE_PROJECTOR_FAULT_EVENT			0xdead

#define XN_SENSOR_PROTOCOL_RESPONSE_OVERHEAT						0xf31f

#define XN_SENSOR_PROTOCOL_MAX_BUFFER_SIZE 1024*1024
#define XN_SENSOR_PROTOCOL_USB_BUFFER_SIZE 4*1024*1024
#define XN_SENSOR_PROTOCOL_USB_MAX_ZERO_READ_COUNTER 5
#define XN_SENSOR_PROTOCOL_READ_SLEEP 100
#define XN_SENSOR_PROTOCOL_READ_MAX_TRIES 30

#define XN_SENSOR_PROTOCOL_MAX_RECONFIG_TRIES 10

#define XN_SENSOR_PROTOCOL_START_CAPTURE_TRIES 5
#define XN_SENSOR_PROTOCOL_START_CAPTURE_SLEEP 1000

#define XN_SENSOR_PROTOCOL_GMC_MAX_POINTS_IN_PACKET 100

/** the number of points to accumulate before processing takes place. */
#define XN_GMC_MIN_COUNT_FOR_RUNNING	1000

//---------------------------------------------------------------------------
// Structures
//---------------------------------------------------------------------------
#pragma pack (push, 1)

typedef struct XnSensorProtocolResponseHeader
{
	XnUInt16 nMagic;
	XnUInt16 nType;
	XnUInt8 nPacketID;
	XnUInt8 nUnknown;
	XnUInt16 nBufSize;
	XnUInt32 nTimeStamp;
} XnSensorProtocolResponseHeader;
#pragma pack (pop) // Undo the pack change...

typedef enum
{
	XN_WAITING_FOR_CONFIGURATION,
	XN_IGNORING_GARBAGE,
	XN_LOOKING_FOR_MAGIC,
	XN_HALF_MAGIC,
	XN_PACKET_HEADER,
	XN_PACKET_DATA
} XnMiniPacketState;

typedef struct XnSpecificUsbDeviceState
{
	XnMiniPacketState State;
	XnSensorProtocolResponseHeader CurrHeader;
	XnUInt32 nMissingBytesInState;
} XnSpecificUsbDeviceState;

typedef struct XnSpecificUsbDevice
{
	XnDevicePrivateData* pDevicePrivateData;
	XnUsbConnection* pUsbConnection;
	XnUInt32 nIgnoreBytes;
	XnUInt32 nChunkReadBytes;
	XnSpecificUsbDeviceState CurrState;
	XnUInt32 nTimeout;
} XnSpecificUsbDevice;


//---------------------------------------------------------------------------
// Functions Declaration
//---------------------------------------------------------------------------
XnBool XN_CALLBACK_TYPE XnDeviceSensorProtocolUsbEpCb(XnUChar* pBuffer, XnUInt32 nBufferSize, void* pCallbackData);

XnStatus XnCalculateExpectedImageSize(XnDevicePrivateData* pDevicePrivateData, XnUInt32* pnExpectedSize);
void XnProcessUncompressedDepthPacket(XnSensorProtocolResponseHeader* pCurrHeader, XnUChar* pData, XnUInt32 nDataSize, XnBool bEOP, XnSpecificUsbDevice* pSpecificDevice);
XnStatus XnDeviceSensorProtocolUpdateImageProcessor(XnDevicePrivateData* pDevicePrivateData);



#endif //_XN_DEVICESENSORPROTOCOL_H_