diff options
Diffstat (limited to 'LibOVR/Src/OVR_Sensor2Impl.cpp')
-rw-r--r-- | LibOVR/Src/OVR_Sensor2Impl.cpp | 96 |
1 files changed, 46 insertions, 50 deletions
diff --git a/LibOVR/Src/OVR_Sensor2Impl.cpp b/LibOVR/Src/OVR_Sensor2Impl.cpp index fa5d6e9..95d486c 100644 --- a/LibOVR/Src/OVR_Sensor2Impl.cpp +++ b/LibOVR/Src/OVR_Sensor2Impl.cpp @@ -386,9 +386,7 @@ bool Sensor2DeviceImpl::getMagCalibrationReport(MagCalibrationReport* data) bool Sensor2DeviceImpl::SetPositionCalibrationReport(const PositionCalibrationReport& data) { - Lock::Locker lock(&IndexedReportLock); - - bool result; + bool result; if (!GetManagerImpl()->GetThreadQueue()-> PushCallAndWaitResult(this, &Sensor2DeviceImpl::setPositionCalibrationReport, &result, data)) { @@ -411,20 +409,6 @@ bool Sensor2DeviceImpl::setPositionCalibrationReport(const PositionCalibrationRe return GetInternalDevice()->SetFeatureReport(pci.Buffer, PositionCalibrationImpl::PacketSize); } -bool Sensor2DeviceImpl::GetPositionCalibrationReport(PositionCalibrationReport* data) -{ - Lock::Locker lock(&IndexedReportLock); - - bool result; - if (!GetManagerImpl()->GetThreadQueue()-> - PushCallAndWaitResult(this, &Sensor2DeviceImpl::getPositionCalibrationReport, &result, data)) - { - return false; - } - - return result; -} - bool Sensor2DeviceImpl::getPositionCalibrationReport(PositionCalibrationReport* data) { UByte version = GetDeviceInterfaceVersion(); @@ -454,10 +438,20 @@ bool Sensor2DeviceImpl::getPositionCalibrationReport(PositionCalibrationReport* bool Sensor2DeviceImpl::GetAllPositionCalibrationReports(Array<PositionCalibrationReport>* data) { - Lock::Locker lock(&IndexedReportLock); + bool result; + if (!GetManagerImpl()->GetThreadQueue()-> + PushCallAndWaitResult(this, &Sensor2DeviceImpl::getAllPositionCalibrationReports, &result, data)) + { + return false; + } + + return result; +} +bool Sensor2DeviceImpl::getAllPositionCalibrationReports(Array<PositionCalibrationReport>* data) +{ PositionCalibrationReport pc; - bool result = GetPositionCalibrationReport(&pc); + bool result = getPositionCalibrationReport(&pc); if (!result) return false; @@ -467,7 +461,7 @@ bool Sensor2DeviceImpl::GetAllPositionCalibrationReports(Array<PositionCalibrati for (int i = 0; i < positions; i++) { - result = GetPositionCalibrationReport(&pc); + result = getPositionCalibrationReport(&pc); if (!result) return false; OVR_ASSERT(pc.NumPositions == positions); @@ -697,8 +691,6 @@ bool Sensor2DeviceImpl::getKeepAliveMuxReport(KeepAliveMuxReport* data) bool Sensor2DeviceImpl::SetTemperatureReport(const TemperatureReport& data) { - Lock::Locker lock(&IndexedReportLock); - // direct call if we are already on the device manager thread if (GetCurrentThreadId() == GetManagerImpl()->GetThreadId()) { @@ -721,32 +713,41 @@ bool Sensor2DeviceImpl::setTemperatureReport(const TemperatureReport& data) return GetInternalDevice()->SetFeatureReport(ti.Buffer, TemperatureImpl::PacketSize); } -bool Sensor2DeviceImpl::GetTemperatureReport(TemperatureReport* data) +bool Sensor2DeviceImpl::getTemperatureReport(TemperatureReport* data) { - Lock::Locker lock(&IndexedReportLock); + TemperatureImpl ti; + if (GetInternalDevice()->GetFeatureReport(ti.Buffer, TemperatureImpl::PacketSize)) + { + ti.Unpack(); + *data = ti.Settings; + return true; + } + return false; +} + +bool Sensor2DeviceImpl::GetAllTemperatureReports(Array<Array<TemperatureReport> >* data) +{ // direct call if we are already on the device manager thread if (GetCurrentThreadId() == GetManagerImpl()->GetThreadId()) { - return getTemperatureReport(data); + return getAllTemperatureReports(data); } - bool result; - if (!GetManagerImpl()->GetThreadQueue()-> - PushCallAndWaitResult(this, &Sensor2DeviceImpl::getTemperatureReport, &result, data)) - { - return false; - } + bool result; + if (!GetManagerImpl()->GetThreadQueue()-> + PushCallAndWaitResult(this, &Sensor2DeviceImpl::getAllTemperatureReports, &result, data)) + { + return false; + } - return result; + return result; } -bool Sensor2DeviceImpl::GetAllTemperatureReports(Array<Array<TemperatureReport> >* data) +bool Sensor2DeviceImpl::getAllTemperatureReports(Array<Array<TemperatureReport> >* data) { - Lock::Locker lock(&IndexedReportLock); - TemperatureReport t; - bool result = GetTemperatureReport(&t); + bool result = getTemperatureReport(&t); if (!result) return false; @@ -759,7 +760,7 @@ bool Sensor2DeviceImpl::GetAllTemperatureReports(Array<Array<TemperatureReport> for (int i = 0; i < bins; i++) for (int j = 0; j < samples; j++) { - result = GetTemperatureReport(&t); + result = getTemperatureReport(&t); if (!result) return false; OVR_ASSERT(t.NumBins == bins && t.NumSamples == samples); @@ -769,19 +770,6 @@ bool Sensor2DeviceImpl::GetAllTemperatureReports(Array<Array<TemperatureReport> return true; } -bool Sensor2DeviceImpl::getTemperatureReport(TemperatureReport* data) -{ - TemperatureImpl ti; - if (GetInternalDevice()->GetFeatureReport(ti.Buffer, TemperatureImpl::PacketSize)) - { - ti.Unpack(); - *data = ti.Settings; - return true; - } - - return false; -} - bool Sensor2DeviceImpl::GetGyroOffsetReport(GyroOffsetReport* data) { // direct call if we are already on the device manager thread @@ -1125,4 +1113,12 @@ double Sensor2DeviceImpl::OnTicks(double tickSeconds) return NextKeepAliveTickSeconds - tickSeconds; } +/* +// TBD: don't report calibration for now, until we figure out the logic between camera and mag yaw correction +bool Sensor2DeviceImpl::IsMagCalibrated() +{ + return pCalibration->IsMagCalibrated(); +} +*/ + } // namespace OVR |