diff -r 8b2d6d0384b0 -r d9aefe59d544 camerauis/cameraxui/cxengine/src/sensor/xqaccsensor_p.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/camerauis/cameraxui/cxengine/src/sensor/xqaccsensor_p.cpp Fri Apr 16 14:51:30 2010 +0300 @@ -0,0 +1,147 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ +#include "xqaccsensor_p.h" +#include "xqaccsensor.h" +#include +#include + +XQAccelerationSensorPrivate::XQAccelerationSensorPrivate(XQSensor& qq) : + XQSensorPrivate(qq) +{ +} + +XQAccelerationSensorPrivate::~XQAccelerationSensorPrivate() +{ + close(); + delete iXyzAxisChannel; +} + +void XQAccelerationSensorPrivate::open() +{ + TRAP(iError, + if(!iXyzAxisChannel) { + iXyzAxisChannel = CreateChannelL(KSensrvChannelTypeIdAccelerometerXYZAxisData); + } + iXyzAxisChannel->OpenChannelL(); + ) +} + +void XQAccelerationSensorPrivate::close() +{ + if (iXyzAxisChannel) { + iXyzAxisChannel->CloseChannel(); + } +} + +void XQAccelerationSensorPrivate::startReceiving() +{ + if (iXyzAxisChannel) { + TRAP(iError, + iXyzAxisChannel->StartDataListeningL(this, 1, 16, 0); + ) + } else { + iError = KErrNotReady; + } +} + +void XQAccelerationSensorPrivate::stopReceiving() +{ + if (iXyzAxisChannel) { + iXyzAxisChannel->StopDataListening(); + } +} + +void XQAccelerationSensorPrivate::DataReceived(CSensrvChannel& aChannel, + TInt aCount, TInt aDataLost) +{ + TSensrvChannelTypeId typeId = aChannel.GetChannelInfo().iChannelType; + if (typeId == KSensrvChannelTypeIdAccelerometerXYZAxisData) { + HandleXyzAxisData(aChannel, aCount, aDataLost); + } +} + +void XQAccelerationSensorPrivate::HandleXyzAxisData(CSensrvChannel& aChannel, TInt aCount, TInt /*aDataLost*/) +{ + for(TInt i = 0; i < aCount; i++) { + TPckgBuf dataBuf; + if (aChannel.GetData(dataBuf) == KErrNone) { + TSensrvAccelerometerAxisData data = dataBuf(); + for (int i = iFilters.size() - 1; i >= 0; --i) { + XQAbstractAccelerationSensorFilter* filter = iFilters.at(i); + if (filter->filter(data.iAxisX, data.iAxisY, data.iAxisZ)) + break; + } + iXAcceleration = data.iAxisX; + iYAcceleration = data.iAxisY; + iZAcceleration = data.iAxisZ; + } + } +} + +XQSensor::Error XQAccelerationSensorPrivate::error() const +{ + switch (iError) { + case KErrNone: + return XQSensor::NoError; + case KErrNoMemory: + return XQSensor::OutOfMemoryError; + case KErrNotFound: + return XQSensor::NotFoundError; + default: + return XQSensor::UnknownError; + } +} + +void XQAccelerationSensorPrivate::addFilter(XQAbstractAccelerationSensorFilter& filter) +{ + iFilters.append(&filter); +} + +QList& XQAccelerationSensorPrivate::filters() +{ + return iFilters; +} + +int XQAccelerationSensorPrivate::xAcceleration() const +{ + return iXAcceleration; +} + +int XQAccelerationSensorPrivate::yAcceleration() const +{ + return iYAcceleration; +} + +int XQAccelerationSensorPrivate::zAcceleration() const +{ + return iZAcceleration; +} + +bool XQAccelerationDataPostFilter::filter(int& xAcceleration, int& yAcceleration, int& zAcceleration) +{ + const int maxAcceleration = 127; //for framework + xAcceleration = xAcceleration * 100 / maxAcceleration; + yAcceleration = yAcceleration * 100 / maxAcceleration; + zAcceleration = zAcceleration * 100 / maxAcceleration; + return false; +} + +XQAccelerationDataPostFilter::XQAccelerationDataPostFilter() +{ +} + +// End of file