diff -r 000000000000 -r 9cfd9a3ee49c datasourceadaptation/gpsdatasourceadaptation/psytester/psytestercrtester/src/epos_cpospsycrlog.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/datasourceadaptation/gpsdatasourceadaptation/psytester/psytestercrtester/src/epos_cpospsycrlog.cpp Tue Feb 02 01:50:39 2010 +0200 @@ -0,0 +1,247 @@ +// Copyright (c) 2004-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 +#include +#include +#include + +#include "epos_cpospsycrlog.h" + +// Constant Definitions +const TUid KPosPsyInterfaceUid = {0x101f7a7c}; +const TInt KMaximumNameLength = 25; +_LIT(KPsyTesterDir, ":\\logs\\psytester\\"); + + +// Global Functions +// --------------------------------------------------------- +// ResetAndDestroy Resets and destroys the members in a RImplInfoPtrArray. This +// function can be used as a TCleanupItem. +// --------------------------------------------------------- +// +void ResetAndDestroy( + TAny* aArray) + { + ((RImplInfoPtrArray*)aArray)->ResetAndDestroy(); + } + + +// ================= MEMBER FUNCTIONS ======================= + +// C++ default constructor can NOT contain any code, that +// might leave. +// +CPosPSYCRLog::CPosPSYCRLog() + { + } + +// EPOC default constructor can leave. +void CPosPSYCRLog::ConstructL() + { + User::LeaveIfError(iFileSession.Connect()); + } + +// Two-phased constructor. +CPosPSYCRLog* CPosPSYCRLog::NewL() + { + CPosPSYCRLog* self = new (ELeave) CPosPSYCRLog; + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + +// Destructor +CPosPSYCRLog::~CPosPSYCRLog() + { + REComSession::FinalClose(); + iFileSession.Close(); + } + +// --------------------------------------------------------- +// CPosPSYLog::OpenLogL +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CPosPSYCRLog::OpenLogL(TUid aUid ) + { + // Get the name of the PSY + RImplInfoPtrArray implInfoArray; + CleanupStack::PushL(TCleanupItem(*ResetAndDestroy, &implInfoArray)); + REComSession::ListImplementationsL(KPosPsyInterfaceUid, implInfoArray); + + TInt found = 0, index; + + for (index = 0; index < implInfoArray.Count() && !found; index++) + { + found = (aUid == implInfoArray[index]->ImplementationUid()); + } + if (!found) + { + User::Leave(KErrNotFound); + } + + if(index > 0) + index --; + + TBuf psyDisplayName; + const TDesC& displayName = implInfoArray[index]->DisplayName(); + TInt copyLength = Min(displayName.Length(), KMaximumNameLength); + psyDisplayName.Copy(displayName.Left(copyLength)); + + TLex psyName(psyDisplayName); + + TBuf fileName; + + TDriveNumber cDrive; + User::LeaveIfError(BaflUtils::GetSystemDrive(cDrive)); + TChar cDriveChar; + User::LeaveIfError(RFs::DriveToChar(cDrive, cDriveChar)); + TFileName crTesterExe; + fileName.Append(cDriveChar); + fileName.Append(KPsyTesterDir); + + while (!psyName.Eos()) + { + if (psyName.Peek().IsDigit() || psyName.Peek().IsAlpha()) + { + fileName.Append(psyName.Get()); + } + else + { + psyName.Inc(); + } + } + + fileName.Append('_'); + + TLex psyUidLex(aUid.Name()); + + while (!psyUidLex.Eos()) + { + if (psyUidLex.Peek() != '[' && psyUidLex.Peek() != ']') + { + fileName.Append(psyUidLex.Get()); + } + else + { + psyUidLex.Inc(); + } + } + + _LIT(KLogExtension,".txt"); + + fileName.Append(KLogExtension); + + TInt error = iCurrentLogFile.Open(iFileSession, fileName, EFileWrite | EFileShareExclusive); + if(KErrNone != error) + { + User::LeaveIfError(error); + } + + iCurrentLogFile.Seek(ESeekEnd, iCurrentPosition); + + CleanupStack::PopAndDestroy(&implInfoArray); + + return; + } + +// --------------------------------------------------------- +// CPosPSYLog::AppendLineL +// +// (other items were commented in a header). +// --------------------------------------------------------- + +void CPosPSYCRLog::CloseLog() +{ + iCurrentLogFile.Flush(); + iCurrentLogFile.Close(); +} +// --------------------------------------------------------- +// CPosPSYLog::AppendLineL +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CPosPSYCRLog::AppendLineL( + const TDesC& aLine) + { + HBufC8* buf; + buf = HBufC8::NewLC(aLine.Length()); + TPtr8 ptr = buf->Des(); + ptr.Zero(); + ptr.Append(aLine); + iCurrentLogFile.Write(ptr); + CleanupStack::PopAndDestroy(buf); + } + +// --------------------------------------------------------- +// CPosPSYLog::AppendLineL +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CPosPSYCRLog::AppendLineL( + const TInt aNumber) + { + TBuf number; + number.AppendNum(aNumber); + AppendLineL(number); + } + +// --------------------------------------------------------- +// CPosPSYLog::AppendLineL +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CPosPSYCRLog::AppendInfoMsgL(TDesC &aMsg) +{ + AppendLineL(KInfoMessage); + AppendLineL(aMsg); + AppendLineL(KNewLine); +} + +// --------------------------------------------------------- +// CPosPSYLog::AppendLineL +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CPosPSYCRLog::AppendWarningMsgL(TDesC &aMsg) +{ + AppendLineL(KWarningMessage); + AppendLineL(aMsg); + AppendLineL(KNewLine); +} + +// --------------------------------------------------------- +// CPosPSYLog::AppendLineL +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CPosPSYCRLog::AppendErrorMsgL(TDesC &aMsg) +{ + AppendLineL(KErrorMessage); + AppendLineL(aMsg); + AppendLineL(KNewLine); +} +// End of File