datasourceadaptation/gpsdatasourceadaptation/src/EPos_CPosPsyExtension.cpp
author hgs
Wed, 22 Sep 2010 13:13:20 +0100
changeset 61 a2244af7b395
parent 0 9cfd9a3ee49c
permissions -rw-r--r--
201033_06

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



// INCLUDE FILES
#include <e32base.h>
#include "EPos_CPosPsyExtension.h"
#include "EPos_MPosStatusObserver.h"

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

// Static constructor.
CPosPsyExtension::CPosPsyExtension(
    TUid aImplementationUid,
    MPosStatusObserver* aStatusObserver)
:   iImplementationUid(aImplementationUid),
    iStatusObserver(aStatusObserver)
    {
    }
    
// Destructor
CPosPsyExtension::~CPosPsyExtension()
    {
    }

// ---------------------------------------------------------
// CPosPsyExtension::ReportStatus
//
// (other items were commented in a header).
// ---------------------------------------------------------
//
void CPosPsyExtension::ReportStatus(const TPositionModuleStatus& aStatus)
    {
    // Ignore if device disabled is reported
    TPositionModuleStatus::TDeviceStatus deviceStatus = aStatus.DeviceStatus();
    if (deviceStatus == TPositionModuleStatus::EDeviceDisabled)
        {
        return;
        }

    // Check that no device status value is out of range, if so ignore the status
    if ((deviceStatus != TPositionModuleStatus::EDeviceUnknown) &&
        (deviceStatus != TPositionModuleStatus::EDeviceError) &&
        (deviceStatus != TPositionModuleStatus::EDeviceInactive) &&
        (deviceStatus != TPositionModuleStatus::EDeviceInitialising) &&
        (deviceStatus != TPositionModuleStatus::EDeviceStandBy) &&
        (deviceStatus != TPositionModuleStatus::EDeviceReady) &&
        (deviceStatus != TPositionModuleStatus::EDeviceActive))
        {
        return;
        }

    // Check that no data quality status value is out of range, if so ignore the status
    TPositionModuleStatus::TDataQualityStatus dataQualityStatus = aStatus.DataQualityStatus();
    if ((dataQualityStatus != TPositionModuleStatus::EDataQualityUnknown) &&
        (dataQualityStatus != TPositionModuleStatus::EDataQualityLoss) &&
        (dataQualityStatus != TPositionModuleStatus::EDataQualityPartial) &&
        (dataQualityStatus != TPositionModuleStatus::EDataQualityNormal))
        {
        return;
        }

    iStatusObserver->ReportStatus(iImplementationUid, aStatus);
    }

// ---------------------------------------------------------
// CPosPsyExtension::RegisterPositioner
//
// (other items were commented in a header).
// ---------------------------------------------------------
//
void CPosPsyExtension::RegisterPositioner()
    {
    iRefCount++;
    }

// ---------------------------------------------------------
// CPosPsyExtension::DeregisterPositioner
//
// (other items were commented in a header).
// ---------------------------------------------------------
//
TInt CPosPsyExtension::UnregisterPositioner()
    {
    return --iRefCount;
    }

//  End of File