Exemplo n.º 1
0
XN_C_API XnStatus xnLogInitSystem()
{
	// make sure xnOS is initialized (we need timers)
	XnStatus nRetVal = xnOSInit();
	if (nRetVal != XN_STATUS_OK && nRetVal != XN_STATUS_OS_ALREADY_INIT)
	{
		return (nRetVal);
	}

	if (g_xnLoggerData.m_csLogDir[0] == '\0')
	{
		XnChar csCurDir[XN_FILE_MAX_PATH];
		xnOSGetCurrentDir(csCurDir, XN_FILE_MAX_PATH);
		XnUInt32 nBytesWritten;
		xnOSStrFormat(g_xnLoggerData.m_csLogDir, XN_FILE_MAX_PATH, &nBytesWritten, "%s%s%s%s", csCurDir, XN_FILE_DIR_SEP, XN_LOG_DIR_NAME, XN_FILE_DIR_SEP);
	}

	if (g_xnLoggerData.m_csTime[0] == '\0')
	{
		time_t currtime;
		time(&currtime);
		strftime(g_xnLoggerData.m_csTime, sizeof(g_xnLoggerData.m_csTime)-1, "%Y_%m_%d__%H_%M_%S", localtime(&currtime)); 
	}

	xnLogConfigurationChanged();

	return (XN_STATUS_OK);
}
Exemplo n.º 2
0
XnStatus XnSensorClient::StartServerProcess()
{
	XnStatus nRetVal = XN_STATUS_OK;
	
	const XnChar* strServerDir;
	
#if (XN_PLATFORM == XN_PLATFORM_WIN32)
	strServerDir = ms_strDir;
#elif (XN_PLATFORM == XN_PLATFORM_LINUX_X86 || XN_PLATFORM == XN_PLATFORM_LINUX_ARM)
	strServerDir = "/Users/nick/ros/other/ni/ni/ps_engine/bin";
#endif

	// we'll start it in it's directory
	XnChar strCurrDir[XN_FILE_MAX_PATH];
	nRetVal = xnOSGetCurrentDir(strCurrDir, XN_FILE_MAX_PATH);
	XN_IS_STATUS_OK(nRetVal);

	nRetVal = xnOSSetCurrentDir(strServerDir);
	XN_IS_STATUS_OK(nRetVal);

	XnChar strProcessName[XN_FILE_MAX_PATH];
	sprintf(strProcessName, "%s%sXnSensorServer", strServerDir, XN_FILE_DIR_SEP);

#if (XN_PLATFORM == XN_PLATFORM_WIN32)
	XN_VALIDATE_STR_APPEND(strProcessName, ".exe", XN_FILE_MAX_PATH, nRetVal);
#endif

	const XnChar* strArguments[] = { m_strConfigDir };

	XN_PROCESS_ID procID;
	nRetVal = xnOSCreateProcess(strProcessName, 1, strArguments, &procID);

	// in any case, return to working dir
	xnOSSetCurrentDir(strCurrDir);

	// now check for errors
	XN_IS_STATUS_OK(nRetVal);

	return (XN_STATUS_OK);
}
Exemplo n.º 3
0
XnStatus XnSensorClient::TakeServerLocation()
{
	return xnOSGetCurrentDir(ms_strDir, XN_FILE_MAX_PATH);
}
Exemplo n.º 4
0
XnStatus Context::loadLibraries(const char* directoryName)
{
	XnStatus nRetVal;

	// Get a file list of Xiron devices

	XnInt32 nFileCount = 0;
	typedef XnChar FileName[XN_FILE_MAX_PATH];
	FileName* acsFileList = NULL;

#if (ONI_PLATFORM != ONI_PLATFORM_ANDROID_ARM)
	XnChar cpSearchString[XN_FILE_MAX_PATH] = "";

	xnLogVerbose(XN_MASK_ONI_CONTEXT, "Looking for drivers in drivers repository '%s'", directoryName);

	// Build the search pattern string
	XN_VALIDATE_STR_APPEND(cpSearchString, directoryName, XN_FILE_MAX_PATH, nRetVal);
	XN_VALIDATE_STR_APPEND(cpSearchString, XN_FILE_DIR_SEP, XN_FILE_MAX_PATH, nRetVal);
	XN_VALIDATE_STR_APPEND(cpSearchString, XN_SHARED_LIBRARY_PREFIX, XN_FILE_MAX_PATH, nRetVal);
	XN_VALIDATE_STR_APPEND(cpSearchString, XN_FILE_ALL_WILDCARD, XN_FILE_MAX_PATH, nRetVal);
	XN_VALIDATE_STR_APPEND(cpSearchString, XN_SHARED_LIBRARY_POSTFIX, XN_FILE_MAX_PATH, nRetVal);

	nRetVal = xnOSCountFiles(cpSearchString, &nFileCount);
	if (nRetVal != XN_STATUS_OK || nFileCount == 0)
	{
		xnLogError(XN_MASK_ONI_CONTEXT, "Found no drivers matching '%s'", cpSearchString);
		m_errorLogger.Append("Found no files matching '%s'", cpSearchString);
		return XN_STATUS_NO_MODULES_FOUND;
	}

	acsFileList = XN_NEW_ARR(FileName, nFileCount);
	nRetVal = xnOSGetFileList(cpSearchString, NULL, acsFileList, nFileCount, &nFileCount);
#else
	// Android
	nFileCount = 3;
	acsFileList = XN_NEW_ARR(FileName, nFileCount);
	strcpy(acsFileList[0], "libPS1080.so");
	strcpy(acsFileList[1], "libOniFile.so");
	strcpy(acsFileList[2], "libPSLink.so");
#endif

	// Save directory
	XnChar workingDir[XN_FILE_MAX_PATH];
	xnOSGetCurrentDir(workingDir, XN_FILE_MAX_PATH);
	// Change directory
	xnOSSetCurrentDir(directoryName);

	for (int i = 0; i < nFileCount; ++i)
	{
		DeviceDriver* pDeviceDriver = XN_NEW(DeviceDriver, acsFileList[i], m_frameManager, m_errorLogger);
		if (pDeviceDriver == NULL || !pDeviceDriver->isValid())
		{
			xnLogVerbose(XN_MASK_ONI_CONTEXT, "Couldn't use file '%s' as a device driver", acsFileList[i]);
			m_errorLogger.Append("Couldn't understand file '%s' as a device driver", acsFileList[i]);
			XN_DELETE(pDeviceDriver);
			continue;
		}
		OniCallbackHandle dummy;
		pDeviceDriver->registerDeviceConnectedCallback(deviceDriver_DeviceConnected, this, dummy);
		pDeviceDriver->registerDeviceDisconnectedCallback(deviceDriver_DeviceDisconnected, this, dummy);
		pDeviceDriver->registerDeviceStateChangedCallback(deviceDriver_DeviceStateChanged, this, dummy);
		if (!pDeviceDriver->initialize())
		{
			xnLogVerbose(XN_MASK_ONI_CONTEXT, "Couldn't use file '%s' as a device driver", acsFileList[i]);
			m_errorLogger.Append("Couldn't initialize device driver from file '%s'", acsFileList[i]);
			XN_DELETE(pDeviceDriver);
			continue;
		}
		m_cs.Lock();
		m_deviceDrivers.AddLast(pDeviceDriver);
		m_cs.Unlock();
	}

	// Return to directory
	xnOSSetCurrentDir(workingDir);

	if (m_deviceDrivers.Size() == 0)
	{
		xnLogError(XN_MASK_ONI_CONTEXT, "Found no valid drivers");
		m_errorLogger.Append("Found no valid drivers in '%s'", directoryName);
		return XN_STATUS_NO_MODULES_FOUND;
	}

	XN_DELETE_ARR(acsFileList);

	return XN_STATUS_OK;
}