XnStatus XnSensorDepthGenerator::Init() { XnStatus nRetVal = XN_STATUS_OK; nRetVal = XnSensorMapGenerator::Init(); XN_IS_STATUS_OK(nRetVal); const XnChar* aProps[] = { XN_STREAM_PROPERTY_ZERO_PLANE_DISTANCE, XN_STREAM_PROPERTY_ZERO_PLANE_PIXEL_SIZE, NULL }; m_hRWPropCallback; nRetVal = RegisterToProps(RealWorldTranslationPropChanged, this, m_hRWPropCallback, aProps); XN_IS_STATUS_OK(nRetVal); nRetVal = UpdateRealWorldTranslationData(); if (nRetVal != XN_STATUS_OK) { UnregisterFromProps(m_hRWPropCallback); m_hRWPropCallback = NULL; return (nRetVal); } return (XN_STATUS_OK); }
XnStatus XnSensorDevice::RegisterToErrorStateChange(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) { const XnChar* aProps[] = { XN_MODULE_PROPERTY_ERROR_STATE, NULL }; return RegisterToProps(handler, pCookie, hCallback, aProps); }
XnStatus XnSensorDepthGenerator::RegisterToViewPointChange(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) { const XnChar* aProps[] = { XN_STREAM_PROPERTY_REGISTRATION, NULL }; return RegisterToProps(handler, pCookie, hCallback, aProps); }
XnStatus XnSensorDepthGenerator::RegisterToFrameSyncChange(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) { const XnChar* aProps[] = { XN_MODULE_PROPERTY_FRAME_SYNC, NULL }; return RegisterToProps(handler, pCookie, hCallback, aProps, XN_MODULE_NAME_DEVICE); }
XnStatus XnSensorGenerator::RegisterToGenerationRunningChange(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) { const XnChar* aProps[] = { XN_STREAM_PROPERTY_STATE, NULL }; return RegisterToProps(handler, pCookie, hCallback, aProps); }
XnStatus XnSensorDepthGenerator::RegisterToUserPositionChange(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) { const XnChar* aProps[] = { XN_STREAM_PROPERTY_AGC_BIN, NULL }; return RegisterToProps(handler, pCookie, hCallback, aProps); }
XnStatus XnSensorGenerator::RegisterToMirrorChange(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) { const XnChar* aProps[] = { XN_MODULE_PROPERTY_MIRROR, NULL }; return RegisterToProps(handler, pCookie, hCallback, aProps); }
XnStatus XnSensorImageGenerator::RegisterToPowerLineFrequencyChange( XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback ) { const XnChar* strProps[] = { XN_STREAM_PROPERTY_FLICKER, NULL }; return RegisterToProps(handler, pCookie, hCallback, strProps); }
XnStatus XnSensorImageGenerator::RegisterToValueChange( const XnChar* strCap, XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback ) { const XnChar* strProps[] = { strCap, NULL }; return RegisterToProps(handler, pCookie, hCallback, strProps); }
XnStatus XnSensorImageGenerator::RegisterToPixelFormatChange(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) { const XnChar* aProps[] = { XN_STREAM_PROPERTY_OUTPUT_FORMAT, NULL }; return RegisterToProps(handler, pCookie, hCallback, aProps); }
XnStatus XnSensorProductionNode::RegisterToLockChange(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) { const XnChar* aProps[] = { XN_MODULE_PROPERTY_LOCK, NULL }; return RegisterToProps(handler, pCookie, hCallback, aProps); }
XnStatus XnServerSensorInvoker::Init(const XnChar* strDevicePath, const XnChar* strGlobalConfigFile, XnUInt32 nAdditionalProps, XnProperty** aAdditionalProps) { XnStatus nRetVal = XN_STATUS_OK; nRetVal = m_sensor.SetGlobalConfigFile(strGlobalConfigFile); XN_IS_STATUS_OK(nRetVal); nRetVal = xnOSCreateCriticalSection(&m_hSensorLock); XN_IS_STATUS_OK(nRetVal); XnDeviceConfig config; config.DeviceMode = XN_DEVICE_MODE_READ; config.cpConnectionString = strDevicePath; config.pInitialValues = NULL; config.SharingMode = XN_DEVICE_SHARED; nRetVal = m_sensor.Init(&config); XN_IS_STATUS_OK(nRetVal); nRetVal = m_sensor.DeviceModule()->AddProperties(aAdditionalProps, nAdditionalProps); XN_IS_STATUS_OK(nRetVal); XnProperty* aInvokerAdditionalProps[] = { &m_numberOfBuffers, &m_allowOtherUsers }; nRetVal = m_sensor.DeviceModule()->AddProperties(aInvokerAdditionalProps, sizeof(aInvokerAdditionalProps) / sizeof(aInvokerAdditionalProps[0])); XN_IS_STATUS_OK(nRetVal); // configure from global file nRetVal = m_sensor.ConfigureModuleFromGlobalFile(XN_MODULE_NAME_DEVICE, XN_SENSOR_SERVER_CONFIG_FILE_SECTION); XN_IS_STATUS_OK(nRetVal); // register to events XnCallbackHandle hDummy = NULL; nRetVal = m_sensor.OnStreamCollectionChangedEvent().Register(StreamCollectionChangedCallback, this, hDummy); XN_IS_STATUS_OK(nRetVal); nRetVal = m_sensor.OnNewStreamDataEvent().Register(NewStreamDataCallback, this, hDummy); XN_IS_STATUS_OK(nRetVal); // register to all properties XN_PROPERTY_SET_CREATE_ON_STACK(props); nRetVal = m_sensor.DeviceModule()->GetAllProperties(&props); XN_IS_STATUS_OK(nRetVal); nRetVal = RegisterToProps(&props); XN_IS_STATUS_OK(nRetVal); nRetVal = xnOSCreateEvent(&m_hNewDataEvent, FALSE); XN_IS_STATUS_OK(nRetVal); // start reader thread nRetVal = xnOSCreateThread(ReaderThread, this, &m_hReaderThread); XN_IS_STATUS_OK(nRetVal); return (XN_STATUS_OK); }
XnStatus XnSensorAudioGenerator::RegisterToWaveOutputModeChanges(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) { const XnChar* aProps[] = { XN_STREAM_PROPERTY_SAMPLE_RATE, XN_STREAM_PROPERTY_NUMBER_OF_CHANNELS, NULL }; return RegisterToProps(handler, pCookie, hCallback, aProps); }
XnStatus XnServerSensorInvoker::OnStreamAdded(const XnChar* StreamName) { XnStatus nRetVal = XN_STATUS_OK; // get all props XN_PROPERTY_SET_CREATE_ON_STACK(props); nRetVal = m_sensor.GetAllProperties(&props, FALSE, StreamName); XN_IS_STATUS_OK(nRetVal); // register to all props nRetVal = RegisterToProps(&props); XN_IS_STATUS_OK(nRetVal); XnActualPropertiesHash* pStreamProps = props.pData->Begin()->Value(); // create stream data SensorInvokerStream serverStream; xnOSMemSet(&serverStream, 0, sizeof(serverStream)); strcpy(serverStream.strType, StreamName); XN_VALIDATE_NEW(serverStream.pNewDataEvent, NewStreamDataEvent); // check if this is a frame stream XnProperty* pIsFrameBased; nRetVal = pStreamProps->Get(XN_STREAM_PROPERTY_IS_FRAME_BASED, pIsFrameBased); if (nRetVal == XN_STATUS_OK) { XnActualIntProperty* pIntProp = (XnActualIntProperty*)pIsFrameBased; serverStream.bFrameStream = (pIntProp->GetValue() == TRUE); } if (serverStream.bFrameStream) { // create the "shared memory name" property XN_VALIDATE_NEW(serverStream.pSharedMemoryName, XnActualStringProperty, XN_STREAM_PROPERTY_SHARED_BUFFER_NAME); // and add it to the stream XnDeviceStream* pStream; nRetVal = m_sensor.GetStream(StreamName, &pStream); if (nRetVal != XN_STATUS_OK) { XN_DELETE(serverStream.pNewDataEvent); XN_DELETE(serverStream.pSharedMemoryName); return nRetVal; } nRetVal = pStream->AddProperty(serverStream.pSharedMemoryName); if (nRetVal != XN_STATUS_OK) { XN_DELETE(serverStream.pNewDataEvent); XN_DELETE(serverStream.pSharedMemoryName); return nRetVal; } // create a shared memory buffer pool for it nRetVal = SetStreamSharedMemory(&serverStream); if (nRetVal != XN_STATUS_OK) { XN_DELETE(serverStream.pNewDataEvent); XN_DELETE(serverStream.pSharedMemoryName); return nRetVal; } } // create a stream data object for the stream nRetVal = m_sensor.CreateStreamData(StreamName, &serverStream.pStreamData); if (nRetVal != XN_STATUS_OK) { XN_DELETE(serverStream.pNewDataEvent); XN_DELETE(serverStream.pSharedMemoryName); return (nRetVal); } // and add it to our list of streams nRetVal = m_streams.Set(StreamName, serverStream); if (nRetVal != XN_STATUS_OK) { XN_DELETE(serverStream.pNewDataEvent); XN_DELETE(serverStream.pSharedMemoryName); return (nRetVal); } return (XN_STATUS_OK); }