williamr@2: /* williamr@2: * Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: * All rights reserved. williamr@2: * This component and the accompanying materials are made available williamr@4: * under the terms of "Eclipse Public License v1.0" williamr@2: * which accompanies this distribution, and is available williamr@4: * at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@2: * williamr@2: * Initial Contributors: williamr@2: * Nokia Corporation - initial contribution. williamr@2: * williamr@2: * Contributors: williamr@2: * williamr@2: * Description: Sensor data compensator class definition. williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: #ifndef C_SENSORDATACOMPENSATOR_H williamr@2: #define C_SENSORDATACOMPENSATOR_H williamr@2: williamr@2: #include williamr@2: #include williamr@2: williamr@2: /** williamr@2: * Class provides operations to compensate sensor data. williamr@2: * williamr@2: * Usage: williamr@2: * williamr@2: * @code williamr@2: * #include williamr@2: * #include williamr@2: * williamr@2: * // Client creates the compensator instance as a member. williamr@2: * // This compensates the axis data received from accelerometer. williamr@2: * // The data is compensated according to both device and UI rotation. williamr@2: * // See sensrvtypes.h and sensordatacompensationtypes.h for more information. williamr@2: * iDataCompensator = CSensorDataCompensator::NewL( williamr@2: * KSensrvChannelTypeIdAccelerometerXYZAxisData, williamr@2: * ESensorCompensateDeviceAndUIOrientation ); williamr@2: * williamr@2: * // Data compensation is done in client's MSensrvDataListener::DataReceived() implementation williamr@2: * // where 'iSensorChannel' contains the accelerometer channel instance. williamr@2: * TPckgBuf dataPckgBuf; williamr@2: * // Get data from accelerometer ( iSensorChannel->GetData( dataPckgBuf ) ) williamr@2: * TInt err( iDataCompensator->Compensate( dataPckgBuf ) ); williamr@2: * williamr@2: * // Client deletes the compensator instance in destructor. williamr@2: * delete iDataCompensator; williamr@2: * williamr@2: * @endcode williamr@2: * williamr@2: * @lib sensordatacompensator.lib williamr@2: * @since S60 5.1 williamr@2: */ williamr@2: williamr@2: NONSHARABLE_CLASS( CSensorDataCompensator ): public CBase williamr@2: { williamr@2: public: williamr@2: williamr@2: /** williamr@2: * Two-phase constructor williamr@2: * williamr@2: * @since S60 5.1 williamr@2: * @param aDataType Specifies the data type to be compensated. williamr@2: * @param aType Specifies the type of compensation. See TSensorCompensationType. williamr@2: * @return CSensorDataCompensator* Pointer to created object williamr@2: */ williamr@2: IMPORT_C static CSensorDataCompensator* NewL( TSensrvChannelDataTypeId aDataType, williamr@2: TSensorCompensationType aType ); williamr@2: williamr@2: public: williamr@2: williamr@2: /** williamr@2: * Compensates sensor data. williamr@2: * williamr@2: * @since S60 5.1 williamr@2: * @param aData Reference to descriptor where sensor data locates. williamr@2: * On return contains compensated data if compensation successful. williamr@2: * The following packages can be used in compensating; williamr@2: * TSensrvAccelerometerAxisData williamr@2: * TSensrvMagnetometerAxisData williamr@2: * TSensrvMagneticNorthData williamr@2: * TSensrvTappingData williamr@2: * @return TInt KErrNone - Compensation successful. williamr@2: * KErrArgument - Input aData does not match data type. williamr@2: * KErrNotSupported - Compensation not supported for data type. williamr@2: * KErrNotReady - Not ready for compensation. williamr@2: * KErrCorrupt - Configured compensation values are invalid. williamr@2: */ williamr@2: virtual TInt Compensate( TDes8& aData ) = 0; williamr@2: williamr@2: /** williamr@2: * Used to get the compensated channel data type. williamr@2: * williamr@2: * @since S60 5.1 williamr@2: * @return TSensrvChannelDataTypeId williamr@2: * The compensated data type. williamr@2: */ williamr@2: virtual TSensrvChannelDataTypeId GetChannelDataType( ) const = 0; williamr@2: williamr@2: /** williamr@2: * Used to get the compensation type. williamr@2: * williamr@2: * @since S60 5.1 williamr@2: * @return TSensorCompensationType williamr@2: * The used compensation type. williamr@2: */ williamr@2: virtual TSensorCompensationType GetCompensationType( ) const = 0; williamr@2: williamr@2: }; williamr@2: williamr@2: williamr@2: #endif // C_SENSORDATACOMPENSATOR_H