// -----------------------------------------------------------------------------
// CSuplPsyPositioner::ConstructL
// Symbian 2nd phase constructor can leave.
// -----------------------------------------------------------------------------
//
void CSuplPsyPositioner::ConstructL( TAny* aConstructionParameters )
    {
    TRACESTRING( "CSuplPsyPositioner::ConstructL start" )
    // Calling BaseConstructL is required by Positioning Plug-in API.
    BaseConstructL( aConstructionParameters );

    // Get instance of request manager, and register to it
    iRequestManager = CSuplPsyRequestManager::RegisterL( *this );

    CRepository *repository = CRepository::NewL(KCRUidSuplPsy);

    TInt keyValue;

    TInt ret = repository->Get(KSuplPsyAllowedAccuracy, keyValue);
   
    if (ret == KErrNone)
        {            
        if (keyValue <= 0)
            {            
            TRACESTRING( "CSuplPsyPositioner::ConstructL, invalid value in the configuration " )
    	    iAllowedAccr = 0;
            }
        else		
    	    iAllowedAccr = keyValue;
        }
    else
    	iAllowedAccr = 0;

	
   	TRACESTRING2( "Allowes Accurracy...:%d", iAllowedAccr )
    delete repository;
    repository = NULL;
    TRACESTRING( "CSuplPsyPositioner::ConstructL end" )
    }
// -----------------------------------------------------------------------------
// SuplPsyGenericInfoUser::CopyHGenericInfo
// -----------------------------------------------------------------------------
//
TInt SuplPsyGenericInfoUser::CopyHGenericInfo( 
            const HPositionGenericInfo& aSrc,
            HPositionGenericInfo& aDes )
    {
    TRACESTRING( "SuplPsyGenericInfoUser::CopyHGenericInfo start" )
    TRACEHEX2( reinterpret_cast < const TUint8* >( &aSrc ), aSrc.PositionClassSize() )
    //Set position
    TPosition position;
    aSrc.GetPosition( position );
    aDes.SetPosition( position );
        
    TInt err( KErrNone );
    TInt fieldId = aDes.FirstRequestedFieldId();
    while ( fieldId != EPositionFieldNone )
        {
        TRACESTRING2( "FieldId=%d", fieldId )

        if ( aSrc.IsFieldAvailable( fieldId ) )
            {
            err = CopyField( aSrc, aDes, fieldId );
            if ( err != KErrNone )
                {
                return err;
                }
            }
        fieldId = aDes.NextRequestedFieldId( fieldId );
        }
    TRACESTRING( "SuplPsyGenericInfoUser::CopyHGenericInfo end" )
    return err;
    }
// -----------------------------------------------------------------------------
// CBTGPSFix::ResetFix
// -----------------------------------------------------------------------------
void CBTGPSFix::ResetFix()
    {
    TRACESTRING("CBTGPSFix::ResetFix start...")
    TRealX nan;
    nan.SetNaN();
    
    ResetPosition();
    
    iSpeed=nan;
    iHeading=nan;
    
    iUsedSatellitesArray.Reset();
    iSatelliteTime = TTime(0);
    
    iHorizontalDoP = nan;
    iVerticalDoP = nan;
    iPositionDoP = nan;
    iSatellitesUsed = 0;
    
    //Clear the mask
    iReceivedMsgMask = 0;
    
    iGpsMode = EGpsModeSatellite;
    TRACESTRING("CBTGPSFix::ResetFix end")
    }
// -----------------------------------------------------------------------------
// Destructor
// -----------------------------------------------------------------------------
//
CGpsPositioner::~CGpsPositioner()
    {
	TRACESTRING("CGpsPositioner::~CGpsPositioner")

	iEnvironment->UnregisterPSY(this);
	iNetRegStatus.Close();
    }
Exemple #5
0
/**
* Registers the PSY instance to the request handler
* @param aPSY pointer to the MPositioner
*/
void CPositionerQ::RegisterPSYL(MPositioner* aPSY)
    {
    TRACESTRING("CPositionerQ::RegisterPSYL start...")
    
    //Register the psy
    User::LeaveIfError(iPsyArray.Append(aPSY));
    
    TRACESTRING("CPositionerQ::RegisterPSYL end")
    }
// EPOC default constructor can leave.
void CPosDefaultPositioner::ConstructL(TAny* aConstructionParameters)
    {
    TRACESTRING( "CPosDefaultPositioner::ConstructL start... " )
    
    CProxyPositioner::BaseConstructL(aConstructionParameters);
    iRequestController = CPosRequestController::NewL(
        *this,
        ModuleSettingsManager(),
        ModuleStatusManager() );
        
    TRACESTRING( "CPosDefaultPositioner::ConstructL end " )
    }
// -----------------------------------------------------------------------------
// CBTGPSFix::ResetPosition
// 
// -----------------------------------------------------------------------------
void CBTGPSFix::ResetPosition()
    {
    TRACESTRING("CBTGPSFix::ResetPosition start...")
    TRealX nan;
    nan.SetNaN();
    
    iLatitude = nan;
    iLongitude = nan;
    iAltitude = nan;
    iTime = TTime(0);
    
    iValid = CBTGPSFix::EFixValidityUnkown;
    TRACESTRING("CBTGPSFix::ResetPosition end")
    }
Exemple #8
0
/**
* Unregisters the MPositioner instance
* @param aPSY pointer to the MPositioner
*/
void CPositionerQ::UnregisterPSY(MPositioner* aPSY)
    {
    TRACESTRING("CPositionerQ::UnregisterPSY start...")

    TInt index = KErrNotFound;
    index = Index(*aPSY);
    
    if(index!=KErrNotFound)
        {
        iPsyArray.Remove(index);
        }
        
    TRACESTRING("CPositionerQ::UnregisterPSY end")
    }
