diff -r 000000000000 -r 29b1cd4cb562 bluetooth/btlogger/btsnoophcilogger/inc/hciloggerbtsnoop.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bluetooth/btlogger/btsnoophcilogger/inc/hciloggerbtsnoop.h Fri Jan 15 08:13:17 2010 +0200 @@ -0,0 +1,115 @@ +// 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: +// + +#ifndef HCI_LOGGER_BT_SNOOP_H +#define HCI_LOGGER_BT_SNOOP_H + +#include +#include +#include +#include + +enum TBtSnoopLoggerPanicCodes + { + EBtSnoopLoggerPanicNoMyLibHandle, + EBtSnoopLoggerPanicHandleAlreadyExists, + EBtSnoopLoggerPanicRefCountTooLow, + EBtSnoopLoggerPanicHasntBeenInitialised, + EBtSnoopLoggerPanicShouldNotBeInitialised, + }; + +class TBtSnoopPacketRecord + { +public: + TUint32 iOriginalLength; + TUint32 iIncludedLength; + TUint32 iPacketFlags; + TUint32 iCumulativeDrops; + TInt64 iTimestampMicroseconds; + }; + +class CHCILoggerFileCloseTimer; +class CHCILoggerBufferedFrame; + +class CHCILoggerBtSnoop : public CBase, private MHCIFrameLogger + { +public: + IMPORT_C static MHCIFrameLogger* GetInstanceL(); + static CHCILoggerBtSnoop* NewLC(); + ~CHCILoggerBtSnoop(); + +private: + // From MHCIFrameLogger + virtual void SetLibrary(RLibrary& aLib); + virtual void GetLibrary(RLibrary& aLib); + virtual void Release(); + virtual void Initialise(TInt aType); + virtual void LogFrame(TUint aFrameFlags, const TDesC8& aDesc); + + void DoInitialise(TInt aType); + CHCILoggerBtSnoop(); + void ConstructL(); + + TInt OpenFile(); + TInt FileWriteHeader(); + void FileWriteRecord(const TBtSnoopPacketRecord& aRecord, const TDesC8& aBufferedData, const TDesC8& aNewData); + void FileWriteRecord(const TBtSnoopPacketRecord& aRecord, const TDesC8& aNewData); // overload + +private: + TInt iRefCount; + RLibrary iMyLib; + TBool iInitialised; + + RFs iFs; + RFile iLogFile; + CHCILoggerFileCloseTimer* iFileCloseTimer; + + RPointerArray iBuffers; + + TTime iCurrentTime; + TUint iDatalinkType; + TUint iCumulativeDrops; + }; + +class CHCILoggerFileCloseTimer : public CTimer + { +public: + static CHCILoggerFileCloseTimer* NewL(RFile& aLogFile); + void RunL(); + void DoCancel(); + void ResetTimer(); + ~CHCILoggerFileCloseTimer(); +private: + CHCILoggerFileCloseTimer(RFile& aLogFile); + void ConstructL(); +private: + RFile& iLogFile; + }; + +class CHCILoggerBufferedFrame : public CBase + { +public: + CHCILoggerBufferedFrame(); + ~CHCILoggerBufferedFrame(); + void BufferData(const TDesC8& aDesc); + void Reset(); + TInt OriginalLength() const; + TDesC8& Buffer() const; +private: + TInt iOriginalLength; + HBufC8* iBuffer; + }; + +#endif // HCI_LOGGER_BT_SNOOP_H