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