File: XnGeneralDebugProcessor.cpp

package info (click to toggle)
openni2 2.2.0.33%2Bdfsg-11
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 22,216 kB
  • sloc: cpp: 111,197; ansic: 35,511; sh: 10,542; python: 1,313; java: 952; makefile: 575; xml: 12
file content (55 lines) | stat: -rw-r--r-- 1,603 bytes parent folder | download | duplicates (4)
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
#include "XnGeneralDebugProcessor.h"
#include <XnDump.h>

XnGeneralDebugProcessor::XnGeneralDebugProcessor(XnDevicePrivateData* pDevicePrivateData) : XnDataProcessor(pDevicePrivateData, "GeneralDebug"), m_pDump(NULL)
{

}

XnGeneralDebugProcessor::~XnGeneralDebugProcessor()
{
	xnDumpFileClose(m_pDump);
}

void XnGeneralDebugProcessor::ProcessPacketChunk(const XnSensorProtocolResponseHeader* pHeader, const XnUChar* pData, XnUInt32 nDataOffset, XnUInt32 nDataSize)
{
	if (nDataOffset == 0)
	{
		// start of data. The first uint16 is the number of fields in the header, and then we have the data itself
		const XnUInt16* pFields = (const XnUInt16*)pData;
		XnUInt16 nFields = *pFields;
		++pFields;

		XnChar strFileName[XN_FILE_MAX_PATH] = "";
		XnUInt32 nCharsWritten = 0;
		XnUInt32 nLength = 0;
		xnOSStrFormat(strFileName, XN_FILE_MAX_PATH, &nCharsWritten, "FirmwareDebug.");
		nLength += nCharsWritten;

		for (XnUInt16 i = 0; i < nFields; ++i)
		{
			xnOSStrFormat(strFileName + nLength, XN_FILE_MAX_PATH - nLength, &nCharsWritten, "%02d.", *pFields);
			++pFields;
			nLength += nCharsWritten;
		}

		xnOSStrFormat(strFileName + nLength, XN_FILE_MAX_PATH - nLength, &nCharsWritten, ".raw");

		xnDumpFileClose(m_pDump);
		m_pDump = xnDumpFileOpenEx("FirmwareDebug", TRUE, TRUE, strFileName);

		const XnUChar* pDataStart = (const XnUChar*)pFields;
		nDataSize -= XnUInt32(pDataStart - pData);
		pData = pDataStart;
	}

	xnDumpFileWriteBuffer(m_pDump, pData, nDataSize);

	if (nDataOffset + nDataSize == pHeader->nBufSize)
	{
		// end of data
		xnDumpFileClose(m_pDump);
		m_pDump = NULL;
	}
}