genericpositioningplugins/locationnpppsy/src/npppsypositioner.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 15 Jul 2010 19:06:58 +0300
branchRCL_3
changeset 41 d746aee05493
parent 0 667063e416a2
permissions -rw-r--r--
Revision: 201025 Kit: 2010127

/*
* Copyright (c) 2006 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:  This is NPP PSY Positioning Plug-in ( PSY ).
*
*/



// INCLUDE FILES
#include <e32std.h>            
#include <implementationproxy.h>  // TImplementationProxy
#include <lbspositioninfo.h>      // TPositionInfoBase

#include "npppsypositioner.h"
#include "npppsyrequester.h"
#include "npppsylogging.h"
#include "npppsypanic.h"
#include "npppsy.hrh"


// LOCAL CONSTANTS AND MACROS
const TImplementationProxy KFactoryPtr =
    IMPLEMENTATION_PROXY_ENTRY( KNppPsyImplUid, CNppPsyPositioner::NewL );

// ========================= ==  == LOCAL FUNCTIONS ===============================

// Following function is required by Positioning Plug-in API at ordinal 1.

EXPORT_C const TImplementationProxy* ImplementationGroupProxy( 
    TInt& aTableCount )
    {
    aTableCount = 1;
    return &KFactoryPtr;
    }

// ========================== == MEMBER FUNCTIONS ===============================

// -----------------------------------------------------------------------------
// CNppPsyPositioner::CNppPsyPositioner
// C++default constructor can NOT contain any code, that
// might leave.
// -----------------------------------------------------------------------------
//
CNppPsyPositioner::CNppPsyPositioner()
    {
    // Nothing to do here
    }


// -----------------------------------------------------------------------------
// CNppPsyPositioner::ConstructL
// Symbian 2nd phase constructor can leave.
// -----------------------------------------------------------------------------
//
void CNppPsyPositioner::ConstructL( TAny* aConstructionParameters )
    {
    TRACESTRING( "CNppPsyPositioner::ConstructL start" )

    // Calling BaseConstructL is required by Positioning Plug-in API.
    BaseConstructL( aConstructionParameters );
    
    // Construct requestor
    iRequester = CNppPsyRequester::NewL( *this );

    TRACESTRING( "CNppPsyPositioner::ConstructL end" )
    }


// -----------------------------------------------------------------------------
// CNppPsyPositioner::NewL
// Two - phased constructor.
// -----------------------------------------------------------------------------
//
CNppPsyPositioner* CNppPsyPositioner::NewL( TAny* aConstructionParameters )
    {
    CNppPsyPositioner* self = new( ELeave ) CNppPsyPositioner;
    
    CleanupStack::PushL( self );
    self->ConstructL( aConstructionParameters );
    CleanupStack::Pop( self );

    return self;
    }

    
// -----------------------------------------------------------------------------
// CNppPsyPositioner::~CNppPsyPositioner
// 
// -----------------------------------------------------------------------------
//
CNppPsyPositioner::~CNppPsyPositioner()
    {
    if ( iRequester )
        {
        iRequester->Cancel();
        delete iRequester;
        }

    TRACESTRING( "CNppPsyPositioner:: destructed" )
    }

// -----------------------------------------------------------------------------
// CNppPsyPositioner::StatusReportInterface
// 
// -----------------------------------------------------------------------------
//
MPositionerStatus& CNppPsyPositioner::StatusReportInterface()
    {
    return *PositionerStatus();
    }


// -----------------------------------------------------------------------------
// CNppPsyPositioner::NotifyPositionUpdate
// 
// -----------------------------------------------------------------------------
//
void CNppPsyPositioner::NotifyPositionUpdate ( 
    TPositionInfoBase& aPosInfo,  
    TRequestStatus&    aStatus )
    {
    TRACESTRING( "CNppPsyPositioner::NotifyPositionUpdate start" )

    iRequester->NotifyPositionUpdate( aPosInfo, aStatus );
        
    TRACESTRING( "CNppPsyPositioner::NotifyPositionUpdate end" )
    }


// -----------------------------------------------------------------------------
// CNppPsyPositioner::CancelNotifyPositionUpdate
// 
// -----------------------------------------------------------------------------
//
void CNppPsyPositioner::CancelNotifyPositionUpdate ()
    {
    TRACESTRING( "CNppPsyPositioner::CancelNotifyPositionUpdate start" )

    if ( iRequester )
        {
        iRequester->Cancel();
        }
        
    TRACESTRING( "CNppPsyPositioner::CancelNotifyPositionUpdate end" )
    }


//  End of File