datasourcemodules/gpspositioningmodule/lbsgpspsy/src/cgpspositioner.cpp
author Billy Gibson <Billy.Gibson@nokia.com>
Fri, 30 Apr 2010 12:33:30 +0100
branchLocationProfilesApi
changeset 22 a06e4186b3d5
parent 0 9cfd9a3ee49c
permissions -rw-r--r--
Initial Draft of Location Profiles API

// Copyright (c) 2008-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:
//

/**
 @file
 @InternalComponent
*/

#include <e32base.h>
#include <lbs/epos_mpositionerstatus.h>
#include <lbssatellite.h>

#include "cgpspositioner.h"
#include "gpspsy.hrh"
#include "agpspsypanic.h"
#include "cpositionerq.h"
#include "crequesthandler.h"
#include "cagpsenvironment.h"
#include "utilfunctions.h"
#include "tagpsrequestparameters.h"
#include "agpsrequestconstants.h"
#include "psylogging.h"

/*
* 
*/
CGpsPositioner::CGpsPositioner()
    {
	iState = ERequestStateInitial;
	iTerminalAssisted = EFalse;
    }

// -----------------------------------------------------------------------------
// Destructor
// -----------------------------------------------------------------------------
//
CGpsPositioner::~CGpsPositioner()
    {
	TRACESTRING("CGpsPositioner::~CGpsPositioner")

	iEnvironment->UnregisterPSY(this);
	iNetRegStatus.Close();
    }

/**
 * Creates a new instance of a CPositioner implementation.
 *
 * @param aConstructionParameters Construction parameters for CPositioner.
 * @return The positioner implementation.
 */
CGpsPositioner* CGpsPositioner::NewL(TAny* aConstructionParameters)
    {
    CGpsPositioner* self = new( ELeave ) CGpsPositioner;

    CleanupStack::PushL( self );
    self->ConstructL(aConstructionParameters);
    CleanupStack::Pop(self);

    return self;
    }

/**
 * 2nd phase constructor
 *
 * @param aConstructionParameters Construction parameters for CPositioner.
 */
void CGpsPositioner::ConstructL(TAny* aConstructionParameters)
	{
	TRACESTRING("CGpsPositioner::ConstructL")

	// Must call BaseConstructL first thing during construction.
	BaseConstructL(aConstructionParameters);

	iEnvironment = CAgpsEnvironment::NewL();
	iEnvironment->RegisterPSYL(this);
	iEnvironment->GetEnvCriteriaL(iCriteria, TUid::Uid(KPosGPSPSYImplUid));
	iInactivityTimeout = iEnvironment->GetInactivityTimeoutL(TUid::Uid(KPosGPSPSYImplUid));
	iRequestHandler = iEnvironment->GetRequestHandler();

	// Get the request timeout from the LS:
	if(iEnvironment->ProfileInUse())	// default timeout was taken from profile, so let LS know
		{
		TPositionQuality quality;
		iCriteria.GetRequiredQuality(quality);
		iTimeOutInterval = quality.TimeToFirstFix();	
		SetPsyDefaultUpdateTimeOut(iTimeOutInterval);
		}	    

	iNetRegStatus.OpenL();
	}


void CGpsPositioner::SetModuleId(TPositionInfoBase* aPosInfo)
	{
	if(aPosInfo)
		{
		aPosInfo->SetModuleId(TUid::Uid(KPosGPSPSYImplUid)); // Use the PSY module Id rather than the AGPS managers
		}
	}

void CGpsPositioner::SetAGPSMode()
	{
    TRACESTRING("CPositionerSubSession::GpsMode()")
	
	iAGPSMode = KAutonomousMode;
	}

//  End of File