diff -r 61e9400fe245 -r 0cb2248d0edc apicompatanamdw/bcdrivers/os/lbs/LocAcquisition/src/testpositioner.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/apicompatanamdw/bcdrivers/os/lbs/LocAcquisition/src/testpositioner.cpp Thu Apr 22 17:15:08 2010 +0530 @@ -0,0 +1,821 @@ +/* +* Copyright (c) 2007 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: Test Class For RPositioner +* +*/ + + +// System Includes + + +// User Includes +#include "testpositioner.h" + + +// Constant Declarations + + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// C++ Default Constructor +// --------------------------------------------------------------------------- +// +CTestPositioner::CTestPositioner(CStifLogger* aLog) + :CActive(0),iLog(aLog) + { + CActiveScheduler::Add(this); + } + +// --------------------------------------------------------------------------- +// C++ Destructor +// --------------------------------------------------------------------------- +// +CTestPositioner::~CTestPositioner() + { + if( IsActive() ) + { + Cancel(); + } + } + +// --------------------------------------------------------- +// CTestPositioner::RunL +// +// RunL to Handle Completed Request +// --------------------------------------------------------- +// +void CTestPositioner::RunL() + { + if(iStatus != KErrCancel) + { + iLog->Log(_L("RunL %d"),iStatus.Int()); + CActiveScheduler::Stop(); + } + } + +// --------------------------------------------------------- +// CTestPositioner::DoCancel +// +// To Handle Cancel Request +// --------------------------------------------------------- +// +void CTestPositioner::DoCancel() + { + switch(iState) + { + case EGetLastKnownPosition: + iPositioner.CancelRequest(EPositionerGetLastKnownPosition); + break; + case EPositionInfo: + iPositioner.CancelRequest(EPositionerNotifyPositionUpdate); + break; + } + + iState = ENone; + iLog->Log(_L("CancelL %d"),iStatus.Int()); + } + +// --------------------------------------------------------- +// CTestPositionServer::DoCancel +// +// To Cancel the Outstanding Request +// --------------------------------------------------------- +// +TInt CTestPositioner::CancelRequest() + { + TInt err = KErrNone; + switch(iState) + { + case EGetLastKnownPosition: + err = iPositioner.CancelRequest(EPositionerGetLastKnownPosition); + break; + case EPositionInfo: + err = iPositioner.CancelRequest(EPositionerNotifyPositionUpdate); + break; + } + + iState = ENone; + iLog->Log(_L("CancelL %d"),err); + + return err; + } + +// --------------------------------------------------------- +// CTestPositioner::DoCancel +// +// To Handle Error in RunL +// --------------------------------------------------------- +// +TInt CTestPositioner::RunError(TInt aError) + { + iLog->Log(_L("Leave in RunL %d"),aError); + return aError; + } + +// --------------------------------------------------------- +// CTestPositioner::Connect +// +// (other items are commented in a header). +// --------------------------------------------------------- +// +TInt CTestPositioner::Connect() + { + TInt err = iPosServer.Connect(); + if(err != KErrNone) + { + TBuf<100> msg; + msg.Copy(_L("Position server connect failed with error code :")); + msg.AppendNum(err); + iLog->Log(msg); + } + else + { + iLog->Log(_L("Position Server connect - passed")); + } + return err; + } + +// --------------------------------------------------------- +// CTestPositioner::Disconnect +// +// (other items are commented in a header). +// --------------------------------------------------------- +// +void CTestPositioner::Disconnect() + { + iPosServer.Close(); + iLog->Log(_L("Closing Position Server - passed")); + } + +// --------------------------------------------------------- +// CTestPositioner::OpenPositionerResolver +// +// (other items are commented in a header). +// --------------------------------------------------------- +// +TInt CTestPositioner::OpenPositionerResolver(RPositionServer& aPosServer, CStifItemParser& aItem ) + { + TUid PsyUid; + TUint PsyUidInInt; + + TInt err; + iPosServer = aPosServer; + + //Get the PSYUid from the Stif framework + if( aItem.GetNextInt(PsyUidInInt, EHex) != KErrNotFound ) + { + PsyUid.iUid = PsyUidInInt; + err = OpenPositionerById(iPosServer, PsyUid); + } + else + err = OpenPositioner(iPosServer); + + return err; + } + +// --------------------------------------------------------- +// CTestPositioner::OpenPositioner +// +// (other items are commented in a header). +// --------------------------------------------------------- +// +TInt CTestPositioner::OpenPositioner(RPositionServer& aPosServer) + { + TInt err; + iPosServer = aPosServer; + + err = iPositioner.Open(iPosServer); + + if(err != KErrNone) + { + TBuf<100> msg; + msg.Copy(_L("OpenPositioner failed with error code :")); + msg.AppendNum(err); + iLog->Log(msg); + } + else + { + iLog->Log(_L("OpenPositioner - passed")); + } + + return err; + } + +// --------------------------------------------------------- +// CTestPositioner::OpenPositionerById +// +// (other items are commented in a header). +// --------------------------------------------------------- +// +TInt CTestPositioner::OpenPositionerById(RPositionServer& aPosServer, const TUid aPsyUid) + { + iPosServer = aPosServer; + TInt err = iPositioner.Open(iPosServer, aPsyUid); + if(err != KErrNone) + { + TBuf<100> msg; + msg.Copy(_L("OpenPositionerByName failed with error code :")); + msg.AppendNum(err); + iLog->Log(msg); + } + else + { + iLog->Log(_L("OpenPositionerByName passed")); + } + + return err; + } + +// --------------------------------------------------------- +// CTestPositioner::OpenPositionerByCriteria +// +// (other items are commented in a header). +// --------------------------------------------------------- +// +TInt CTestPositioner::OpenPositionerByCriteria(RPositionServer& aPosServer) + { + TPositionCriteria criteria; + + iPosServer = aPosServer; + TInt err = iPositioner.Open(iPosServer, criteria); + if(err != KErrNone) + { + TBuf<100> msg; + msg.Copy(_L("OpenPositionerByCriteria failed with error code :")); + msg.AppendNum(err); + iLog->Log(msg); + } + else + { + iLog->Log(_L("OpenPositionerByCriteria passed")); + } + + return err; + } + +// --------------------------------------------------------- +// CTestPositioner::ClosePositioner +// +// (other items are commented in a header). +// --------------------------------------------------------- +// +void CTestPositioner::ClosePositioner() + { + iPositioner.Close(); + iLog->Log(_L("ClosePositioner - passed")); + } + +// --------------------------------------------------------- +// CTestPositioner::SetRequestor +// +// (other items are commented in a header). +// --------------------------------------------------------- +// +TInt CTestPositioner::SetRequestor( TInt aType, + TInt aFormat,const TDesC & aData ) + { + + CRequestorBase::_TRequestorFormat reqFormat = CRequestorBase::EFormatUnknown; + CRequestorBase::_TRequestorType reqType = CRequestorBase::ERequestorUnknown; + + switch(aType) + { + case 0: + reqType = CRequestorBase::ERequestorUnknown; + break; + case 1: + reqType = CRequestorBase::ERequestorService; + break; + case 2: + reqType = CRequestorBase::ERequestorContact; + break; + } + + switch(aFormat) + { + case 0: + reqFormat = CRequestorBase::EFormatUnknown; + break; + case 1: + reqFormat = CRequestorBase::EFormatApplication; + break; + case 2: + reqFormat = CRequestorBase::EFormatTelephone; + break; + case 3: + reqFormat = CRequestorBase::EFormatUrl; + break; + case 4: + reqFormat = CRequestorBase::EFormatMail; + break; + + } + + TInt err = iPositioner.SetRequestor(reqType,reqFormat, aData); + TBuf<100> msg; + if(err != KErrNone) + { + msg.Copy(_L("SetRequestor returned with error code :")); + msg.AppendNum(err); + iLog->Log(msg); + } + else + { + msg.Copy(_L("SetRequestor - passed")); + iLog->Log(msg); + } + + return err; + } + +// --------------------------------------------------------- +// CTestPositioner::SetRequestorStackL +// +// (other items are commented in a header). +// --------------------------------------------------------- +// +TInt CTestPositioner::SetRequestorStackL( CStifItemParser& aItem ) + { + TPtrC data; + RRequestorStack stack = RRequestorStack(); + if( aItem.GetNextString(data) != KErrNotFound ) + { + CRequestor* serviceId1 = + CRequestor::NewL(CRequestor::ERequestorService, CRequestor::EFormatApplication, + data); + + CleanupStack::PushL(serviceId1); + + stack.Append(serviceId1); + + CleanupStack::Pop(serviceId1); + + } + + TInt err = iPositioner.SetRequestor(stack); + + TBuf<100> msg; + if(err != KErrNone) + { + msg.Copy(_L("SetRequestorStack returned with error code :")); + msg.AppendNum(err); + iLog->Log(msg); + } + else + { + msg.Copy(_L("SetRequestorStack - passed")); + iLog->Log(msg); + } + + return err; + } + +// --------------------------------------------------------- +// CTestPositioner::SetUpdateOp +// +// (other items are commented in a header). +// --------------------------------------------------------- +// +TInt CTestPositioner::SetUpdateOp(TInt aInterval,TInt aTimeOut,TInt aAge) + { + TPositionUpdateOptions updateOption(aInterval,aTimeOut,aAge); + TInt err = iPositioner.SetUpdateOptions(updateOption); + TBuf<100> msg; + if(err != KErrNone) + { + msg.Copy(_L("SetUpdateOptions returned with error code :")); + msg.AppendNum(err); + iLog->Log(msg); + } + else + { + msg.Copy(_L("SetUpdateOptions - passed")); + iLog->Log(msg); + } + + return err; + } + +// --------------------------------------------------------- +// CTestPositioner::GetUpdateOp +// +// (other items are commented in a header). +// --------------------------------------------------------- +// +TInt CTestPositioner::GetUpdateOp(TInt aInterval,TInt aTimeOut,TInt aAge) + { + TPositionUpdateOptions updateOption; + TInt err = iPositioner.GetUpdateOptions(updateOption); + + TBuf<100> msg; + if(err == KErrNone && updateOption.UpdateInterval() == aInterval && + updateOption.UpdateTimeOut() == aTimeOut && + updateOption.MaxUpdateAge() == aAge ) + { + msg.Copy(_L("GetUpdateOptions passed")); + iLog->Log(msg); + } + else + { + msg.Copy(_L("GetUpdateOptions returned with error code :")); + msg.AppendNum(err); + iLog->Log(msg); + } + + return err; + + } + +// --------------------------------------------------------- +// CTestPositioner::GetLastKnownPostionResolverL +// +// (other items are commented in a header). +// --------------------------------------------------------- +// +TInt CTestPositioner::GetLastKnownPostionResolverL( CStifItemParser& aItem ) + { + TInt choice; + TInt err = KErrNone; + TPositionInfo Posinfo; + HPositionGenericInfo* Posinfo1; + + User::LeaveIfError(aItem.GetNextInt(choice)); + iState = EGetLastKnownPosition; + + switch(choice) + { + case 0: + err = GetLastKnownPostionL(&Posinfo); + break; + case 1: + Posinfo1 = HPositionGenericInfo::NewLC(); // default sizes + err = GetLastKnownPostionL(Posinfo1); + CleanupStack::PopAndDestroy(Posinfo1); + break; + case 2: + Posinfo1 = HPositionGenericInfo::NewLC(); // default sizes + TPositionFieldId fieldList1[3]; + fieldList1[0] = EPositionFieldDistrict; + fieldList1[1] = EPositionFieldNMEASentences; + fieldList1[2] = EPositionFieldNone; + + Posinfo1->SetRequestedFields(fieldList1); + err = GetLastKnownPostionL(Posinfo1); + CleanupStack::PopAndDestroy(Posinfo1); + break; + } + return err; + } + +// --------------------------------------------------------- +// CTestPositioner::GetLastKnownPostion +// +// (other items are commented in a header). +// --------------------------------------------------------- +// +TInt CTestPositioner::GetLastKnownPostionL(TPositionInfoBase *aPosInfo) + { + iPositioner.GetLastKnownPosition(*aPosInfo,iStatus); + SetActive(); + iLog->Log(_L("Started RunSession with status %d"),iStatus.Int()); + + CActiveScheduler::Start(); + + TBuf<100> msg; + if(iStatus.Int() != KErrNone) + { + msg.Copy(_L("GetLastKnownPosition returned with error code :")); + msg.AppendNum(iStatus.Int()); + iLog->Log(msg); + } + else + { + msg.Copy(_L("GetLastKnownPosition passed")); + iLog->Log(msg); + } + return iStatus.Int(); + } + +// --------------------------------------------------------- +// CTestPositioner::GetLastKnownPostionCancelResolverL +// +// (other items are commented in a header). +// --------------------------------------------------------- +// +TInt CTestPositioner::GetLastKnownPostionCancelResolverL( CStifItemParser& aItem ) + { + TInt choice; + TInt err = KErrNone; + TPositionInfo Posinfo; + HPositionGenericInfo* Posinfo1; + + User::LeaveIfError(aItem.GetNextInt(choice)); + iState = EGetLastKnownPosition; + + switch(choice) + { + case 0: + err = GetLastKnownPostionCancel(&Posinfo); + break; + case 1: + Posinfo1 = HPositionGenericInfo::NewLC(); // default sizes + err = GetLastKnownPostionCancel(Posinfo1); + CleanupStack::PopAndDestroy(Posinfo1); + break; + case 2: + Posinfo1 = HPositionGenericInfo::NewLC(); // default sizes + TPositionFieldId fieldList1[3]; + fieldList1[0] = EPositionFieldDistrict; + fieldList1[1] = EPositionFieldNMEASentences; + fieldList1[2] = EPositionFieldNone; + + Posinfo1->SetRequestedFields(fieldList1); + err = GetLastKnownPostionCancel(Posinfo1); + CleanupStack::PopAndDestroy(Posinfo1); + break; + } + return err; + } + +// --------------------------------------------------------- +// CTestPositioner::GetLastKnownPostionCancel +// +// (other items are commented in a header). +// --------------------------------------------------------- +// +TInt CTestPositioner::GetLastKnownPostionCancel(TPositionInfoBase *aPosInfo) + { + iPositioner.GetLastKnownPosition(*aPosInfo,iStatus); + SetActive(); + iLog->Log(_L("Started RunSession with status %d"),iStatus.Int()); + + iState = EGetLastKnownPosition; + Cancel(); + + iState = ENone; + TBuf<100> msg; + if(iStatus.Int() != KErrNone) + { + msg.Copy(_L("GetLastKnownPostionCancel returned with error code :")); + msg.AppendNum(iStatus.Int()); + iLog->Log(msg); + } + else + { + msg.Copy(_L("GetLastKnownPostionCancel passed")); + iLog->Log(msg); + } + return iStatus.Int(); + } + +// --------------------------------------------------------- +// CTestPositioner::GetPositionInfoResolverL +// +// (other items are commented in a header). +// --------------------------------------------------------- +// +TInt CTestPositioner::GetPositionInfoResolverL( CStifItemParser& aItem ) + { + TInt choice; + TInt err = KErrNone; + TPositionInfo Posinfo; + HPositionGenericInfo* Posinfo1; + + User::LeaveIfError(aItem.GetNextInt(choice)); + iState = EPositionInfo; + + switch(choice) + { + case 0: + err = GetPositionInfoL(&Posinfo); + break; + case 1: + Posinfo1 = HPositionGenericInfo::NewLC(); // default sizes + err = GetPositionInfoL(Posinfo1); + CleanupStack::PopAndDestroy(Posinfo1); + break; + case 2: + Posinfo1 = HPositionGenericInfo::NewLC(); // default sizes + TPositionFieldId fieldList1[3]; + fieldList1[0] = EPositionFieldDistrict; + fieldList1[1] = EPositionFieldNMEASentences; + fieldList1[2] = EPositionFieldNone; + + Posinfo1->SetRequestedFields(fieldList1); + err = GetPositionInfoL(Posinfo1); + CleanupStack::PopAndDestroy(Posinfo1); + break; + case 3: + TPositionInfo Posinfo1; + GetPositionInfoPanicDuplicate(&Posinfo1); + break; + } + return err; + } + +// --------------------------------------------------------- +// CTestPositioner::GetPositionInfoL +// +// (other items are commented in a header). +// --------------------------------------------------------- +// +TInt CTestPositioner::GetPositionInfoL( TPositionInfoBase *aPosInfo ) + { + iPositioner.NotifyPositionUpdate(*aPosInfo,iStatus); + SetActive(); + iLog->Log(_L("Started RunSession with status %d"),iStatus.Int()); + + CActiveScheduler::Start(); + + TBuf<100> msg; + if(iStatus.Int() != KErrNone) + { + msg.Copy(_L("NotifyPositionUpdate returned with error code :")); + msg.AppendNum(iStatus.Int()); + iLog->Log(msg); + } + else + { + msg.Copy(_L("NotifyPositionUpdate passed")); + iLog->Log(msg); + } + return iStatus.Int(); + + } + +// --------------------------------------------------------- +// CTestPositioner::GetPositionInfoPanicDuplicate +// +// (other items are commented in a header). +// --------------------------------------------------------- +// +void CTestPositioner::GetPositionInfoPanicDuplicate( TPositionInfoBase *aPosInfo ) + { + // Asynchronous module status + iPositioner.NotifyPositionUpdate(*aPosInfo,iStatus); + SetActive(); + TRequestStatus status; + iPositioner.NotifyPositionUpdate(*aPosInfo,status); + User::WaitForRequest(status); + + } + +// --------------------------------------------------------- +// CTestPositioner::GetPositionInfoCancelResolverL +// +// (other items are commented in a header). +// --------------------------------------------------------- +// +TInt CTestPositioner::GetPositionInfoCancelResolverL( CStifItemParser& aItem ) + { + TInt choice; + TInt err = KErrNone; + TPositionInfo Posinfo; + HPositionGenericInfo* Posinfo1; + + User::LeaveIfError(aItem.GetNextInt(choice)); + iState = EPositionInfo; + + switch(choice) + { + case 0: + err = GetPositionInfoCancelL(&Posinfo); + break; + case 1: + Posinfo1 = HPositionGenericInfo::NewLC(); // default sizes + err = GetPositionInfoCancelL(Posinfo1); + CleanupStack::PopAndDestroy(Posinfo1); + break; + case 2: + Posinfo1 = HPositionGenericInfo::NewLC(); // default sizes + TPositionFieldId fieldList1[3]; + fieldList1[0] = EPositionFieldDistrict; + fieldList1[1] = EPositionFieldNMEASentences; + fieldList1[2] = EPositionFieldNone; + + Posinfo1->SetRequestedFields(fieldList1); + err = GetPositionInfoCancelL(Posinfo1); + CleanupStack::PopAndDestroy(Posinfo1); + break; + } + return err; + } + +// --------------------------------------------------------- +// CTestPositioner::GetPositionInfoCancelL +// +// (other items are commented in a header). +// --------------------------------------------------------- +// +TInt CTestPositioner::GetPositionInfoCancelL( TPositionInfoBase *aPosInfo ) + { + iPositioner.NotifyPositionUpdate(*aPosInfo,iStatus); + SetActive(); + iLog->Log(_L("Started RunSession with status %d"),iStatus.Int()); + + iState = EPositionInfo; + Cancel(); + + iState = ENone; + TBuf<100> msg; + if(iStatus.Int() != KErrNone) + { + msg.Copy(_L("GetPositionInfoCancelL returned with error code :")); + msg.AppendNum(iStatus.Int()); + iLog->Log(msg); + } + else + { + msg.Copy(_L("GetPositionInfoCancelL passed")); + iLog->Log(msg); + } + return iStatus.Int(); + + } + + +// --------------------------------------------------------- +// CTestPositioner::ClosePosServerPanic +// +// (other items are commented in a header). +// --------------------------------------------------------- +// +void CTestPositioner::ClosePosServerPanic(TPositionInfoBase *aPosInfo) + { + iPositioner.NotifyPositionUpdate(*aPosInfo,iStatus); + SetActive(); + + iPositioner.Close(); + iLog->Log(_L("ClosePosServerPanic - passed")); + } + +// --------------------------------------------------------- +// CTestPositioner::SetRequestStateL +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CTestPositioner::SetRequestStateL( CStifItemParser& aItem ) + { + TInt state; + User::LeaveIfError(aItem.GetNextInt(state)); + if(state == 0) + iState = EGetLastKnownPosition; + else + iState = EPositionInfo; + } + +// --------------------------------------------------------- +// CTestPositioner::TestExtendedInterface +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +TInt CTestPositioner::TestExtendedInterface() + { + ExtendedInterface(0,NULL,NULL); + return KErrNone; + } + +// --------------------------------------------------------- +// CTestPositioner::DeleteLastKnownPostionCacheL +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +TInt CTestPositioner::DeleteLastKnownPostionCacheL() + { + _LIT(KCacheName,"LastKnownPos.dat"); + _LIT(KCachePath,"C:\\private\\101f97b2\\"); + RFs FsSession; + TParse name; + TInt err = KErrNone; + User::LeaveIfError(FsSession.Connect()); + FsSession.Parse(KCacheName,KCachePath,name); + if(BaflUtils::FileExists(FsSession, name.FullName())) + { + HBufC* filename = HBufC::NewL(KCachePath().Length()+KCacheName().Length()); + filename->Des().Append(KCachePath); + filename->Des().Append(KCacheName); + CleanupStack::PushL(filename); + + err = FsSession.Delete(*filename); + + CleanupStack::PopAndDestroy(filename); + } + FsSession.Close(); + return err; + } +