uiacceltk/hitchcock/backgroundanim/src/sensor.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 27 Apr 2010 17:34:42 +0300
branchRCL_3
changeset 17 3ac8bf5c5014
parent 0 15bf7259bb7c
permissions -rw-r--r--
Revision: 201016 Kit: 201017

#include <sensrvaccelerometersensor.h>

#include "sensor.h"


CSensorListener* CSensorListener::NewL(MSensrvDataListener* aDataListener, TUint32 aSensorType)
    {
    CSensorListener* self = new (ELeave) CSensorListener(aDataListener);
    CleanupStack::PushL(self);
    self->ConstructL(aSensorType);
    CleanupStack::Pop();
    return self;    
    }
    
void CSensorListener::ConstructL(TUint32 aSensorType)
    {
    CSensrvChannelFinder* sensrvChannelFinder = CSensrvChannelFinder::NewLC();
 
    RSensrvChannelInfoList channelInfoList;
    CleanupClosePushL(channelInfoList);
 
    TSensrvChannelInfo mySearchConditions;
 
    mySearchConditions.iChannelType = aSensorType;
    
    sensrvChannelFinder->FindChannelsL(channelInfoList,mySearchConditions);
 
    if (channelInfoList.Count())
        {
        iSensrvChannel = CSensrvChannel::NewL(channelInfoList[0]);
        }
 
    channelInfoList.Close();
    CleanupStack::Pop( &channelInfoList );
    CleanupStack::PopAndDestroy( sensrvChannelFinder );
    }
    
CSensorListener::CSensorListener(MSensrvDataListener* aDataListener) : iDataListener(aDataListener)
    {
    }
    
CSensorListener::~CSensorListener()
    {
    StopListening();        
    delete iSensrvChannel;
    
    iSensrvChannel = NULL;
    }

void CSensorListener::StopListening()
    {
    if (iSensrvChannel && iListening)
        {
        iSensrvChannel->StopDataListening();
        iSensrvChannel->CloseChannel();
        iListening = EFalse;
        }
    }
    
void CSensorListener::StartListeningL()
    {
    if (iSensrvChannel && !iListening)
        {
        iSensrvChannel->OpenChannelL();    
        iSensrvChannel->StartDataListeningL( iDataListener, 5,10,0);
        iListening = ETrue;
        }
    }