File: Tutorial.EnumerationErrors.txt

package info (click to toggle)
openni 1.5.4.0%2Bdfsg-8
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 45,580 kB
  • sloc: cpp: 116,706; ansic: 58,807; sh: 10,287; cs: 7,698; java: 7,402; python: 1,547; makefile: 492; xml: 167
file content (30 lines) | stat: -rw-r--r-- 1,389 bytes parent folder | download | duplicates (7)
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
/**
@page tut_enumeration_errors Understanding why enumeration failed

Sometimes an application enumerates for a specific node, and gets zero results. Aside for the obvious reason where no module implementing this node type is installed, other reasons may occur - a module might be installed but have no license, or a needed hardware device is currently disconnected.

OpenNI enables the application to get a full list of modules that failed to enumerate, and why each one failed. The list of 'failed' modules is obtained by using the @ref xn::EnumerationErrors object.

For example, the following code tries to create a @ref xn::HandsGenerator node, and if enumeration failed, checks all errors:
@code
xn::EnumerationErrors errors;
xn::HandsGenerator handsGen;
nRetVal = context.CreateAnyProductionTree(XN_NODE_TYPE_HANDS, NULL, handsGen, &errors);
if (nRetVal == XN_STATUS_NO_NODE_PRESENT)
{
	// Iterate over enumeration errors, and print each one
	for (xn::EnumerationErrors::Iterator it = errors.Begin(); it != errors.End(); ++it)
	{
		XnChar strDesc[512];
		xnProductionNodeDescriptionToString(&it.Description(), strDesc, 512);
		printf("%s failed to enumerate: %s\n", xnGetStatusString(it.Error()));
	}
	return (nRetVal);
}
else if (nRetVal != XN_STATUS_OK)
{
	printf("Create failed: %s\n", xnGetStatusString(nRetVal));
	return (nRetVal);
}
@endcode
*/