// -----------------------------------------------------------------------------
// CBTGPSFix::ParseMessage
// Fills the information available from a command to the fix
// -----------------------------------------------------------------------------
CBTGPSFix::TParsingStatus CBTGPSFix::ParseMessage(const TBTGPSNmeaParser& aParser)
    {
    TRACESTRING("CBTGPSFix::ParseMessage start...")
    TRAPD(err, ParseMessageL(aParser));
    TParsingStatus ret = EUnkown;
    switch(err)
        {
        case KErrNone:
            ret = EInfoUpdated;
            break;
        case KErrNotSupported:
            ret = EUnkown;
            break;
        default:
            ret = EInvalid;
        }
    TRACESTRING("CBTGPSFix::ParseMessage end")
    return ret;
    }
// -----------------------------------------------------------------------------
// Cnpppsysingletonhandler::GetInstanceL
// -----------------------------------------------------------------------------
//
CNppPsySingletonHandler* CNppPsySingletonHandler::GetInstanceL( 
    MPositionerStatus& aStatusInterface )
    {
    TRACESTRING( "CNppPsySingletonHandler:: GetInstanceL" )
    CNppPsySingletonHandler* self = 
        reinterpret_cast < CNppPsySingletonHandler*>( Dll::Tls() );

    if ( !self )
        {
        self = new( ELeave ) CNppPsySingletonHandler;
        CleanupStack::PushL( self );
        self->ConstructL( aStatusInterface );
        CleanupStack::Pop( self );
        Dll::SetTls( self );
        }

    self->iRefCount++;
    return self;
    }
Exemple #11
0
// -----------------------------------------------------------------------------
// CBTGPSFix::Reset
// Reset the fix parameters.
// -----------------------------------------------------------------------------
void CBTGPSFix::Reset()
    {
    TRACESTRING("CBTGPSFix::Reset")
    ResetFix();
    
    ResetGSVTime();
    
    iNumberOfSatellites = 0;
    iSatelliteArray.Reset();
    for(TInt i=0; i<KMaxGSVMessageNumber; i++)
        {
        iNMEAGSVCache[i].Zero();
        }
        
    //Reset NMEA Buffer
    if(iNmeaBuffer!=NULL)
        {
        iNmeaBuffer->ResetBuffer();
        }
    }
// -----------------------------------------------------------------------------
// CBTGPSRequestManager::HandleMessage
// -----------------------------------------------------------------------------
void CBTGPSRequestManager::HandleMessage(const TBTGPSNmeaParser& aParser)
    {
    //Add the received message to buffer
    iNmeaBuffer->AddSentences(aParser.NmeaSentence());
    //Add 0x0d 0x0a
    iNmeaBuffer->AddSentences(KBTGPSNmeaTerminator);
    
    //Parse the message
    CBTGPSFix::TParsingStatus err = iFix->ParseMessage(aParser);

    //Check if we have received a valid sentence
    if(err == CBTGPSFix::EInfoUpdated)
        {
        if(iFix->IfFullNmeaPatternReceived())
            {
            TTime gsvTime = iFix->GsvTime();
            TTime now;
            now.UniversalTime();
            TRACESTRING2("CBTGPSRequestManager:: Now time = %d", now.Int64())
            TRACESTRING2("CBTGPSRequestManager:: GSV time = %d", gsvTime.Int64())
            if(gsvTime!=0 && now.MicroSecondsFrom(gsvTime)< 
                CBTGPSRequestHandler::ConstantsManager().iSatelliteInfoLifeTime)
                {
                //GSV information is still valid, set fix as valid
                TRACESTRING("CBTGPSRequestManager:: GSV information is still valid")
                iTimer->Cancel();
                InformListeners();
                }
            else
                {
                if(!iTimer->IsActive())
                    {
                    //GSV information is not valid, start timer
                    iTimer->Start(
                        KBTGPSGsvWaitTime,
                        KBTGPSGsvWaitTime,
                        TCallBack(TimerCallback, this));
                    }
                }
            }
        }
// -----------------------------------------------------------------------------
// CSuplPsyRequestor::ConstructL
// Symbian 2nd phase constructor can leave.
// -----------------------------------------------------------------------------
//
void CSuplPsyRequestor::ConstructL()
    {
    TRACESTRING( "CSuplPsyRequestor::ConstructL start" )
    
    //Connect to SUPL server
    User::LeaveIfError( iSuplServer.Connect() );
    
    //Construct iPositionInfo;
    iPositionInfo = ConstructGenericInfoL();

    CRepository *iRepository = CRepository::NewL(KCRUidNppPsy);

    //TInt keyValue;

    TInt ret = iRepository->Get(KPSYTimeToNextFix, iTtnf);

    delete iRepository;
    iRepository = NULL;
    
    TRACESTRING( "CSuplPsyRequestor::ConstructL end" )
    }
/**
 * 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();
	}
Exemple #15
0
// -----------------------------------------------------------------------------
// CBTGPSFix::ResetGSVTime
// -----------------------------------------------------------------------------
void CBTGPSFix::ResetGSVTime()
    {
    TRACESTRING("CBTGPSFix::ResetGSVTime start...")
    iGsvTime = TTime(0);
    TRACESTRING("CBTGPSFix::ResetGSVTime end");
    }
void CGpsPositioner::SetAGPSMode()
	{
    TRACESTRING("CPositionerSubSession::GpsMode()")
	
	iAGPSMode = KAutonomousMode;
	}