systemswstubs/ssyreference/src/ssyreferencechanneldataprovider.cpp
changeset 43 e71858845f73
parent 40 b7e5ed8c1342
child 46 e1758cbb96ac
--- a/systemswstubs/ssyreference/src/ssyreferencechanneldataprovider.cpp	Tue Sep 07 08:19:48 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,303 +0,0 @@
-/*
-* Copyright (c) 2006-2008 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:  Reference implementation of SSY Channel Data Provider interface
-*
-*/
-
-
-#include "ssyreferencechanneldataprovider.h"
-#include "ssyreferencetrace.h"
-#include "ssyreferencechannel.h"
-#include "ssyreferencecontrol.h"
-#include "ssyreferencecmdhandler.h"
-#include "ssycallback.h"
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// CSsyReferenceChannelDataProvider C++ constructor
-// ---------------------------------------------------------------------------
-//
-CSsyReferenceChannelDataProvider::CSsyReferenceChannelDataProvider( CSsyReferenceChannel& aChannel ) :
-    iChannel( aChannel )
-    {
-    COMPONENT_TRACE( ( _L( "SSY Reference Plugin - CSsyReferenceChannelDataProvider::CSsyReferenceChannelDataProvider()" ) ) );
-    COMPONENT_TRACE( ( _L( "SSY Reference Plugin - CSsyReferenceChannelDataProvider::CSsyReferenceChannelDataProvider() - return" ) ) );
-    }
-
-
-// ---------------------------------------------------------------------------
-// Symbian 2nd phase constructor
-// ---------------------------------------------------------------------------
-//
-void CSsyReferenceChannelDataProvider::ConstructL()
-    {
-    COMPONENT_TRACE( ( _L( "SSY Reference Plugin - CSsyReferenceChannelDataProvider::ConstructL()" ) ) );
-    COMPONENT_TRACE( ( _L( "SSY Reference Plugin - CSsyReferenceChannelDataProvider::ConstructL() - return" ) ) );
-    }
-
-
-// ---------------------------------------------------------------------------
-// CSsyReferenceChannelDataProvider::NewL
-// ---------------------------------------------------------------------------
-//
-CSsyReferenceChannelDataProvider* CSsyReferenceChannelDataProvider::NewL( CSsyReferenceChannel& aChannel )
-    {
-    COMPONENT_TRACE( ( _L( "SSY Reference Plugin - CSsyReferenceChannelDataProvider::NewL()" ) ) );
-    CSsyReferenceChannelDataProvider* self = new ( ELeave ) CSsyReferenceChannelDataProvider( aChannel );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    COMPONENT_TRACE( ( _L( "SSY Reference Plugin - CSsyReferenceChannelDataProvider::NewL() - return" ) ) );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// Destructor
-// ---------------------------------------------------------------------------
-//
-CSsyReferenceChannelDataProvider::~CSsyReferenceChannelDataProvider()
-    {
-    COMPONENT_TRACE( ( _L( "SSY Reference Plugin - CSsyReferenceChannelDataProvider::~CSsyReferenceChannelDataProvider()" ) ) );
-    COMPONENT_TRACE( ( _L( "SSY Reference Plugin - CSsyReferenceChannelDataProvider::~CSsyReferenceChannelDataProvider() - return" ) ) );
-    }
-
-// ---------------------------------------------------------------------------
-// CSsyReferenceChannelDataProvider::StartChannelDataL
-// ---------------------------------------------------------------------------
-//
-void CSsyReferenceChannelDataProvider::StartChannelDataL( 
-    const TSensrvChannelId aChannelId, 
-    TUint8* aBuffer, 
-    TInt aCount )
-    {
-    COMPONENT_TRACE( ( _L( "SSY Reference Plugin - CSsyReferenceChannelDataProvider::StartChannelDataL()" ) ) );
-
-    if ( iChannel.ChannelId() != aChannelId )
-        {
-        User::Leave( KErrNotFound );
-        }
-
-    // Store buffer pointer
-    iDataBuffer = aBuffer;
-    iMaxCount = aCount;
-    iDataCount = 0;
-
-    // Udpate channel state
-    iChannel.UpdateState( CSsyReferenceChannel::ESsyReferenceChannelReceiving );
-
-    // Start receiving
-    iChannel.CommandHandler().ProcessCommand( TSsyReferenceMsg( aChannelId, ESsyReferenceStartChannelData ) );
-
-    COMPONENT_TRACE( ( _L( "SSY Reference Plugin - CSsyReferenceChannelDataProvider::StartChannelDataL() - return" ) ) );
-    }
-
-// ---------------------------------------------------------------------------
-// CSsyReferenceChannelDataProvider::StopChannelDataL
-// ---------------------------------------------------------------------------
-//
-void CSsyReferenceChannelDataProvider::StopChannelDataL( const TSensrvChannelId aChannelId )
-    {
-    COMPONENT_TRACE( ( _L( "SSY Reference Plugin - CSsyReferenceChannelDataProvider::StopChannelDataL()" ) ) );
-
-    // Leave if wrong channel
-    if ( iChannel.ChannelId() != aChannelId )
-        {
-        User::Leave( KErrNotFound );
-        }
-
-    // Udpate channel state
-    iChannel.UpdateState( CSsyReferenceChannel::ESsyReferenceChannelOpen );
-
-    // Stop receiving
-    iChannel.CommandHandler().ProcessCommand( TSsyReferenceMsg( aChannelId, ESsyReferenceStopChannelData ) );
-
-    COMPONENT_TRACE( ( _L( "SSY Reference Plugin - CSsyReferenceChannelDataProvider::StopChannelDataL() - return" ) ) );
-    }
-
-// ---------------------------------------------------------------------------
-// CSsyReferenceChannelDataProvider::ForceBufferFilledL
-// ---------------------------------------------------------------------------
-//
-void CSsyReferenceChannelDataProvider::ForceBufferFilledL( const TSensrvChannelId aChannelId )
-    {
-    COMPONENT_TRACE( ( _L( "SSY Reference Plugin - CSsyReferenceChannelDataProvider::ForceBufferFilledL()" ) ) );
-
-    // Leave if wrong channel
-    if ( iChannel.ChannelId() != aChannelId )
-        {
-        User::Leave( KErrNotFound );
-        }
-
-    // Send current buffer. Channel keeps receiveing
-    SendBufferFilled();
-
-    COMPONENT_TRACE( ( _L( "SSY Reference Plugin - CSsyReferenceChannelDataProvider::ForceBufferFilledL() - return" ) ) );
-    }
-
-// -----------------------------------------------------------------------------
-// CSensrvTestCases::GetChannelDataProviderInterfaceL
-// -----------------------------------------------------------------------------
-//
-void CSsyReferenceChannelDataProvider::GetChannelDataProviderInterfaceL( TUid aInterfaceUid, 
-	                                        TAny*& aInterface )
-    {
-    aInterface = NULL;
-    
-	if ( aInterfaceUid.iUid == KSsyChannelDataProviderInterface1.iUid )
-		{
-		aInterface = reinterpret_cast<TAny*>(
-			static_cast<MSsyChannelDataProvider*>( this ) );
-		}
-    }
-    
-// ---------------------------------------------------------------------------
-// CSsyReferenceChannelDataProvider::ChannelDataReceived
-// ---------------------------------------------------------------------------
-//
-void CSsyReferenceChannelDataProvider::ChannelDataReceivedL( TSsyReferenceMsg* aMessage )
-    {
-    COMPONENT_TRACE( ( _L( "SSY Reference Plugin - CSsyReferenceChannelDataProvider::ChannelDataReceived()" ) ) );
-    
-    // Get base class from message
-    TSsyRefChannelDataBase* dataItemBase = aMessage->DataItem();
-
-    if ( !dataItemBase )
-        {
-        User::Leave( KErrArgument );
-        }
-
-    // get size of the object
-    TInt size( dataItemBase->Size() );
-
-    // First, resolve data item type
-    switch ( dataItemBase->ChannelDataType() )
-        {
-        case TSsyRefChannelDataBase::ESsyRefChannelTypeTapping:
-            {
-            // Cast data item base to tapping data item
-            TSsyRefChannelDataTapping* tappingData = static_cast<TSsyRefChannelDataTapping*>( dataItemBase );
-            TSensrvTappingData senSrvTapping;
-            senSrvTapping.iTimeStamp = tappingData->Timestamp();
-            senSrvTapping.iDirection = tappingData->Direction();
-
-            // Add mapped data item into buffer
-            AddDataToBuffer( reinterpret_cast<TUint8*>( &senSrvTapping ), size );
-            break;
-            }
-        case TSsyRefChannelDataBase::ESsyRefChannelTypeAxis:
-            {
-            // Cast data item base to Axis data item
-            TSsyRefChannelDataAxis* axisData = static_cast<TSsyRefChannelDataAxis*>( dataItemBase );
-            TSensrvAccelerometerAxisData senSrvAxis;
-            senSrvAxis.iTimeStamp = axisData->Timestamp();
-            senSrvAxis.iAxisX = axisData->XAxis();
-            senSrvAxis.iAxisY = axisData->YAxis();
-            senSrvAxis.iAxisZ = axisData->ZAxis();
-            
-            // Add data to buffer
-            AddDataToBuffer( reinterpret_cast<TUint8*>( &senSrvAxis ), size );
-            break;
-            }
-        case TSsyRefChannelDataBase::ESsyRefChannelTypeProximity:
-            {
-            // Cast data item base to tapping data item
-            TSsyRefChannelDataProximity* proximityData = static_cast<TSsyRefChannelDataProximity*>( dataItemBase );
-            TSensrvProximityData senSrvProximity;
-            senSrvProximity.iProximityState = ( TSensrvProximityData::TProximityState ) proximityData->ProximityState();
-
-            // Add mapped data item into buffer
-            AddDataToBuffer( reinterpret_cast<TUint8*>( &senSrvProximity ), size );
-            break;
-            }
-        case TSsyRefChannelDataBase::ESsyRefChannelTypeAmbientLight:
-            {
-            // Cast data item base to tapping data item
-            TSsyRefChannelDataAmbientLight* ambientLightData = static_cast<TSsyRefChannelDataAmbientLight*>( dataItemBase );
-            TSensrvAmbientLightData senSrvAmbientLight;
-            senSrvAmbientLight.iAmbientLight = ambientLightData->AmbientLightState();
-
-            // Add mapped data item into buffer
-            AddDataToBuffer( reinterpret_cast<TUint8*>( &senSrvAmbientLight ), size );
-            break;
-            }
-        case TSsyRefChannelDataBase::ESsyRefChannelTypeMagneticAxis:
-            {
-            // Cast data item base to Axis data item
-            TSsyRefChannelDataMagneticAxis* axisData = static_cast<TSsyRefChannelDataMagneticAxis*>( dataItemBase );
-            TSensrvMagnetometerAxisData senSrvAxis;
-            senSrvAxis.iTimeStamp = axisData->Timestamp();
-            senSrvAxis.iAxisXRaw = axisData->XAxis();
-            senSrvAxis.iAxisYRaw = axisData->YAxis();
-            senSrvAxis.iAxisZRaw = axisData->ZAxis();
-            senSrvAxis.iAxisXCalibrated = axisData->XAxisCalib();
-            senSrvAxis.iAxisYCalibrated = axisData->YAxisCalib();
-            senSrvAxis.iAxisZCalibrated = axisData->ZAxisCalib();
-            
-            // Add data to buffer
-            AddDataToBuffer( reinterpret_cast<TUint8*>( &senSrvAxis ), size );
-            break;
-            }
-        default:
-            {
-            // Unknown data item -> Leave
-            User::Leave( KErrUnknown );
-            }
-        }
-    
-    COMPONENT_TRACE( ( _L( "SSY Reference Plugin - CSsyReferenceChannelDataProvider::ChannelDataReceived() - return" ) ) );
-    }
-
-// ---------------------------------------------------------------------------
-// CSsyReferenceChannelDataProvider::AddDataToBuffer
-// ---------------------------------------------------------------------------
-//
-void CSsyReferenceChannelDataProvider::AddDataToBuffer( TUint8* aData, const TInt aSize )
-    {
-    COMPONENT_TRACE( ( _L( "SSY Reference Plugin - CSsyReferenceChannelDataProvider::AddDataToBuffer()" ) ) );
-    // Write data to buffer. If buffer is full, send notification to SensorServer
-
-    // Write data bytes one by one to buffer pointer. The actual buffer is in Sensor Server    
-    for ( TInt i = 0; i < aSize; i++ )
-        {
-        *iDataBuffer++ = *aData++;
-        }
-    
-    // Increase number of items count
-    iDataCount++;
-
-    // Check is maximum data count received
-    if ( iDataCount == iMaxCount )
-        {
-        // Send BufferFilled notification to Sensor server
-        SendBufferFilled();
-        }
-
-    COMPONENT_TRACE( ( _L( "SSY Reference Plugin - CSsyReferenceChannelDataProvider::AddDataToBuffer() - return" ) ) );
-    }
-
-// ---------------------------------------------------------------------------
-// CSsyReferenceChannelDataProvider::SendBufferFilled
-// ---------------------------------------------------------------------------
-//
-void CSsyReferenceChannelDataProvider::SendBufferFilled()
-    {
-    COMPONENT_TRACE( ( _L( "SSY Reference Plugin - CSsyReferenceChannelDataProvider::SendBufferFilled()" ) ) );
-    // Send BufferFilled notification to Sensor server
-    iChannel.SsyControl().SsyCallback().BufferFilled( iChannel.ChannelId(), iDataCount, iDataBuffer, iMaxCount );
-    iDataCount = 0;
-    COMPONENT_TRACE( ( _L( "SSY Reference Plugin - CSsyReferenceChannelDataProvider::SendBufferFilled() - return" ) ) );
-    }
-
-// End of file